为什么谷歌地图JavaScript在我第二次点击地图时没有正确显示?
我正在使用GoogleMapsJavaScriptAPIv3在我的web应用程序中显示地图上的位置。在我的html中,我有:为什么谷歌地图JavaScript在我第二次点击地图时没有正确显示?,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我正在使用GoogleMapsJavaScriptAPIv3在我的web应用程序中显示地图上的位置。在我的html中,我有: 这就是我在jquerymainpage.js中单击更新按钮时制作地图的方式: $('updatebtn')。解除绑定(“单击”); $('#updatebtn').bind('click',function(){ var keystring=$('#key').text(); $.ajax({ 键入:“POST”, 网址:'http://localhost:8888/
这就是我在jquerymainpage.js
中单击更新按钮时制作地图的方式:
$('updatebtn')。解除绑定(“单击”);
$('#updatebtn').bind('click',function(){
var keystring=$('#key').text();
$.ajax({
键入:“POST”,
网址:'http://localhost:8888/jsgooglemaps',
数据:{keystr:keystring},
成功:功能(结果){
var obj=jQuery.parseJSON(结果);
var centerLatLng=新的google.maps.LatLng(obj.centerLat,
obj.centerLong);
变量myOptions={
中心:中心板条,
缩放:17,
mapTypeId:google.maps.mapTypeId.ROADMAP,
德拉格布尔:是的
};
var map=new google.maps.map(
document.getElementById(“map\u canvas\u 1”),
肌肽);
var Markerary=对象位置;
对于(var i=0;i我正在从ajax成功代码中创建map_convas_1 div,并在更新完成时将其删除。然后每当用户单击更新按钮时再次创建它。它工作正常。您不想重复创建map的新实例,因为存在一个已知的错误,它会阻止以前map实例的内存被占用正在收集垃圾。查看此问题、讨论和结果答案:
在对该问题的回答中,有一个链接指向谷歌地图团队的Chris Broadfoot和Luke Mahe在谷歌地图办公时间会议上展示的视频,他们解释说,他们不支持涉及重复创建地图实例的用例。您最好保留地图的单个实例并重用sa在用户的整个会话中,我都会映射。非常感谢,您的“从div中删除代码”选项对我很有效,我的问题是第二次它不起作用,如果我调整屏幕大小,它会起作用,但这不是用户调整屏幕大小以查看映射的自然方式
我使用Jquery删除div代码。在我的例子中,我使用Jquery对话框,然后当我关闭对话框时,我将用原始div代码替换div(googlemaps显示地图的地方)中的html
我原来的div代码是
<div id="mapaLocalsub" style="width:500px; height:450px; " ></div>
我注意到google maps工作后,它用很多东西和样式填充div,然后在Jquery.dialog中的close函数中,我用原始div代码替换html:
$( "#mapaLocal" ).dialog({
height: 450,
width: 500,
modal: true,
close: function() {
$( "#mapaLocal" ).html("<div id=\"mapaLocalsub\" style=\"width:500px; height:450px; \" ></div>");
}
});
$(“#mapaLocal”)。对话框({
身高:450,
宽度:500,
莫代尔:是的,
关闭:函数(){
$(“#mapaLocal”).html(“”);
}
});
但是,当然,您可以在关闭函数时或创建地图之前调用的函数中使用Jquery html方法,希望能有所帮助
$( "#mapaLocal" ).html("<div id=\"mapaLocalsub\" style=\"width:500px; height:450px; \" ></div>");
$(“#mapaLocal”).html(“”);
您真的需要在每次单击按钮时初始化地图吗?我正在更新位置。我是否应该只初始化地图一次,然后在地图上放置标记。这是您的意思吗?用户可以有不同的位置。当地图的中心点每次都会更改时,我如何初始化地图?是的。再次初始化地图并添加标记增益是多余的。如果您需要在更新后删除以前添加的标记,可以使用此方法marker.setMap(null)
。我还注意到您添加了draggable:true
。因此,您可能还需要检查是否存在导致问题的CSS代码。如果我在文档开始时初始化映射一次。那么即使在第一次单击时,它也不会显示正确的映射:(好的,尝试在脚本的最开始声明map
变量,比如var-map;
。然后在ajax成功代码中丢失'var-map=new google.maps.map(…'),只需使用map=new google.maps.map(…
@Pisceam请显示您的代码,我也遇到过同样的问题。)