2016-01-10 6 views
0

Мне нужно в InfoWindow show match.offer.text. Каждый маркер имеет другой match.offer.text.Google maps marker - infowindow

Это мой код:

var markerImageURL, lat, lng; 
if (myoffer) { 
    markerImageURL = 'assets/img/markers/marker_my.png'; 
    lat = match.lat; 
    lng = match.lng; 
} else { 
    markerImageURL = 'assets/img/markers/marker_' + match.strength + '.png'; 
    lat = match.offer.lat; 
    lng = match.offer.lng; 
} 

var marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(lat, lng), 
    map: window.googleMap, 
    icon: { 
     size: new google.maps.Size(54,56), 
     url: markerImageURL 
    }, 
    draggable: false, 
    visible: true 
}); 

var infowindow = new google.maps.InfoWindow({ 
    content: match.offer.text, 
    maxWidth: 300 
}); 

window.googleMapMarkers.push(marker); 

if(!myoffer) { 
    window.MVC.Events.GoogleMap.prototype.showInfoWindow(marker, infowindow, match); 
} 

Событие срабатывает после нажатия на маркер:

marker.addListener('click', function() { 
    infowindow.open(window.googleMap, marker); 
} 

Пожалуйста, помогите мне.

+1

У вас возникли ошибки в консоли разработчика? что делает ваш код в настоящее время? –

+0

Просьба предоставить [Минимальный, завершенный, проверенный и читаемый пример] (http://stackoverflow.com/help/mcve), который демонстрирует вашу проблему. – geocodezip

+0

Возможный дубликат [Google JS API v3 - простой пример множественного маркера] (http://stackoverflow.com/questions/3059044/google-maps-js-api-v3-simple-multiple-marker-example) – geocodezip

ответ

1

Содержание применяется к указателю на Open поэтому ваш код будет применять содержание в последнем пункте в цикле для всех маркеров, в функции OpenWindow добавить содержимое к одному объекту InfoWindow т.е.

Кроме того, карты API имеет собственную оболочку событий для события щелчка

function initMarkers(){ 
    //create markers 
    var marker = new google.maps.Marker(); 

    google.maps.event.addListener(marker, 'click', openInfoWindow(marker, i)); 
} 

var infowindow = new google.maps.InfoWindow(); 
function openInfoWindow(marker,index){ 
     return function(e) { 

      //Close other info window if one is open 
      if (infowindow) { 
       infowindow.close(); 
      } 

      var content = marker.offer.text; 

      infowindow.setContent(content); 

      setTimeout(function() { 
       infowindow.open(map, marker); 
      }, 200); 
     } 
} 
+0

спасибо! Теперь это работает ... – webmazz