Google maps Angular2从谷歌地图服务生成getlocation
我想创建一个可以获取当前位置的服务。 我想把它放到一个服务中,这样我就可以在几个组件中使用这个位置 问题是,当我尝试此方法时,我的组件会在GoogleMaps完成ajax调用之前尝试获取lat和lon 有人能解决这个问题吗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) => {
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,这是个问题吗@雷米耶