Google Maps Javascript API: информационное окно открывается в той же позиции, хотя несколько маркеров - PullRequest
0 голосов
/ 24 января 2020

Я настроил карту с несколькими маркерами, используя Google Maps Javascript API. Если щелкнуть маркер, откроется информационное окно. Однако, несмотря на то, что содержимое корректно (различно для каждого маркера), информационное окно открывается над одним и тем же маркером, независимо от того, на каком из них нажата кнопка.

Чтобы исправить это, я попытался явно установить правильную позицию ( long / lat) в функции eventlistener. Согласно выводу журнала консоли значения long и lat являются правильными. Но информация windows все еще открывается в неправильной идентичной позиции.

Вот код; PlaceMarker вызывается изнутри al oop через все места:

   var activeInfoWindow;  

    function placeMarker(map, lat, lng, markerurl, title, contentString) {
            marker = new google.maps.Marker({
              position: new google.maps.LatLng(lat, lng),
              icon: markerurl,
              map: map,        
              title: title,              
            });  
                                    
            var infowindow = new google.maps.InfoWindow({
                content: contentString
            });            
            
            google.maps.event.addListener(marker, 'click', function() {   
            
                // close other active infowindows
                if (activeInfoWindow) { 
                    activeInfoWindow.set("marker", null);
                    activeInfoWindow.close();
                }
                
                // added to explicitly set new position:
                infowindow.setPosition(new google.maps.LatLng(lat, lng));
                
                // check: console log shows on click: lat and long correct (different for each clicked marker)
                console.log(lat+' '+lng+' '+title);
                
                infowindow.open(map, marker);
                activeInfoWindow = infowindow;                                            
            });      
    } 

Есть идеи, что мне не хватает? Спасибо!

1 Ответ

0 голосов
/ 24 января 2020

решаемая. Просто нужно добавить «var» перед «marker»:

 var marker = new google.maps.Marker({
              position: new google.maps.LatLng(lat, lng),
              icon: markerurl,
              map: map,        
              title: title,              
            }); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...