www / index.html想要使用您当前的位置 - Ionic Framework

时间:2015-08-15 11:26:43

标签: cordova geolocation ionic-framework cordova-plugins ngcordova

我搜索了与基于GeoLocation的警报问题相关的各种论坛和帖子;出于某种原因,我的案例中没有任何技术可行。

在我的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想要使用您的位置

如果有人可以提供帮助,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

我按照

解决了这个问题

按如下方式为位置创建新服务

.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正在尝试使用位置作为我的问题所述。

答案 1 :(得分:0)

在config.xml中添加这些行

我已经解决了这个问题。

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