【问题标题】:Geolocation inside promise [ionic 2]承诺中的地理位置 [ionic 2]
【发布时间】:2016-06-01 00:15:37
【问题描述】:

我们使用 Ionic 2 在 Promise 中实现了地理定位调用。它在 iOS 和旧版本的 Android 上按预期工作。

我们在 app.js 文件中执行地理定位调用,并在第一个视图中解决它。

在 Android Marshmallow(我们这里有问题的平台)下,我们会收到与权限相关的错误,直到用户接受权限对话框。到目前为止,一切都很好。但是,一旦用户接受了权限,错误就会继续发生,而是超时错误。

我们希望插件在被用户授予权限后调用时返回坐标,而不是返回超时错误。如果应用程序被强制关闭然后再次打开,则不会发生这种情况,因为插件会按预期返回坐标。

这是一个已知问题吗?有已知的解决方法吗? 想法?

【问题讨论】:

    标签: android geolocation angular ionic2


    【解决方案1】:

    是的,我做到了:)

    //geolocation-service.js(提供者)

    import {Injectable} from 'angular2/core';
    
    @Injectable()
    export class GeolocationService {
        constructor(){
            this.coords = null;
        }
    
        // Si da timeout, mostrar un error visual en el app
        // Si tocas ese error (tap), reintenta cargar datos
        geolocate() {
            var geoOptions = {timeout: 15000, enableHighAccuracy: true};
    
            if (this.coords) {
                return Promise.resolve(this.coords);
            }
    
            return new Promise((resolve, reject) => {
                navigator.geolocation.getCurrentPosition(
                    (position) => {
                        resolve(position);
                    }, 
                    (error) => {
                        reject(error);
                    }, geoOptions
                );  
            })
        }
        getCoords() {
            return this.geolocate().then(
                position => {
                    return position;
                }).then(error => {
                    return error;
                }
            );
        }
    }
    

    然后你可以使用(在platform.ready()中!):

    this.geolocationService.geolocate();
    this.geolocationService.getCoords().then(
        (position) => {
             //use you coords here   
        }, (error) => {}
    );
    

    【讨论】:

    • 我得到错误 TS2339 的任何想法:“GeoLocationService”类型上不存在属性“坐标”。 ?
    • 另外,如果我尝试使用 Geolocation 插件,我会得到:错误 TS2346:提供的参数与调用目标的任何签名都不匹配。
    猜你喜欢
    • 1970-01-01
    • 2017-11-07
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 2017-08-19
    • 2023-03-09
    • 2016-10-25
    相关资源
    最近更新 更多