Angular2从googlemaps服务构建getlocation

时间:2017-04-20 11:05:25

标签: google-maps angular service components

我想创建一个服务,我可以获取当前位置。 我想把它放在一个服务中,这样我就可以在几个组件中使用这个位置。

问题在于,当我尝试这个时,我的组件尝试在google maps完成ajax调用之前获取lat和lon。

有人有解决此问题的方法吗?

setCurrentPosition() {

        if ("geolocation" in navigator) {
          navigator.geolocation.getCurrentPosition((position) => {
            this.latitude = position.coords.latitude;
            this.longitude = position.coords.longitude;
            this.zoom = 12;

            return this.latitude, this.longitude ;
          });
        }
      }

这就是我如何获得我在服务中的位置。 我的组件想要很快使用纬度和经度,因为ajax调用hasn`t jet检索信息。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

在你甚至可以使用承诺之前,你是否曾使用过承诺?当api得到lat和lng时,承诺将解决。你可以打电话给api

this.setCurrentPosition().then((response)=>{
  this.lat = response.latitude;
 this.lng = response.longitude;
}); 

         setCurrentPosition() {
return new Promise((resolve, reject) => {
        if ("geolocation" in navigator) {
            navigator.geolocation.getCurrentPosition((position) => {
                    let res = {
                        latitude: position.coords.latitude,
                        longitude:position.coords.latitude
                    }
                    resolve(res);
                });
            }
        });
}

答案 1 :(得分:0)

将您的函数编写为可观察的amd,从您的组件订阅它,这样一旦该服务返回纬度和经度,它就会获得值。请参阅https://angular-2-training-book.rangle.io/handout/observables/using_observables.html