2014-11-30 3 views
3

Я создаю полностью динамический веб-сайт, используя jquery/javascript, ajax и php.Загрузка API Карт Google через AJAX, ошибка консоли

Когда я нажимаю на ссылку навигации, браузер открывает эту страницу с помощью ajax.

Таким образом, в основном все страницы загружаются в пределах одного index.php.

Если я перейду на вкладку «Местоположение», где у меня есть карта google, она будет динамически загружать сценарий Google Maps (добавление тега сценария в тело).

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&amp;callback=initialize"></script> 

Этот скрипт загружается автоматически предыдущего сценария

<script src="https://maps.gstatic.com/maps-api-v3/api/js/19/1/intl/hr_ALL/main.js"></script> 

Когда я выхожу на страницу «Местоположение», я проверяю, если сценарии присутствуют и удалить их.

Если я вернусь в «местоположение» без перезагрузки страницы, я думал, что карта будет иметь чистый старт, но я получаю эту ошибку в консоли:

Вы включили несколько раз Google Maps API на этой странице. Это может привести к непредвиденным ошибкам.

Несмотря на то, что скрипты были удалены ранее, а карта и содержимое изменены на что-то еще, я получаю эту ошибку.

Поскольку я знаю, что у меня есть только один экземпляр карты, я должен просто игнорировать его?

Или у него действительно есть какая-то ссылка на старую карту, и удаление двух скриптов просто недостаточно.

Благодарим за любую информацию!

+0

Почему вы не просто связать библиотеку Gmaps раз и навсегда при первой загрузке страницы? Это лучше, чем перезагружать его каждый раз, когда вам это нужно, и я думаю, это решает вашу проблему. – Flo

+0

Вы имеете в виду, что я добавляю скрипт gmaps в index.php и использую initialize() на определенной странице? EDIT: Может ли этот подход увеличить время загрузки? – Bralemili

ответ

6

Удаление элементов сценария не будет удалять объекты, созданные этими скриптами (в основном это не будет иметь никакого эффекта).

Проверьте карты-API уже был загружен:

<script> 
jQuery(function(){ 
if(!window.google||!window.google.maps){ 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = 'https://maps.googleapis.com/maps/api/js?v=3&' + 
     'callback=initialize'; 
    document.body.appendChild(script); 
} 
else{ 
    initialize(); 
}}); 
</script> 
+0

Устранена проблема с консольной ошибкой, и скрипты загружаются только один раз. Но теперь, когда он повторно инициализируется, он не отображает карту должным образом. Вместо полной ширины это показывает ~ 200px – Bralemili

+0

. Контейнер-карта, очевидно, не имеет окончательного размера, когда вы вызываете инициализацию ... невозможно предоставить решение, не зная, когда он получает, окончательный размер (используете ли вы какую-то анимацию?) –

+0

Я удалил свои предыдущие комментарии, потому что я неправильно понял ваш комментарий, и когда я хотел написать новый, я попал в дверь, прежде чем закончить ... Ничего. Последнее решение может решить проблему. Я скоро отправлю сообщение. Спасибо – Bralemili

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