#javascript #google-maps
#javascript #google-карты
Вопрос:
Я создал пользовательскую карту с большинством элементов, которые я хочу на ней (пользовательский значок и пользовательский информационный пузырь), однако я не могу найти решение для автоматического открытия окна информации о маркерах при загрузке, я много искал, но, похоже, ничего не могу найти, код, который у меня пока есть, выглядит следующим образом, любая помощь была бы очень признательна:
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);
}
Ответ №1:
Возможно, это не работает, потому что вы только что создали экземпляр карты и не дождались полной загрузки карты, чтобы открыть информационное окно.
Попробуйте что-то вроде этого:
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 — Это событие запускается, когда загрузка видимых фрагментов завершена.
Ответ №2:
Хм, inforwindow ни на что не ссылается в вашем коде, вот почему он не работает.
Поскольку на данный момент у вас есть одна страна в списке, вы можете выполнить быстрый тест и инициализировать переменную infowindow с помощью фактического информационного окна, или, что еще лучше, поскольку у вас есть 1 элемент в списке, просто определите c как находящийся вне цикла, чтобы вы могли получить к нему доступ, а затем откройте всплывающее окно, передавая ему карту и маркер, что-то вроде этого (при условии, что c был определен вне цикла)
c.infowindow.open(map, c.marker);
Комментарии:
1. вау, спасибо, на этот раз легко исправить! Большое спасибо, вы избавили меня от головной боли 😉
Ответ №3:
var infowindow = new google.maps.InfoWindow({
content: "Test Route",
position: new google.maps.LatLng(38.8709866, -77.208055),
});
infowindow.open(map);