我已经创建了一个包含我想要的大部分内容的自定义地图(自定义图标和自定义信息气泡),但我无法找到自动打开标记信息窗口的解决方案,我做了很多搜索但似乎找不到任何我到目前为止的代码如下,任何帮助将不胜感激:
function initialize() {
var myLatlng = new google.maps.LatLng(54.325109,-2.742226);
var myOptions = {
zoom: 15,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var countries = [
{
title:'Remedy',
lat:54.3210,
lon:-2.7438,
content:"<h2>Remedy</h2><p>address, <br />location, <br />postcode</p> <p><b>T:</b> 07595 153 835 <br /><b>E:</b> <a href='mailto:email'>email</a></p>"
}
];
for (var i = 0; i < countries.length; i++) {
var c = countries[i];
c.marker = new google.maps.Marker({
position: new google.maps.LatLng(c.lat, c.lon),
map: map,
icon: '/wp-content/themes/remedy/display_images/google_map_icon.png',
title: c.title});
c.infowindow = new google.maps.InfoWindow({content: c.content});
google.maps.event.addListener(c.marker, 'click', makeCallback(c));
}
function makeCallback(country) {
return function () {
country.infowindow.open(map, country.marker);
};
}
infowindow.open(map, marker);
}
答案 0 :(得分:2)
也许它不起作用,因为你刚刚创建了Map的实例,并没有等待地图的完全加载来打开InfoWindow。
尝试这样的事情:
google.maps.event.addListenerOnce(map, 'tilesloaded', function(event) {
infowindow.open(map, marker);
});
据参考:
http://code.google.com/intl/en/apis/maps/documentation/javascript/reference.html#Map
tilesloaded - 当可见图块完成加载时会触发此事件。
答案 1 :(得分:0)
嗯, inforwindow 没有引用代码中的任何内容,这就是它无法正常工作的原因。
由于您目前在列表中有一个国家/地区,因此您可以使用实际信息窗口快速测试 infowindow 变量,或者更好,因为列表中有1个项目,只需将c定义为在循环之外,这样你就可以访问它,然后打开弹出窗口,传递地图和标记,就像这样(假设c已在循环外定义)
c.infowindow.open(map, c.marker);
答案 2 :(得分:0)
var infowindow = new google.maps.InfoWindow({
content: "Test Route",
position: new google.maps.LatLng(38.8709866, -77.208055),
});
infowindow.open(map);