我一直在寻找解决这个问题的方法。我获取标记的动态位置,并在我的应用程序中选择的城市上显示定位和缩放的地图。如果我然后滚动或动物园谷歌地图,然后请求更新标记位置(通过获取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 >>
}
答案 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);
...}
让我稍后解释一下
当页面被加载时,var map被启动为“nothing / null”,因此如果(map)将为false则 使用你的PHP中的lat,lng,zoom
在map = new
google.maps.Map(document.getElementById("map"),
map_options);
之后,地图持有者js
gmap的对象。
if(map)
为真
块将被执行