如何将当前位置添加到Firebase?

时间:2017-05-02 18:14:44

标签: ionic-framework ionic2

在我的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);
        });
      });

    });

  }

我能够获得我当前的位置,如果我双击地图,我可以看到我和标记之间的距离。

1 个答案:

答案 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 });

希望有所帮助