Разбор Json для отображения полилинии / маркеров с Google Maps v3 - PullRequest
1 голос
/ 21 июня 2010

Я использую Jquery getJson () для создания JSON, который будет отображаться на Google Maps 3 API. Я хотел бы отобразить линию поли согласно: простой пример полилинии

 function initialize() {
    var myLatLng = new google.maps.LatLng(0, -180);
    var myOptions = {
      zoom: 3,
      center: myLatLng,
      mapTypeId: google.maps.MapTypeId.TERRAIN
    };

    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    var flightPlanCoordinates = [
        new google.maps.LatLng(37.772323, -122.214897),
        new google.maps.LatLng(21.291982, -157.821856),
        new google.maps.LatLng(-18.142599, 178.431),
        new google.maps.LatLng(-27.46758, 153.027892)
    ];
    var flightPath = new google.maps.Polyline({
      path: flightPlanCoordinates,
      strokeColor: "#FF0000",
      strokeOpacity: 1.0,
      strokeWeight: 2
    });

   flightPath.setMap(map);
  }

JQuery:

$.getJSON("routefinder", { "lat1": lat1 , "lng1": lng1 , "lat2": lat2 , "lng2": lng2 }, function(json) {
    var poly = new google.maps.Polyline({
      path: json,
      strokeColor: "#FF0000",
      strokeOpacity: 1.0,
      strokeWeight: 2
    });

   poly.setMap(map);
});

$ .getJSON возвращает строку с координатами полилинии в формате [new google.maps.LatLng (lat, lng)]:

 [ new google.maps.LatLng(53.369567, -6.323699),  new google.maps.LatLng(53.367705, -6.317386),new google.maps.LatLng(53.337705,-6.917386), new google.maps.LatLng(53.397705,-6.47386)]

Но строка не генерируется. Могу ли я вернуть массив json, содержащий объекты google.maps.LatLng? Или как лучше всего отобразить ломаную линию.

1 Ответ

2 голосов
/ 21 июня 2010

У меня есть что-то похожее на моем сайте (http://www.cyclistsroadmap.com) для поиска маршрута.

Если вы используете указатель маршрута Googles, вы можете использовать объект DirectionsObject, который возвращается. Когда я использую данные, которые я храню в базе данных, я просто отправляю их обратно в виде двумерного массива, содержащего все координаты широты и долготы. (Я просто делаю обычный вызов AJAX, но не вызов $ .getJSON. AJAX возвращает строку JSON.

...