Интеграция с Google Map, получите измеренное расстояние - PullRequest
0 голосов
/ 26 февраля 2012

Здравствуйте! Я нахожусь в процессе разработки запущенного журнала в WinForms. Я хотел бы знать, есть ли у кого-нибудь хорошие ресурсы для интеграции с Google Картами. Конечная цель - сделать так, чтобы пользователь дважды щелкнул ячейку в столбце «Расстояние», и он откроет новую форму. В новой форме будет карта Google, на которой пользователь сможет проследить свой маршрут, используя инструмент измерения расстояния Google. Принятие этого маршрута приведет к закрытию окна и введению расстояния (мили) отслеживаемого маршрута в ячейку.

Я совершенно новичок в интеграции с Google Maps, если это действительно возможно с приложением C #. Пожалуйста, укажите мне правильное направление, где я могу найти пример кода для достижения моей цели.

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 28 февраля 2014

Используйте этот класс в своем проекте, чтобы получить расстояние между двумя местами. Вы можете получить Newtonsoft.Json.Linq из https://www.nuget.org/packages/newtonsoft.json/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json.Linq;

namespace Management
{
    class DeliveryMapInfo
    {
    string origin = @""; //Write the address of the origin here
    public DeliveryMapInfo() { }
    public int getDistanceTo(string destination)
    {
        System.Threading.Thread.Sleep(1000);
        int distance = -1;
        string url = "http://maps.googleapis.com/maps/api/directions/json?origin=" + origin + "&destination=" + destination + "&sensor=false";
        string requesturl = url;string content = fileGetJSON(requesturl);
        JObject _Jobj = JObject.Parse(content);
        try
        {
            distance = (int)_Jobj.SelectToken("routes[0].legs[0].distance.value");
            return distance / 1000;// Distance in KMS
        }
        catch
        {
            return distance / 1000;
        }
    }
    protected string fileGetJSON(string fileName)
    {
        string _sData = string.Empty;
        string me = string.Empty;
        try
        {
            if (fileName.ToLower().IndexOf("http:") > -1)
            {
                System.Net.WebClient wc = new System.Net.WebClient();
                byte[] response = wc.DownloadData(fileName);
                _sData = System.Text.Encoding.ASCII.GetString(response);

            }
            else
            {
                System.IO.StreamReader sr = new System.IO.StreamReader(fileName);
                _sData = sr.ReadToEnd();
                sr.Close();
            }
        }
        catch { _sData = "unable to connect to server "; }
        return _sData;
    }
}

}

Многое зависит от вашей идеикакой API вы хотите использовать, т.е.Матрица расстояний, Направления, Геокодирование и т. Д. Примечание: "/ directions /" Я нашел направления как наиболее полный API для моего использования, так как он может геокодировать, находить расстояние, определять продолжительность ... и т. Д. Однако размер направлений JSONФайл больше, чем другие файлы JSON.Используйте свое суждение.

string url = "http://maps.googleapis.com/maps/api/directions/json?origin=" + origin + "&destination=" + destination + "&sensor=false";

и

distance = (int)_Jobj.SelectToken("routes[0].legs[0].distance.value");

, например:

Структура внутри JSON-файла Directions:

-Routes

    - Bound
        - NorthEast
        - SouthWest
    - Copyrights
    - Legs
        - Steps
            - duration
            - distance
            - endlocation
            - maneuver
            - htmlinstructions
            - polyline
            - startlocation
            - travelmode
        - Distance
            - text
            - value
        - Duration
            - text
            - value
        - StartAddress
        - EndAddress
        - EndLocation
            - lat
            - lng
        - StartLocation
            - lat
            - lng
    - Overview Polyline
    - Summary
    - Warnings
    - Waypoint Order

- Status
2 голосов
/ 28 февраля 2012

Вам нужно будет использовать API Google Maps. К счастью, это довольно просто и использует JSON, который хорошо поддерживается.

Посмотрите на: http://code.google.com/apis/maps/documentation/distancematrix/

К сожалению, Google выберет лучший маршрут между двумя введенными вами точками, что не очень полезно, если вы не пробежали самый быстрый маршрут.

Чтобы бороться с этим, посмотрите здесь: http://code.google.com/apis/maps/documentation/directions/

Это позволяет вам добавлять путевые точки и, следовательно, возможно, более полезно, но вам, вероятно, понадобится пользователь, чтобы создавать эти путевые точки самостоятельно.

Последнее, что следует помнить, - это то, что, если вы ожидаете получить большое количество запросов, Google теперь взимает с разработчиков плату за использование этих сервисов. Как некоммерческий пользователь, вы ограничены 2500 запросами в день, максимум 8 путевыми точками на запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...