Автоматическое открытие информационной панели маркера на карте Google

#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);