Геокодирование карт Google: "google не определен"
Я получаю проблему, когда я пытаюсь загрузить этот код, и я не могу понять, почему он не работает...
<script type="text/javascript">
$(document).ready(function()
{
var geocoder = new google.maps.Geocoder();
$(".textarea-autosize").autosize();
geocoder.geocode({
address: '{$order->address_delivery["address1"]},{$order->address_delivery["postecode"]},{$order->address_delivery["city"]}'
}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK)
{
var delivery_map = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 10,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: results[0].geometry.location
});
var delivery_marker = new google.maps.Marker({
map: delivery_map,
position: results[0].geometry.location,
url: 'http://maps.google.com?q={$order->address_delivery["address1"]},{$order->address_delivery["postcode"]},{$order->address_delivery["city"]}'
});
google.maps.event.addListener(delivery_marker, 'click', function() {
window.open(delivery_marker.url);
});
}
});
});
// Fix wrong maps center when map is hidden
$('#tabAddresses').click(function(){
x = delivery_map.getZoom();
c = delivery_map.getCenter();
google.maps.event.trigger(delivery_map, 'resize');
delivery_map.setZoom(x);
delivery_map.setCenter(c);
});
</script>
Ошибка возникает на var geocoder = new google.maps.Geocoder();
Потом я пытался загрузить следующий скрипт : <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
и я получаю еще одну ошибку :
'Uncaught TypeError: не удается прочитать свойство 'offsetWidth' из null'
Кто-нибудь знает, почему это не работает ?
Ответы - Геокодирование карт Google: "google не определен" / Google Maps geocoding : "google is not defined"

05.04.2016 03:00:49
Карты Google не загружаются в то время, когда вы пытаетесь вызвать его. Вы должны использовать это:
HTML:
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&callback=initMap" async defer></script>
JS:
function initMap() {
// Google maps are now initialized.
}
Вам нужно включить атрибуты async и defer в ваш скрипт - это позволит убедиться, что остальная часть веб-сайта продолжает загружаться, а не ждать загрузки скрипта (что удобно, потому что он довольно большой). Во-вторых, вы передаете параметр "обратный вызов" при вызове скрипта. Это имя функции, которая должна выполняться при загрузке скрипта. Таким образом, вы можете убедиться, что вы только инициализируете карту, когда она фактически загружена и присутствует в вашем окне.


16.10.2019 09:33:31
Просто добавьте этот скрипт в ваш HTML-файл :
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
</script>
Если вы хотите протестировать Google geocoding api или проверить какой-то код, перейдите по этой ссылке. Источник API сервиса геокодирования Google