有没有一种方法来确定哪些谷歌地图标记已被点击?
-
21-08-2019 - |
题
以下代码循环json对象到的位置标记在谷歌地图。其工作的罚款。
function displayMarkers(data){
for(var i = 0; i < data.Lat.length; i++){
var point = new GLatLng(data.Lat[i],data.Lng[i]);
marker = new GMarker(point);
map.addOverlay(marker);
// here's the problem
GEvent.addListener(marker, "click", function(){
alert(data.Name[i]);
});
}
}
问题是,每一个标记一直响应上次的价值"i"。我试图找出一种方法来鉴别标记,已经被点击以某种方式获得正确的信息,从数据的对象。
我想创建一系列标记在建立循环基于标记的位置,但是这感觉真的效率低下给我。
任何帮助,一如既往,不胜感激。
解决方案
在单击事件经过地图三个不同的元素。
GEvent.addListener(map, "click", function(overlay, latlng, overlaylatlng) {
// overlay = GOverlay or null
// latlng = GLatLng
// overlaylatlng = GLatLng or null
});
如果用户没有上的覆盖,“覆盖”和“overlaylatlng”点击将是空的。
更新:您必须将监听器添加到,如果你想获得一个GOverlay出来的地图(未标记)。该单击事件的的GMarker 只返回的GLatLng
其他提示
地图上支持一个精事件,其中通过索引的标记其所选择的,请参阅 此 例如:
看来,上述解决方案只返回标记,不解决我的问题的坐标。也许我做错了什么。
然而,我的方式解决了它是简单地将属性添加到这样的标记物 <击> 撞击>
<击>function createMarker(latlng,name) {
var marker = new GMarker(latlng);
// HERE WE GO
marker.value = name;
GEvent.addListener(marker,"click", function() {
addToList(this.value);
});
return marker;
}
击> <击> 撞击> 的更新:该aboves解决它的一种方式,但更简单的方法是如在注释中提到的事件附加到地图强>
GEvent.addListener(map, "click", function(marker, point){
alert(marker);
});
简单馅饼。
GEvent.addListener(marker, "click", function(o){
alert(o);
});
不隶属于 StackOverflow