2013-11-28 2 views
1

У меня есть следующий код, который отлично работает - Fiddle. Он устанавливает некоторые маркеры и использует для них 1 infowindow.
Но когда я изменить InfoWindow содержание быть Div элемент, изменив это:Окно API Карт Google не открывается после закрытия вручную

infowindow.setContent(locations[i][0]); 
infowindow.open(map, marker); 

с этим:

document.getElementById("info").innerHTML=locations[i][0];  
infowindow.setContent(document.getElementById("info")); 
infowindow.open(map, marker); 

Что-то странное происходит - InfoWindow все еще показывает при нажатии на маркеры, пока вы не решите чтобы закрыть инфоиндуст, щелкнув «x». После этого infowindow не открывается снова, когда вы нажимаете на маркеры.

Ссылка на проблему скрипки - here. Любая идея, что вызывает это?

Спасибо за помощь!

ответ

1

Любая идея, что вызывает это?

Да. По

infowindow.setContent(document.getElementById("info")); 

Вы движетесь <div id="info"> в infowindow. Это хорошо, пока вы не закроете infowindow, потому что, когда вы закрываете infowindow, вы делаете также удаление <div id="info"> от DOM! И после этого,

document.getElementById("info").innerHTML=locations[i][0]; 

будет поднимать execption потому <div id="info"> больше не существует:

Uncaught TypeError: Cannot set property 'innerHTML' of null

Вы действительно должны найти другой подход. Я хотел бы удалить <div id="info"></div> из HTML и использовать этот код вместо:

var content='<div id="info">'+locations[i][0]+'</div>'; 
infowindow.setContent(content); 
infowindow.open(map, marker); 

см раздвоенный скрипку ->http://jsfiddle.net/E2CxC/

Смежные вопросы