本质上,我想让用户打开一个地图,创建一个在信息窗口中具有融合表表单的标记,并让用户提交表单,然后关闭标记。
我正在处理的第一个问题是,在"点击"事件期间,似乎创建了 2 个标记/信息窗口。 (可以拖动顶部市场,看看它下面还有另一个市场。 我不知道为什么。
但更大的问题是我不确定如何关闭用户创建的现有标记/信息窗口。
以下是我如何向地图添加标记的代码:
// click listenrer that places a marker
google.maps.event.addListener(map, 'click', function(event) {
placeMarker(event.latLng);
});
function placeMarker(location) {
var newmarker = new google.maps.Marker({
position: location,
draggable: true,
map: map,
});
var infowindow2 = new google.maps.InfoWindow({
content: '<iframe width=500 height=300 scrolling=yes frameborder=no src=https://docs.google.com/spreadsheet/embeddedform?formkey=dGdMZjg1T2duck55UjVHNGx2MHRlN0E6MQ&entry_0=Test1&entry_1='+ location.lat() +','+ location.lng() +'&entry_2=test3%22></iframe>'
});
infowindow2.open(map,newmarker);
}
以下是无法清除标记的代码:
// doesn't seem to work...
//I thought this is all that is needed for a market to disappear. Neither setMap(null) or setVisible(false) works. It doesn't appear that this listener is even triggered upon a double click.
google.maps.event.addListener(marker, "dblclick", function() {
newmarker.setMap(null);
marker.setVisible(false);
});
我使用了一个"dblclick"侦听器来测试使用两个"点击"侦听器是否是问题所在。 但据我所知,双击也没有任何反应。
对此的任何帮助或指导将不胜感激。
在此处输入链接说明
您的代码确实存在多个问题,解决您指出的问题还不够,但这是您的问题:
您的"dblclick"事件仅被添加到未定义的值"标记"中。 "dblclick"侦听器应该移动到你的 placeMarker 函数中,它应该被更改为如下所示:
google.maps.event.addListener(newmarker, "dblclick", function() {
alert('I clicked the map.');
this.setMap(null);
this.setVisible(false);
});
编辑:
还有一个问题是,如果您单击地图一次,则会创建两个标记。 因此,即使进行了上述修复,您仍然必须双击两次才能删除标记。 这是因为您的初始化函数被调用了两次:一次来自body-onload,一次来自谷歌地图domEvent的窗口加载。
这是一个修复了这两个问题的 jsfiddle:
http://jsfiddle.net/vdmmJ/