Google maps Angular2从谷歌地图服务生成getlocation

Google maps Angular2从谷歌地图服务生成getlocation,google-maps,angular,service,components,Google Maps,Angular,Service,Components,我想创建一个可以获取当前位置的服务。 我想把它放到一个服务中,这样我就可以在几个组件中使用这个位置 问题是,当我尝试此方法时,我的组件会在GoogleMaps完成ajax调用之前尝试获取lat和lon 有人能解决这个问题吗 setCurrentPosition() { if ("geolocation" in navigator) { navigator.geolocation.getCurrentPosition((position) => {

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

问题是,当我尝试此方法时,我的组件会在GoogleMaps完成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调用尚未检索到信息。如何修复此问题?

将您的函数编写为可观察函数,并从您的组件订阅此函数,以便此服务返回纬度和经度后,它将获得值。请参阅

您在使用承诺之前是否已经使用过承诺。该承诺将在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);
                });
            }
        });
}

以前从未使用过观测值,所以我将搜索is。您能帮我从我的问题中举出一个例子吗?添加了一个新的ans。你可以检查一下。如果你不真正理解你的解决方案,它就会出错。我在Angular1中使用了承诺,从什么时候开始,我们在angular2中也使用了承诺?我们在angular2中也有承诺,现在它在}上给出了错误);上面说,@remyaJI我也在使用Typescript,这是个问题吗@雷米耶