www/index.html хотел бы использовать ваше текущее местоположение — Ionic Framework

Я искал различные форумы и сообщения, связанные с проблемой оповещения на основе геолокации; В моем случае почему-то никакая техника не сработала.

В мой проект Ionic Framework добавлен плагин «cordova-plugin-geolocation».

Добавлен в мой базовый контроллер под $ionicPlatform.ready(...)

navigator.geolocation.getCurrentPosition(function(position) {
    var coords = {};
    coords.updated = new Date();
    coords.latitude = position.coords.latitude.toFixed(6);
    coords.longitude = position.coords.longitude.toFixed(6);
    coords.altitude = position.coords.altitude + ' m';
    coords.accuracy = position.coords.accuracy + ' m';
    coords.altitudeAccuracy = position.coords.altitudeAccuracy + ' m';
    coords.heading = position.coords.heading + '\u00b0';
    coords.speed = position.coords.speed + ' m/s';
    console.log('Fetched Location...' + geoText);
    return position;
}, function(err) {
    Logger.error(err.message);
}, {
    timeout: 10000,
    enableHighAccuracy: true
});

Когда я эмулирую/запускаю в iOS/Android, он выдает

Сообщение об ошибке: /www/index.html хочет использовать ваше местоположение

Я был бы очень признателен, если кто-то может помочь.


person kousikraj    schedule 15.08.2015    source источник
comment
вы не можете протестировать плагины Cordova в эмуляторе устройства. Вы пытались сделать сборку и установить ее на реальное устройство? или вы можете использовать intelxdk software.intel.com/en-us/intel-xdk импортируйте свой проект, затем используйте вкладку отладки, чтобы отправить его на устройство, и получите отладчик в реальном времени, чтобы протестировать плагин Cordova на реальном устройстве и иметь возможность отлаживать его.   -  person Jess Patton    schedule 17.08.2015
comment
Да, @Jess, я пробовал на своем телефоне (как на Android, так и на iOS). Спасибо за ответ. Плагин на самом деле работает нормально, меня беспокоит то, что он всплывает .../Index.html Хотел бы использовать ваше сообщение о местоположении (кроме подтверждения на уровне приложения).   -  person kousikraj    schedule 18.08.2015
comment
да, мы только начали сталкиваться с этой проблемой в iOS 8.4.1, а не в Android. Вам когда-нибудь удавалось найти исправление?   -  person Jess Patton    schedule 25.08.2015
comment
@JessPatton, пожалуйста, проверьте мой ответ для решения   -  person kousikraj    schedule 27.08.2015
comment
Хорошо, я попробую. Спасибо   -  person Jess Patton    schedule 27.08.2015


Ответы (2)


Я решил эту проблему, следуя этому

Создал новую службу для определения местоположения следующим образом

.service('LocationService', function($q) {
        this.fetch = function() {
            var deferred = $q.defer();
            navigator.geolocation.getCurrentPosition(function(position) {
                deferred.notify('Fetching Location...')
                var coords = {};
                coords.updated = new Date();
                coords.latitude = position.coords.latitude.toFixed(6);
                coords.longitude = position.coords.longitude.toFixed(6);
                coords.altitude = position.coords.altitude + ' m';
                coords.accuracy = position.coords.accuracy + ' m';
                coords.altitudeAccuracy = position.coords.altitudeAccuracy + ' m';
                coords.heading = position.coords.heading + '\u00b0';
                coords.speed = position.coords.speed + ' m/s';
                deferred.resolve(position);
            }, function(err) {
                deferred.reject(err);
            }, {
                timeout: 10000,
                enableHighAccuracy: true
            });
            return deferred.promise;
        }
    })

Тогда мы будем вызывать сервисы как

Location.fetch().then(function(pos){...}) 

в пределах $ionicPlatform.ready(..) или добавьте к кнопке ng-click, чтобы получить местоположение.

Основная причина: я считаю, что когда мы вызываем Location.fetch() или navigator.geolocation.. непосредственно в любых контроллерах, они выполняются при начальной загрузке контроллеров. Это может быть запущено до того, как платформа Cordova/Ionic будет готова, и, следовательно, мы получим дополнительное/нежелательное предупреждение, в котором упоминается, что www/index.html пытается использовать местоположение, как указано в моей проблеме.

person kousikraj    schedule 27.08.2015
comment
да, это решило проблему на ios. - person Jess Patton; 28.08.2015

Добавьте эти строки в config.xml

я исправил эту проблему.

<feature name="Geolocation">
    <param name="ios-package" value="Geolocation" />
</feature>
<gap:plugin name="cordova-plugin-geolocation" source="npm"/>
person saddam    schedule 01.08.2017