Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么谷歌地图JavaScript在我第二次点击地图时没有正确显示?_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

为什么谷歌地图JavaScript在我第二次点击地图时没有正确显示?

为什么谷歌地图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/

我正在使用GoogleMapsJavaScriptAPIv3在我的web应用程序中显示地图上的位置。在我的html中,我有:


这就是我在
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请显示您的代码,我也遇到过同样的问题。)