Информационное окно карты Google

#javascript #xml

#javascript #xml

Вопрос:

Я использую карту Google, на которой отображается маркер с информацией window…in в котором я отображаю адрес, но я хочу также отображать имя в информационном окне при нажатии на маркер. Любая помощь будет высоко оценена.

   function load()
   {
   var map = new GMap2(document.getElementById("map"));  
       map.setCenter(new GLatLng(-37.816667,144.966667), 10); 
       map.addControl(new GSmallMapControl());
       map.addControl(new GMapTypeControl());

         var   geocoder = new GClientGeocoder();
         GDownloadUrl("shops.xml", function(data) {

             var   xml = GXml.parse(data);
          shop = xml.documentElement.getElementsByTagName("shop");
          for (var i = 0; i < shop.length; i  ) {
          var name= shop[i].getElementsByTagName("name");
           name = name[0].childNodes[0].nodeValue;
          var address= shop[i].getElementsByTagName("address");
            address = address[0].childNodes[0].nodeValue;
            geocoder.getLocations(address, addToMap);}

              });  }

   function addToMap(response)
   {
      place = response.Placemark[0];
      point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);

      function createMarker(point,address)
       {    
       var marker = new GMarker(point);    
       GEvent.addListener(marker, "click", function() 
       {    
        map.openInfoWindowHtml(point, address);    
       });    
       return marker; 
       } 
       map.addOverlay(createMarker(point, response.name)); 
   }



  

Ответ №1:

Используйте API v3 и в настройках вашего маркера установите для метки маркера значение «name», тогда после добавления прослушивателя кликов вы сможете ссылаться на заголовок выбранного маркера — если это то, что вы хотели.

  //get your point and name whatever way you plan to do it
...

function createMarker(point,name){

var marker = new google.maps.Marker({
  position: point, 
  map: map,
  title: name,
}) ;

var content='Whatever info you want plus' name;

var infowindow = new google.maps.InfoWindow({
    content: content
});

google.maps.event.addListener(marker, 'click', function() {
  infowindow.open(map,marker);
});  
return marker; 
} 
  

Пожалуйста, проверьте замыкания, как я только что написал.
K