Google地图 - 在重新加载动态地图指针时保持当前位置和缩放

时间:2010-10-29 04:36:16

标签: php javascript google-maps

我一直在寻找解决这个问题的方法。我获取标记的动态位置,并在我的应用程序中选择的城市上显示定位和缩放的地图。如果我然后滚动或动物园谷歌地图,然后请求更新标记位置(通过获取xml)我松开新的位置和缩放我在。如何让函数检查当前getCenter和getZoom在重新加载地图时要使用的内容?

function load() {

 if(map) { // Does not work
  var lat = map.getCenter().lat();  
     var lng = map.getCenter().lng();
      var zoom = map.getZoom();
 } else {
  var lat = '<?=$Lat?>';
  var lng = '<?=$Lon?>';
  var zoom = <?=$zoom?>;
 }
 var map_options = {
  center: new google.maps.LatLng(lat,lng),
  zoom: zoom,
  mapTypeId: '<?=$map_type?>'
 };

 var map = new google.maps.Map(document.getElementById("map"), map_options);
 var infoWindow = new google.maps.InfoWindow;

    << Other marker creating code here that works fine >>

}

1 个答案:

答案 0 :(得分:1)

删除var?使lat,lng,zoom全局变量

if(map) { // Does not work
  lat = map.getCenter().lat();  
  lng = map.getCenter().lng();
  zoom = map.getZoom();
 } else {
  lat = '<?=$Lat?>';
  lng = '<?=$Lon?>';
  zoom = <?=$zoom?>;
 }

UPDATE 将var map移到function load() {}之外 像这样的东西:

var map, lat, lng, zoom;
function load(){...map = new google.maps.Map(document.getElementById("map"), map_options);

...}

让我稍后解释一下

  1. 当页面被加载时,var map被启动为“nothing / null”,因此如果(map)将为false则 使用你的PHP中的lat,lng,zoom

  2. map = new google.maps.Map(document.getElementById("map"), map_options);之后,地图持有者js gmap的对象。

  3. 然后再次调用load(){...} if(map)为真 块将被执行