我有一个谷歌地图,只需双击地图就会打开一个对话框。如果用户单击“确定”,则会在地图上添加标记。此标记将在第一次单击时打开信息窗口(良好行为)。
代码的另一部分将在页面加载时直接显示带有信息窗口的标记,这些标记在第一次单击时不会打开信息窗口(不良行为)。
指针将在第一次点击时从指针变为手指,然后在第二次点击时指针将会打开。以下显示加载时的商店:
//display the markers
for(var i = 0; i < stores.length; i++) {
var pos = new google.maps.LatLng(stores[i][8], stores[i][9]);
all_stores_markers.push( new google.maps.Marker({
position: pos,
map: map,
title: stores[i][1],
clickable: true
}));
all_stores_markers[i].html = 'some content';
google.maps.event.addListener(all_stores_markers[i], 'click', function () {
// where I have added .html to the marker object.
infowindow.setContent(this.html);
infowindow.open(map, this);
console.log("click marker");
});
}
此部分是用户在双击地图后在对话框中单击“确定”。以下内容将使标记从第一次单击中可点击:
all_stores_markers.push( new google.maps.Marker({
position: location,
map: map,
clickable: true
}));
all_stores_markers[all_stores_markers.length-1].html = 'some content';
google.maps.event.addListener(all_stores_markers[all_stores_markers.length-1], 'click', function() {
infowindow.setContent(this.html);
infowindow.open(map, this);
});
以下是商店的内容:
array(2) { [0]=> array(12) { [0]=> string(1) "1" [1]=> string(8) "aaaaaaaa" [2]=> string(15) "fjefjdoiajfdhai" [3]=> string(13) "jadoidjasoijd" [4]=> string(4) "7575" [5]=> string(10) "City folle" [6]=> string(9) "Australia" [7]=> string(13) "http://go.com" [8]=> string(8) "-20.0559" [9]=> string(7) "135.967" [10]=> string(10) "1818181818" [11]=> string(10) "1818181818" } [1]=> array(12) { [0]=> string(1) "2" [1]=> string(8) "New Shop" [2]=> string(11) "adjakdjakld" [3]=> string(6) "eqwewq" [4]=> string(4) "4343" [5]=> string(4) "Arff" [6]=> string(9) "Australia" [7]=> string(15) "http://test.com" [8]=> string(8) "-28.9985" [9]=> string(6) "123.75" [10]=> string(8) "92129181" [11]=> string(8) "82828282" } }
我看不出两部分代码之间有太大区别。有什么想法吗?
答案 0 :(得分:2)
很抱歉提出这个问题,但我找到了解决方案。
由于一些非常奇怪的原因,代码的差异在于标记的“title”属性。我删除了它,现在一切都很好。
我无法解释为什么这会对点击产生影响......