Полные координаты по улицам с Google Maps - PullRequest
0 голосов
/ 30 апреля 2010

Если вы идете сюда: http://econym.org.uk/gmap/snap.htm, есть несколько примеров того, что я пытаюсь сделать. Я хочу, чтобы пользователь ввел маршрут в виджете карт Google, а затем попросил карту нарисовать маршрут вдоль дорог. Затем пользователь нажимает кнопку «отправить», и его маршрут отправляется обратно на сервер, где он будет храниться в базе данных.

img

Вместо того, чтобы отправлять обратно только красные вершины, я хочу отправить всю информацию, которая составляет фиолетовые линии. Возможно ли это?

1 Ответ

2 голосов
/ 30 апреля 2010

Фиолетовые линии - это полилинии, которые хранятся в виде массива в DOM. Вы можете отправить их информацию на свой сервер.

На этой странице после нажатия на карту появляются триггеры событий javascript следующим образом:

var firstpoint = true;
var gmarkers = [];
var gpolys = [];
var dist = 0;

GEvent.addListener(dirn,"load", function() {
    // snap to last vertex in the polyline
    var n = dirn.getPolyline().getVertexCount();
    var p=dirn.getPolyline().getVertex(n-1);
    var marker=new GMarker(p);
    map.addOverlay(marker);
    // store the details
    gmarkers.push(marker);
    if (!firstpoint) {
      map.addOverlay(dirn.getPolyline());
      gpolys.push(dirn.getPolyline());
      dist += dirn.getPolyline().Distance();
      document.getElementById("distance").innerHTML="Path length: "+(dist/1000).toFixed(2)+" km. "+(dist/1609.344).toFixed(2)+" miles.";
    }
    firstpoint = false;
  });

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

Как я уже говорил ранее, эти полилинии хранятся в массиве gpolys . Также известно, что все вершины или GMarkers также хранятся в массиве gmarkers .

...