можно выделить участок улицы? - PullRequest
0 голосов
/ 08 октября 2011

Мне нужно выделить участок улицы между двумя перекрестками.Я нашел похожий вопрос, который был задан более года назад (см. здесь ), в котором говорится, что Google, Bing и т. Д. Не предоставляют данные улиц через свои API.Кто-нибудь знает, изменилось ли что-нибудь в API, и могу ли я сейчас получить данные о широте / долготе местоположения улицы?

1 Ответ

0 голосов
/ 11 октября 2011

Я сделал это в API V2, но это не должно быть трудно переписать его для V3.

Загляните на этот веб-сайт http://www.fvs.de/anfahrt.php (на немецком языке) и нажмите «Weg in Karte zeigen» кнопки («показать путь на карте») в разделах под картой. Каждая кнопка выделяет другую линию улицы на карте.

В основном это делается с помощью объекта «Направления» Карт Google для построения маршрута между двумя произвольными точками улицы на карте (например, двумя вашими перекрестками). Точки должны быть закодированы с их координатами LatLng. Вот пример кода (как уже говорилось, это API V2):

function initMap() {  // called by page onload event
  if (GBrowserIsCompatible()) {
    // Display the map, with some controls and set the initial location 
    gMap = new GMap2(document.getElementById("map_canvas"));
    gMap.addControl(new GLargeMapControl());
    // ...
    gMap.setCenter(GLatLng(49.238326, 6.977761), 15);

    // init directions object and attach listener to handle route loads from function highliteRoute()
    gDir = new GDirections();
    gPoly = null;
    GEvent.addListener(gDir, 'load', function(){
      gPoly = gDir.getPolyline();
      gMap.addOverlay(gPoly);

      // zoom & pan to poly        
      var polyBds  = gPoly.getBounds();
      var polyZoom = gMap.getBoundsZoomLevel(polyBds);
      gMap.setZoom(polyZoom);
      gMap.panTo(polyBds.getCenter());
    });
  }
}

function highliteRoute(){
  if(gPoly!=null)  gPoly.hide();
  gDir.load('from: 49.313530,6.969109 to: 49.238326,6.977761', {getPolyline:true});
}
...