在gmap3谷歌地图库中,我正在尝试创建一个使用infowindow制作标记的函数。
http://gmap3.net/api-infowindow.html
function addMarker(map, marker, content) {
map.marker(marker)
.infowindow({
'content' : content
})
.then(function (infowindow) {
var map = this.get(0);
var marker = this.get(1); // <---- this gets the first marker on both times I call addMarker, i.e. uluru
marker.addListener('click', function(event, data) {
infowindow.open(map, this);
});
});
}
$(document).ready(function() {
var uluru = {lat: -25.363, lng: 131.044};
var map = $('#map')
.gmap3({
zoom: 4,
center: uluru
});
addMarker(map, {
position: uluru
}, "text");
addMarker(map, {
position: {lat: 48.8620722, lng: 2.352047}
}, "text2");
});
这就是我所拥有的,但问题是,在顶部,我试图获得一个标记(我在代码中添加注释),它似乎引用了错误的标记。我称它为两次,它引用了我制作的第一个标记。因此,如果我单击地图上的第一个标记,我会在该标记上显示两个信息。
有谁知道什么是错的?
由于
答案 0 :(得分:0)
“get”函数从头开始检索链式结果,索引永远不会改变。
使用“then”
将其本地存储在您的函数中function addMarker(map, marker, content) {
var gmMarker;
map
.marker(marker)
.then(function (m) {
gmMarker = m;
})
.infowindow({
'content' : content
})
.then(function (infowindow) {
var map = this.get(0);
gmMarker.addListener('click', function(event, data) {
infowindow.open(map, this);
});
});
}