Ошибка JavaScript - не удается найти переменную: Google - PullRequest
5 голосов
/ 27 сентября 2011

Код, который я написал, работает в браузере абсолютно нормально.Но когда я подключаюсь к Wi-Fi на iPhone, я получаю сообщение об ошибке в отладчике: Ошибка Javascript - Не удается найти переменную: google

Это происходит всякий раз, когда я вызываю любой объект google maps / directions / geoLocation.


Код выглядит следующим образом:

map = new Ext.Map({
    mapOptions : {
        center : center,
        zoom : 20,
       // mapTypeId : google.maps.MapTypeId.ROADMAP,
        navigationControl: true,
        navigationControlOptions: {
                style: google.maps.NavigationControlStyle.DEFAULT
            }
    },

    listeners : {
        maprender : function(comp, map){
            pos = new google.maps.LatLng(lats, longs, true);
            var marker = new google.maps.Marker({
                 position: pos,
                 //title : 'Sencha HQ',
                 map: map
            });

            map.setMapTypeId(google.maps.MapTypeId.HYBRID);
            setTimeout( function(){map.panTo (pos);} , 1000);
        }
    },

     geo:new Ext.util.GeoLocation({
         autoUpdate:true,
         maximumAge: 0,
         timeout:2000,
         listeners:{
             locationupdate: function(geo) {
                 pos = new google.maps.LatLng(lats, longs, true);
                 center = new google.maps.LatLng(geo.latitude, geo.longitude);
                 if (map.rendered)
                     map.update(center)
                 else
                     map.on('activate', map.onUpdate, map, {single: true, data: pos});
             },
             locationerror: function(geo, bTimeout, bPermissionDenied, bLocationUnavailable, message) {
                 if(bLocationUnavailable){
                     alert('Your Current Location is Unavailable on this device');
                 }
                 else if (bPermissionDenied){
                     alert('Location capabilities have been disabled on this device.');
                 }      
             }
         }
     })
});

Ошибка возникает, когда код встречает слово google.Также для объекта LatLng я получаю ошибку javascript: «.... результат LatLng не является конструктором»

Примечание: переменные "lats" и "longs" были определены с заданными значениями перед этим сегментомкод

Ответы [ 5 ]

7 голосов
/ 06 июня 2012

Что сработало для меня: уберите «https» из

<script src="https://maps.google.com/maps/api/js?sensor=false"></script>

, чтобы оно стало

<script src="http://maps.google.com/maps/api/js?sensor=false"></script>

Я не знаю, почему Safari не загружает защищенные страницы нанеобеспеченные, но это просто не кажется.А потом выдает ошибку.Это единственный мобильный браузер, который так себя ведет.

4 голосов
/ 09 июля 2012

Итак, я разместил это ранее в качестве комментария, но так как это реальное решение проблемы, я опубликую его еще раз: D

Хорошо, получается, что причина, по которой я получаю все эти ошибки, в том, что я был за прокси. Как ни странно, прокси-сервер позволяет мне получать доступ к библиотекам и серверу Google, когда я подключен с помощью кабеля LAN, но не когда я использую WiFi. Надеюсь, кто-нибудь еще, кто застрял в этом виде ошибки, сочтет это несколько полезным :)

1 голос
/ 11 октября 2011

Может быть, вы загружаете библиотеки Google JavaScript с сервера Google? Если это так, когда у вас нет Wi-Fi, это не будет работать. Вот почему объект "Google" не определен. Вы можете использовать Карты Google только в том случае, если ваше устройство подключено к сети.

РЕДАКТИРОВАТЬ: Неважно, вы сказали, что вы подключены через WiFi. Странный. Я думаю, нам нужно увидеть ваш полный исходный код.

0 голосов
/ 18 августа 2018

Проверьте, есть ли у вашего config.xml разрешение на переход по адресу Api Google, который вы пишете в index.html.Дважды проверьте, работаете ли вы с «https» или «http».Я сделал с 'https'

В вашем index.html:

`<script src="https://maps.google.com/maps/api/js?key=APIKEY" async defer type="text/javascript"></script>`

В вашем config.xml

`<access origin="https://maps.google.com/*" />
<allow-intent href="https://maps.google.com/*" />
<access origin="https://maps.gstatic.com/*" />
<allow-intent href="https://maps.gstatic.com/*" />
<access origin="https://maps.googleapis.com/*" />
<allow-intent href="https://maps.googleapis.com/*" />
<access origin="https://fonts.googleapis.com/*" />
<allow-intent href="https://fonts.googleapis.com/*" />`

Это сработало для меня!

0 голосов
/ 22 мая 2013

Моим решением было просто убедиться, что Google Maps js загружается до Touch js.Проще говоря

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>

перед

<script id="microloader" type="text/javascript" src="touch/microloader/development.js"</script>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...