在我的离子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);
});
});
});
}
我能够获得当前的位置,如果我双击地图,我可以看到我和标记之间的距离。
是的。但是,由于双击地图将其缩放,我将使用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 });
希望它有帮助