gpt4 book ai didi

javascript - 谷歌地图标记,多个单独的事件

转载 作者:行者123 更新时间:2023-11-28 00:02:43 25 4
gpt4 key购买 nike

我正在尝试做一些我似乎找不到任何人以前做过的例子,我需要一点帮助。

我正在尝试使用一个元素来替代 InfoWindow。当您单击标记时,我希望出现一个 div 而不是 infoWindow。

我已经知道如何显示 div,我只需要弄清楚如何将其与 Google map /标记事件相关联。

我知道的当前代码块;

google.maps.event.addListener(marker, 'click', (function(marker) {
return function() {
map.panTo(marker.getPosition());
map.panBy(m_w_pan,0);
}
})(marker));

寻址 map 上的所有标记。如果我没记错的话,删除最后的 )(marker)); 使得代码只引用一个标记,但我怎么知道它与哪个标记相关/选择我想要的标记将事件绑定(bind)到?

使用标记数组(样本):

var memory = [
['A', 37.769587, -122.444344, 1],
['B', 37.769587, -122.454344, 2],
['C', 37.769587, -122.464344, 3],
['D', 37.769587, -122.474344, 4],
['E', 37.769587, -122.484344, 5]
];

如何指定当您点击标记 A 时出现 div 1,以及当您点击标记 B 时出现 div 2,等等?

我希望这是有道理的。

谢谢!

编辑:看来我的问题有点让人困惑,我会尽量简化它。如何将事件添加到标记数组中的一个特定标记?这可能吗?每个人都在提到如何为数组中的所有标记创建信息窗口,我需要做的是针对一个特定的标记。也许这会让这更清楚一点?我们拭目以待。

最佳答案

我已经创建了一个可能对您有帮助的脚本,让我尝试只为您提供您可以使用以使您的代码正常工作的内容,看看我所做的是否对您有帮助。

我使用了以下脚本:

http://google-maps-utility-library-v3.googlecode.com/svn/tags/infobox/1.1.9/src/infobox.js

因此,假设您有一个标记数组,您将在 for 循环中对其进行迭代:

mapOptions = {
zoom: 18,
center: new google.maps.LatLng(youLat, yourLng),
mapTypeId: google.maps.MapTypeId.SATELLITE,
panControl: false,
zoomControl: false,
mapTypeControl: false,
scaleControl: false,
streetViewControl: false,
overviewMapControl: false
};

map = new google.maps.Map(mapElementId, mapOptions);

ib = new InfoBox();

for (var i = 0; i < markers.length; i++) {

var options = {
content: markers[i].htmlContent,
disableAutoPan: false,
maxWidth: 0,
pixelOffset: new google.maps.Size(100, 100),
zIndex: null,
closeBoxMargin: "-1000000px",
closeBoxURL: "http://www.google.com/intl/en_us/mapfiles/close.gif",
infoBoxClearance: new google.maps.Size(1, 1),
isHidden: false,
pane: "floatPane",
enableEventPropagation: false
}

var marker = new google.maps.Marker({
position: new google.maps.LatLng(markers[i].lat, markers[i].lng),
map: map,
icon: path/to/icon
});

google.maps.event.addListener(marker, 'click', function() {
map.panTo(marker.getPosition());
ib.setOptions(options);
ib.open(map, this);
});

}

markers[i].htmlContent 应该是您要设置到信息框的内容。让我知道这是否有效,我的脚本要复杂得多,我不想让你迷失其中,所以我分离了可以帮助你的最重要的部分。这样,您将始终拥有一个 infoBox 对象实例,并且对于每个标记,您可以更改该信息框将具有的选项。

关于javascript - 谷歌地图标记,多个单独的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20434794/

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