Как сохранить одно окно информации открытым одновременно на карте Google V3?
Я знаю, что этот вопрос повторяется,
Я использую карту Google v3 в своем веб-приложении Django. Где я использую Markers, Infowindow and polyline
, Все работает нормально, кроме того, когда я нажимал на маркер, чтобы показать содержимое в окне информации, предыдущее открытое окно информации не закрывалось.
Я публикую свой код карты (только часть скрипта или полезные):
var marker = add_marker(flightPlanCoordinates[i][0], flightPlanCoordinates[i][1],"Event Detail",myHtml);
Вот myHtml
переменная, которая содержит содержимое информационного окна Я не определил переменную здесь. ТАК игнорировать это.
marker.setMap(map);
}
var flightPath = new google.maps.Polyline({
path: flightPlanCoordinatesSet,
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 2
});
flightPath.setMap(map);
}
function add_marker(lat,lng,title,box_html) {
var infowindow = new google.maps.InfoWindow({
content: box_html
});
var marker = new google.maps.Marker({
position: new google.maps.LatLng(lat,lng),
map: map,
title: title
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,this);
});
return marker;
}
1 ответ
Решение
Вместо нескольких infoWindows используйте только один экземпляр.
При нажатии на маркер сначала закройте информационное окно, затем установите новый контент и откройте информационное окно.
function add_marker(lat,lng,title,box_html)
{
//create the global instance of infoWindow
if(!window.infowindow)
{
window.infowindow=new google.maps.InfoWindow();
}
var marker = new google.maps.Marker({
position: new google.maps.LatLng(lat,lng),
map: map,
title: title
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.close();
infowindow.setContent(box_html);
infowindow.open(map,this)
});
return marker;
}