gpt4 book ai didi

javascript - google maps api v3 infoBubble 数组不工作

转载 作者:行者123 更新时间:2023-11-30 18:15:08 24 4
gpt4 key购买 nike

我有一张使用 infoBubble.js 的 map 。

在这张 map 中,有一个位置数组,我要遍历这些位置。

点击自定义图标时应该会弹出 infoBubble,但由于某种原因,它只会打开第一个数据项。

有人知道为什么会发生这种情况吗?

我在这里为它开发了代码;

var arrMarkers = [
['Santiago de Cuba', 20.040450354169483, -75.8331298828125],
['Las Tunas', 20.97682772467435, -76.9482421875],
['Camaguey', 21.39681937408218, -77.9205322265625],
['Playa Santa Lucia', 21.555284406923192, -77.0526123046875],
['Santa Clara', 22.421184710331854, -79.9639892578125],
['Cienfuegos', 22.161970614367977, -80.4473876953125],
['Havana', 23.12520549860231, -82.3919677734375],
['San Cristobel', 22.730590425493833, -83.045654296875],
['Pinar del Rio', 22.43641760076311, -83.69384765625]
];

var arrInfoWindowsCuba = [];

var arrInfoWindows = [];
arrMarkers[i] = marker;

function init() {

var mapCenter = new google.maps.LatLng(21.616579336740603, -78.892822265625);
map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 7,
center: mapCenter,
mapTypeId: google.maps.MapTypeId.TERRAIN
});
var image = '/wp-content/themes/Shootcuba/images/map-icon.png';

for (i = 0; i < arrMarkers.length; i++) {
var marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(arrMarkers[i][1], arrMarkers[i][2]),
icon: image
});


var infoBubble = new InfoBubble({
content: '<div class="phoneytext">' + arrMarkers[i][0] + '<div class="left-col2"></div></div>',
boxClass: 'info-box',
alignBottom: true,
pixelOffset: new google.maps.Size(-150, -40),
maxWidth: 300,
padding: 0,
closeBoxMargin: '0px',
borderColor: '#ffffff',
borderRadius: '0',
maxWidth: 535,
disableAutoPan: false,
hideCloseButton: false,
backgroundClassName: 'phoney'
});
google.maps.event.addListener(marker, 'click', function () {
infoBubble.open(map, marker, i);
console.log(arrMarkers);
});

arrMarkers[i] = marker;
arrInfoWindowsCuba[i] = infoBubble;

}
}

最佳答案

Here's a working example .我取出了您拥有的一些数组(我不完全确定它们的用途,它们只是在您发布的代码片段中造成了错误),但除此之外与您所做的非常相符。最大的不同是我创建了一个单独的函数来创建标记。这样做主要是为了将点击事件的范围彼此分开,因为点击事件总是触发最后一个事件向我表明范围没有正确分开。

特别是,我认为正在发生的事情是您一直将值覆盖到标记和 infoBubble 的事件函数,并且事件监听器将引用这些变量的当前值,而不是您第一次附加监听器时的值。进行单独的函数调用来维护事件的范围让我觉得这是最干净的解决方案。

关于javascript - google maps api v3 infoBubble 数组不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13461764/

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