Центрировать Google Map на точке из базы данных? - PullRequest
1 голос
/ 11 мая 2010

Я пытаюсь центрировать карту Google на одном маркере, извлеченном из базы данных. До сих пор я использую эту функцию для получения одного маркера из базы данных

function getMarkers(){
        var urlstr="readsingle.php?v=<?php echo $cam ?>";
        var request = GXmlHttp.create();
        request.open('GET', urlstr , true); // request XML from PHP with AJAX call
        request.onreadystatechange = function () {
            if (request.readyState == 4) { // 4 is a completed request
                var xmlDoc = request.responseXML;
                locations = xmlDoc.documentElement.getElementsByTagName("location");
                markers = [];
                if (locations.length){
                    for (var i = 0; i < locations.length; i++) { // cycle thru locations
                        markers[i] = new GMarker(new GLatLng(locations[i].getAttribute("lat"),locations[i].getAttribute("lng")));
                        markers[i].infowindow = "This is "+locations[i].getAttribute("name");
                        markers[i].markerindex = i;
                        markers[i].db_id = locations[i].getAttribute("location_id");
                        map.addOverlay(markers[i]);

                    }
                }
            }
        }

        request.send(null);

    }

иэта функция для загрузки карты

    function onLoad() {
      map = new GMap(document.getElementById("div_map"));
      map.addControl(new GSmallMapControl());
      map.addControl(new GMapTypeControl());
      map.setCenter(new GLatLng(53.76221, -2.71227), 8);
      map.enableScrollWheelZoom();
      getMarkers();
      GEvent.addListener(map, "click", function(overlay, point) {
          if (overlay){ // marker clicked
              overlay.openInfoWindowHtml(overlay.infowindow);   // open InfoWindow
          } else if (point) {   // background clicked

          }
      });
    }

Как я могу изменить значения Lat Lng в этой строке

map.setCenter(new GLatLng(53.76, -2.71), 5); 

, чтобы соответствовать значениям lat lng от одного маркера?или есть более простой способ вытащить один маркер из базы данных и центрировать карту на нем?

1 Ответ

1 голос
/ 11 мая 2010

Если getMarkers() получает только один маркер, похоже, вы можете просто добавить:

map.setCenter(new GLatLng(locations[i].getAttribute("lat"), 
                          locations[i].getAttribute("lng")), 5);

После или до добавления маркера на карту:

map.addOverlay(markers[i]);
...