我在这里发现了一些接近我的问题的东西:Storing Google Map Markers and Selecting a specific marker from it
但是,我已经认真研究了那里的代码,但我只是不太清楚如何将其实现到我的代码中。这是我所拥有的:
var t = {
name:"sdf",
lat:123,
lng:-123,
address:"asd",
link:"http://www.google.com"
};
a[0] = t;
var t = {
name:"sdf",
lat:123,
lng:-123,
address:"asd",
link:"http://www.google.com"
};
a[1] = t;
for (var i = 0; i < a.length; i++) {
var latlng = new google.maps.LatLng(a[i].lat,a[i].lng);
map.addMarker(createMarker(a[i].name,latlng,a[i].address,a[i].link));
};
此代码位于初始化函数内。
我将此代码放置在 dom 监听器之后的函数外部进行初始化:
google.maps.event.addListener(marker[[a[0]], "click",function(){
alert("worked!")
});
事实是,我需要能够选择一个特定的标记来执行与其他标记不同的操作。
我什至尝试给一个附加变量提供与[0]相同的值,就像他们在链接中所做的那样。但是将该变量放在标记括号中也不起作用。
以下是创建标记的代码:
function createMarker(name,latlng,address,link) {
var marker = new google.maps.Marker({position: latlng, map: map});
google.maps.event.addListener(marker, "click", function() {
if (infowindow) infowindow.close();
infowindow = new google.maps.InfoWindow({content:"<div class='buildingInfo'>" + name + "<br>" + "<a href='" + link + "'>" + address +"</a>" + "</div>"});
infowindow.open(map, marker);
});
return marker;
};
最佳答案
尽管我更愿意直接选择标记,但我选择了以下代码:
function createMarker(name,latlng,address,link) {
var marker = new google.maps.Marker({position: latlng, map: map});
google.maps.event.addListener(marker, "click", function() {
if(name == "name"){
alert("worked!");
}
if (infowindow) infowindow.close();
infowindow = new google.maps.InfoWindow({content:"<div class='buildingInfo'>" + name + "<br>" + "<a href='" + link + "'>" + address +"</a>" + "</div>"});
infowindow.open(map, marker);
});
return marker;
};
我认为由于标记已经有一个监听器,因此向其添加另一个监听器可能不会起作用。
关于javascript - 如何从阵列中选择特定标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29436788/