Геокодирование карт Google: "google не определен"

Геокодирование карт Google: "google не определен"

05.04.2016 01:36:16 Просмотров 46 Источник

Я получаю проблему, когда я пытаюсь загрузить этот код, и я не могу понять, почему он не работает...

<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"

Является ответом!
Eihwaz

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 в ваш скрипт - это позволит убедиться, что остальная часть веб-сайта продолжает загружаться, а не ждать загрузки скрипта (что удобно, потому что он довольно большой). Во-вторых, вы передаете параметр "обратный вызов" при вызове скрипта. Это имя функции, которая должна выполняться при загрузке скрипта. Таким образом, вы можете убедиться, что вы только инициализируете карту, когда она фактически загружена и присутствует в вашем окне.

https://stackoverflow.com/questions/36423968/google-maps-geocoding-google-is-not-defined/36425847#comment60471067_36425847
Может быть, немного больше объяснений в том, что вы сделали? Я знаю, но не думаю, что ОП это поймет.
airvine

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

Закрыть X