Я пытаюсь использовать InfoWindow Карт Google с узлами DOM и сохранять узлы между свопами InfoWindow без необходимости создания явного хранилища контента вне DOM.К сожалению, когда содержимое InfoWindow изменяется, предыдущее содержимое кажется уничтоженным, что вызывает сожаление, так как не позволяет вернуться к предыдущему узлу.Что еще хуже, похоже, что событие InfoWindow content_changed
не имеет ссылки на предыдущее содержимое, так как события MVC не имеют аргументов event
.Кроме того, как уже упоминалось здесь , ссылка на свойство содержимого внутри функции ссылается только на текущее значение, а не на предыдущее значение, таким образом, казалось бы, предыдущее значение пропало для всех времен и целей.
Например, допустим, что вы хотите это сделать, предположим, что у нас уже есть карта, и LatLng в myLatLng, myLatLng2.Обратите внимание, что единственная ссылка на недолговечный узел была добавлена в домен.
document.body.appendChild(document.createElement('div')).id = 'shortlived';
document.getElementById('shortlived').innerHTML = 'I will pass soon...';
var infowindow = new google.maps.InfoWindow();
var marker1 = new google.maps.Marker({
position: myLatlng,
map: map,
title:"Marker1"
});
var marker2 = new google.maps.Marker({
position: myLatlng2,
map: map,
title:"Marker2"
});
google.maps.event.addListener(marker1, 'click', function() {
infoWindow.setContent(document.getElementById('shortlived'));
infowindow.open(map, marker1);
});
google.maps.event.addListener(marker2, 'click', function() {
infoWindow.setContent('Some Text');
infowindow.open(map, marker2);
});
Вы заметите, что если вы нажмете на marker1, вы увидите короткоживущий узел, тогда, если вы нажмете на marker2, он исчезнет, но когдаВы нажимаете маркер1 снова, вы не получите короткое время, вы можете получить «Некоторый текст» или вы можете ничего не получить, но в любом случае короткое время исчезло.В моем случае я хотел бы в идеале сделать следующее:
google.maps.event.addListener(infoWindow, 'content_changed' function(e){
//where e.content is the previous content
document.body.appendChild(e.content)
}
или
google.maps.event.addListener(infoWindow, 'content_changed' function(e){
//No such thing exists
document.body.appendChild(infoWindow.previousContent)
}
Кажется, это не из коробки возможно, идеи?Опять же, я хотел бы избежать создания независимого хранилища, чтобы хранить отдельную ссылку на узлы DOM, отличную от ссылки, уже существующей в DOM.Я надеюсь, что что-то упускаю.
Заранее спасибо.