Изменить содержимое infowindow maps v3
Я пытаюсь изменить содержимое, которое появляется внутри DIV, что является содержимым информационного наполнения. Я смог изменить содержимое от Hello до YO внутри infowindow. Проблема в том, что когда я закрываю инфоиндустрию и снова открываю ее, обновленный контент возвращается к оригиналу. Ниже мой код:
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
if (event.type == google.maps.drawing.OverlayType.MARKER) {
//event.overlay.setTitle("Hello");
var infowindow = new google.maps.InfoWindow({
content: '<div id="content" onmouseover="updateContent()">Hello</div>',
maxWidth: 10
});
google.maps.event.addListener(event.overlay, 'click', function() {
infowindow.open(map, event.overlay);
});
}
});
function updateContent() {
document.getElementById('content').innerHTML = "Yo";
}
В основном я хочу создать информационное окно по умолчанию и позволить пользователю вводить свой собственный текст после размещения на нем маркера...
Ответы
Ответ 1
вам нужно установить контент с помощью метода setContentHTML
var infowindow ;
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {
if (event.type == google.maps.drawing.OverlayType.MARKER) {
//event.overlay.setTitle("Hello");
infowindow = new google.maps.InfoWindow({
content: '<div id="content" onmouseover="updateContent()">Hello</div>',
maxWidth: 10
});
google.maps.event.addListener(event.overlay,'click',function()
infowindow.open(map,event.overlay);
});
}});
function updateContent(){
infowindow.setContent("YO");
}
Ответ 2
Я нашел, что принятый выше ответ не работал, поскольку мне пришлось использовать setContent() следующим образом:
google.maps.event.addListener(drawingManager, 'overlaycomplete', function (event) {
if (event.type == google.maps.drawing.OverlayType.MARKER) {
//event.overlay.setTitle("Hello");
var infowindow = new google.maps.InfoWindow({
content: '<div id="content" onmouseover="updateContent()">Hello</div>',
maxWidth: 10
});
google.maps.event.addListener(event.overlay, 'click', function () {
infowindow.open(map, event.overlay);
});
}
});
function updateContent() {
infowindow.setContent("Yo");
}
Ответ 3
Лучше всего создавать содержимое InfoWindow не с помощью строки HTML, а с помощью элемента DOM. Так что замените:
new google.maps.InfoWindow({
content: '<div id="content" onmouseover="updateContent()">Hello</div>'
});
с:
var domElement = document.createElement('div');
domElement.innerHTML = '<div id="content" onmouseover="updateContent()">Hello</div>';
new google.maps.InfoWindow({
content: domElement
});
Теперь вы можете легко получить доступ к div с помощью document.getElementById("content");
и делать все манипуляции с DOM, которые вы хотите.