#javascript #api #google-maps
#javascript #API #google-карты
Вопрос:
Я использую Google map API, который содержит функцию обратного вызова initMap, мне нужно вызвать эту функцию вне URL Google map API, например, я использую:
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEYamp;libraries=placesamp;callback=initMap"></script>
Мне нужно удалить последнюю часть строки запроса amp;callback=initMap
но когда я удаляю Google map, это не работает.
Проблема в том, что я хочу использовать этот же Google map api для всего, что связано с Google api, следовательно, в некоторых API нет метода initMap, поэтому я хочу вызвать этот метод отдельно, возможно ли это.
Ответ №1:
Вам не обязательно вызывать initMap
функцию асинхронно.
Изменение (похоже, в нем отсутствует «асинхронная отсрочка»):
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEYamp;libraries=placesamp;callback=initMap"></script>
Для:
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEYamp;libraries=places"></script>
Затем вызовите функцию initMap после того, как div карты будет отображен в DOM.
Примечание: есть причина, по которой Google изменил все свои примеры для асинхронной загрузки API (скорость загрузки страницы), все их примеры изначально были выполнены с помощью функции onload.
фрагмент кода:
function initialize() {
var map = new google.maps.Map(
document.getElementById("map_canvas"), {
center: new google.maps.LatLng(37.4419, -122.1419),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
}
google.maps.event.addDomListener(window, "load", initialize);
html,
body,
#map_canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js?libraries=placesamp;key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<div id="map_canvas"></div>
Комментарии:
1. Ваш тот же пример не работает с моей стороны, я использовал точно такой же код, не могли бы вы, пожалуйста, создать его на JSFiddle, если вы не возражаете 🙂
Ответ №2:
Вы можете вызвать initMap
после задержки, setTimeout(initMap, 500);
Комментарии:
1. Я так не думаю, вы полагаетесь на тот факт, что скрипт Google maps api загружается за 500 мс, что может произойти, а может и не произойти (в зависимости от скорости соединения пользователей).