gpt4 book ai didi

javascript - 显示相同信息的 Google map 信息窗口

转载 作者:行者123 更新时间:2023-11-30 06:58:24 28 4
gpt4 key购买 nike

我的网站上有谷歌地图,显示了英国各地的位置列表。但是信息窗口为每个单独的记录显示相同的记录。我的代码在下面。有什么理由吗?

var locations = [[52.478899, -1.894055, 'test 1', '87', 'Name: test 1'],
[52.479474, -1.895946, 'test 2', '88', 'Name: test 2 '],
[52.477082, -1.893929, 'test 3', '89', 'Name: test 3 ']];


function initialize() {

var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(52.528680, -1.839480),
mapTypeId: google.maps.MapTypeId.ROADMAP
};

var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var bounds = new google.maps.LatLngBounds();


for (var i = 0; i < locations.length; i++) {
var curLoc = locations[i];
myLatLng = new google.maps.LatLng(curLoc[0], curLoc[1]);
var beachMarker = new google.maps.Marker({
position: myLatLng,
map: map,
title: curLoc[2],
data: curLoc[4], //add content to the Marker-object
zIndex: 50 - i
});

var infowindow = new google.maps.InfoWindow({
content: curLoc[4]
});

google.maps.event.addListener(beachMarker, 'click', (function() {
infowindow.setContent(beachMarker.data);
infowindow.setPosition(beachMarker.position);
infowindow.open(map);
}));

bounds.extend(myLatLng);
map.fitBounds(bounds);


}
}

google.maps.event.addDomListener(window, 'load', initialize);

更新:我更改了我的代码,但问题仍然存在,但现在单击一个标记会关注最后一个标记,而不仅仅是显示最后一个标记文本。

这是一个示例网址 http://map.projects.webskii.com/default.html

最佳答案

我在这些情况下使用的解决方法是在创建时为标记分配一个 id。此 id 将在回调中可用,因此您可以使用它来按需获取 HTML 内容。方法如下:

var locations = [
[52.478899, -1.894055, 'test 1', '87', 'Name: test 1'],
[52.479474, -1.895946, 'test 2', '88', 'Name: test 2'],
[52.477082, -1.893929, 'test 3', '89', 'Name: test 3']
];
var map = new google.maps.Map(document.getElementById("map_div"), {
center: new google.maps.LatLng(52.528680, -1.839480),
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infoWindow = new google.maps.InfoWindow(); // 2: infoWindow is global
var markerClickHandler = function () {
infoWindow.setContent(locations[this.dataId][4]); // 3: use dataId stored in marker to fetch content from locations array
infoWindow.open(map, this);
};
var bounds = new google.maps.LatLngBounds();
var i;
for (i = 0; i < locations.length; i++) {
var latlng = new google.maps.LatLng(locations[i][0], locations[i][1]);
var marker = new google.maps.Marker({
position: latlng,
map: map,
title: locations[i][2],
dataId: i // 1: assign an id
});
bounds.extend(latlng);
google.maps.event.addListener(marker, "click", markerClickHandler);
}
map.fitBounds(bounds);

Demo here .请注意,也可以将文本/HTML 而非 ID 存储到标记中。

关于javascript - 显示相同信息的 Google map 信息窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17064638/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com