我知道我的问题可能看似重复,但事实并非如此。有不同的方法来做它我喜欢我的代码...我的代码主要工作,我只想找出infowindow内容部分。,而不是重写它。
我正在循环查看商家列表并在地图上绘制标记。一切正常,直到我添加infowindow,点击打开。虽然我能够在正确的点旁边打开它,但内部的值始终属于最新的地图标记。我该如何解决这个问题?
for (var i = 0; i < restaurants.length; i++) {
var restaurant = restaurants[i];
var customlabl = (restaurant[5] != 0 ? "$"+restaurant[5] : false );
var customtitl = (restaurant[5] != 0 ? restaurant[0]+" -- "+restaurant[5] : restaurant[0]);
var infowindow = new google.maps.InfoWindow({
content: customtitl
});
var marker = new google.maps.Marker({
position: {
lat: restaurant[1],
lng: restaurant[2]
},
map: map,
title: customtitl,
label: customlabl
});
marker.addListener("click", function() {
infowindow.open(map, this);
});
bounds.extend(marker.getPosition());
}
map.fitBounds(bounds);
在上面的代码中,我能够正确打开infowindow。所以,我现在修改它以从标记中选择标签或标题到内容。
marker.addListener("click", function() {
var infowindow = new google.maps.InfoWindow();
infowindow.content(title, this);
infowindow.open(map, this);
});
由于某种原因,这会破坏功能,并且信息不会再打开。有什么遗漏?
答案 0 :(得分:1)
内容未在google.maps.InfoWindow中定义,但在InfoWindowOptions对象中定义。
为了使其工作,请尝试将其更改为:
marker.addListener("click", function() {
let infoOptions = {
content: 'hello world'
};
let infowindow = new google.maps.InfoWindow(infoOptions);
infowindow.open(map, this);
});
或
let infowindow = new google.maps.InfoWindow({content: 'hello world'});