【发布时间】:2012-05-29 18:15:30
【问题描述】:
我正在使用 Google Maps JavaScript API v3 在我的网络应用程序中的地图上显示位置。在我的 html 中,我有:
<script src="jquery-mainpage.js"></script>
<script type="text/javascript"
src="http://maps.googleapis.com/maps/api/js?key=AIzaSyB4LCwxrO5EzHnAQXCkP9fjREUEhOPCol4&sensor=false">
</script>
这就是我在jquery-mainpage.js 中单击更新按钮时制作地图的方式:
$('#updatebtn').unbind("click");
$('#updatebtn').bind('click', function(){
var keystring = $('#key').text();
$.ajax({
type: 'POST',
url: 'http://localhost:8888/jsgooglemaps',
data: {keystr: keystring},
success: function(result) {
var obj = jQuery.parseJSON(result);
var centerLatLng = new google.maps.LatLng(obj.centerLat,
obj.centerLong);
var myOptions = {
center: centerLatLng,
zoom: 17,
mapTypeId: google.maps.MapTypeId.ROADMAP,
draggable: true
};
var map = new google.maps.Map(
document.getElementById("map_canvas_1"),
myOptions);
var markerArray = obj.locations;
for(var i=0;i<markerArray.length;i++){
var myLatlng = new google.maps.LatLng(
markerArray[i].latitude,
markerArray[i].longitude);
var marker = new google.maps.Marker({
clickable: true,
position: myLatlng,
map: map,
zIndex: i
});
google.maps.event.addListener(marker, "click", function() {
var tempLatLng = new google.maps.LatLng(0, 0);
this.setVisible(false);
this.setPosition(tempLatLng);
var j = this.getZIndex();
markerArray[j].latitude = 0;
markerArray[j].longitude = 0;
});
}
}
});
});
第一次点击它显示一切正确。但是当我再次单击更新按钮时,它不会正确显示地图。我附上两个屏幕截图。谁能告诉我为什么会这样。提前致谢。 首次点击地图
当我再次点击更新按钮时的地图
【问题讨论】:
-
真的每次点击按钮都需要初始化地图吗?
-
我正在更新位置。我应该只初始化一次地图,然后在上面放置标记。你是这个意思吗?一个用户可以有不同的位置。每次更改中心点时如何初始化地图?
-
是的。一次又一次地初始化地图将是多余的。如果您需要在更新后删除之前添加的标记,您可以使用此方法
marker.setMap(null)。我还注意到您添加了draggable: true。所以你可能还需要检查是否有导致问题的 CSS 代码。 -
如果我在文档开头初始化地图一次。然后即使第一次点击它也不会显示正确的地图:(
-
好的,尝试在脚本的开头声明
map变量,例如var map;。并从 ajax 成功代码中丢失 'var map = new google.maps.Map(...',只需使用map = new google.maps.Map(...。
标签: javascript google-maps google-maps-api-3