在我的Ionic 2应用程序中,我能够在地图上看到我当前的位置,但如何将位置(经度和纬度)添加到Firebase?
initMap(): Promise<any> {
this.mapInitialised = true;
return new Promise((resolve) => {
Geolocation.getCurrentPosition().then((position) => {
let latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
//let latLng = new google.maps.LatLng(40.713744, -74.009056);
let mapOptions = {
center: latLng,
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
this.map = new google.maps.Map(this.mapElement, mapOptions);
resolve(true);
google.maps.event.addListener(this.map, 'click', (event) => {
this.clearMarkers();
let geocoder = new google.maps.Geocoder;
let infowindow = new google.maps.InfoWindow;
let distanceToYou = this.getDistanceBetweenPoints(
event.latLng,
position,
'miles'
).toFixed(2);
this.geocodeLatLng(event.latLng,geocoder,infowindow,distanceToYou);
});
});
});
}
我能够获得我当前的位置,如果我双击地图,我可以看到我和标记之间的距离。
答案 0 :(得分:1)
是的,这是可能的。但是,由于双击地图缩放它,我将使用press
。但是如果你在信息窗口上设置一个带有“保存位置”文本或类似内容的按钮来调用保存功能会更好。
您的HTML
<div #mapID (press)="saveLocation()">
您的.TS
import * as firebase from 'firebase';
public lat;
public long;
initMap(): Promise<any> {
this.mapInitialised = true;
return new Promise((resolve) => {
Geolocation.getCurrentPosition().then((position) => {
this.lat = position.coords.latitude;
this.long = position.coords.longitude;
// YOUR CODE CONTINUES HERE...
});
});
});
saveLocation(){
firebase.database().ref('PATH/YOU/WANT/TO/SAVE').update({
lat: this.lat,
long: this.long
}).then(res =>{
// THE LOCATION IS SAVED, DO YOUR STUFF
})
}
像这样您可以保存位置,使用update()
代替set()
,这样您就不会订阅其他数据。
如果您想要检索该数据,请使用firebase.database().ref('PATH/YOU'VE/SAVED').once('value', snapshot =>{ // CODE });
希望有所帮助