2012-02-25 7 views
0

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

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

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

ответ

2

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

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

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

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

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

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

4

Используйте этот класс в вашем проекте, чтобы получить расстояние между двумя местами Вы можете получить 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 вы хотите для использования, т.е. Матрица расстояний, направления, геокодирование и т. Д. Примечание: «/ direction /» Я нашел маршруты как самые полные 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"); 

для например:

Структура внутри Directions JSON файл является:

-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 
Смежные вопросы