【发布时间】:2020-11-04 18:23:30
【问题描述】:
我使用一些 Google 地图示例制作了一个简单的多标记地图。代码如下:
function initMap() {
var center = {
lat: 51.7504111,
lng: -1.2826071
};
var locations = [
['Philz Coffee<br>\
801 S Hope St A, Los Angeles, CA 90017<br>\
<a href="https://goo.gl/maps/L8ETMBt7cRA2">Get Directions</a>', 34.046438, -118.259653],
['Philz Coffee<br>\
525 Santa Monica Blvd, Santa Monica, CA 90401<br>\
<a href="https://goo.gl/maps/PY1abQhuW9C2">Get Directions</a>', 34.017951, -118.493567],
['Philz Coffee<br>\
146 South Lake Avenue #106, At Shoppers Lane, Pasadena, CA 91101<br>\
<a href="https://goo.gl/maps/eUmyNuMyYNN2">Get Directions</a>', 34.143073, -118.132040],
['Philz Coffee<br>\
21016 Pacific Coast Hwy, Huntington Beach, CA 92648<br>\
<a href="https://goo.gl/maps/Cp2TZoeGCXw">Get Directions</a>', 33.655199, -117.998640],
['Philz Coffee<br>\
252 S Brand Blvd, Glendale, CA 91204<br>\
<a href="https://goo.gl/maps/WDr2ef3ccVz">Get Directions</a>', 34.142823, -118.254569]
];
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 9,
center: center
});
var infowindow = new google.maps.InfoWindow({});
var marker, count;
for (count = 0; count < locations.length; count++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[count][1], locations[count][2]),
map: map,
title: locations[count][0]
});
google.maps.event.addListener(marker, 'click', (function(marker, count) {
return function() {
infowindow.setContent(locations[count][0]);
infowindow.open(map, marker);
}
})(marker, count));
}
}
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map, marker);
});
infowindow.open(map, marker);
我添加了以下内容以尝试默认显示信息窗口(文档建议这应该可以工作),但这似乎不起作用:
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map, marker);
});
infowindow.open(map, marker);
但我真正想要实现的是如何在页面加载时显示特定标记,例如第二个“Philz Coffee”位置。非常感谢任何帮助。
【问题讨论】:
-
在您的 for 循环中,但在其末尾,尝试添加
if (count == 1) infowindow.open(map,marker); -
奇怪的是,这会导致一个很小的信息窗口,但没有内容。删除该行会返回内容,但只会返回 onClick。
-
对;只有一个
infowindow,它会在单击标记时出现。这样做: 1. 将循环内的标记存储在一个变量中:if (count == 1) initialMarker = marker;2. 在循环之后,调用google.maps.event.trigger(initialMarker, 'click'); -
marker在您尝试注册点击事件的位置未定义。顺便提一句。如果您正在注册单击事件侦听器,则信息窗口不会按照您的指定“默认”打开。您应该在 one 特定标记上使用infowindow.open(map, marker);而不使用事件侦听器。 -
谢谢,克里斯。这似乎有效。实际上,当我从 PHP 中获取一些数据时,我对它的结构有所不同,但概念是相同的。请将此作为答案,以便我接受。
标签: javascript google-maps-api-3 google-maps-markers