【问题标题】:Get GeoLocation and Subscribe to Service Angular2+获取地理位置并订阅服务 Angular2+
【发布时间】:2017-07-18 14:44:16
【问题描述】:

我正在使用 google map api 获取用户的地理位置,检索 lat & lng 信息。我想将 lat、lng 传递给 Web api 服务并获取周围地址的 json 输出。为了从 web api 服务获取数据,我使用了可以正常工作的 angular2 代码。

详细代码如下:

data.service.ts file:
fetchData(lat: number, lng: number) {
    return this._http.get('/url?lat=' + lat + '&lon=' + lng)
        .map((response: Response) => response.json());
}


app.component.ts

ngOnInit(){

var lat;
    var lng;

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function (position) {
            lat = position.coords.latitude;
            lng = position.coords.longitude;

        });

if ((lat != null) && (lng != null)) {


this._dataService.fetchData(lat, lng).subscribe(res => {
        this.dObj = res;
    });
}
}

上面的代码不起作用。我试图玩弄代码。 fetchData() 之前被调用(我相信因为它是异步的)并且不知何故我无法将 lat, lng 传递给服务。

有没有合适的方法来实现这一点?还有什么其他方法可以做到这一点?是否有任何 angular2 库可以做类似的事情,我可以使用?请帮忙

【问题讨论】:

    标签: javascript angular google-maps


    【解决方案1】:

    我相信你应该把所有的逻辑放在getCurrentPosition() 的回调函数中。事实上,HTML5 地理位置是异步的,所以看起来您尝试在回调发生之前检索 latlng

    试试这个

    var lat;
    var lng;
    
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition( position => {
            lat = position.coords.latitude;
            lng = position.coords.longitude;
    
            if ((lat != null) && (lng != null)) {
    
                this._dataService.fetchData(lat, lng).subscribe(res => {
                    this.dObj = res;
                });
            }
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-12
      • 1970-01-01
      • 2017-04-13
      • 2016-06-03
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      相关资源
      最近更新 更多