将LatLng变量从另一个函数传递到google maps initialize

时间:2017-07-26 18:08:25

标签: javascript google-maps firebase firebase-realtime-database latitude-longitude

我有一个firebase数据库,我可以在其中检索纬度和经度值并将其包装为var coords。

function getCoords() {
    var place_data= firebase.database().ref("/place/name");

    place_data.once('value').then(function(snapshot) {

    var longitude = snapshot.child("Event_long").val();
    var latitude = snapshot.child("Event_lat").val();
    var coords = new google.maps.LatLng(latitude, longitude);
    alert(coords);  //i get (43.6672568, -79.4000838) as alert//
});
}
这是谷歌地图初始化。

function initializeMap() {
 var iconBase = {url:'/images/wing.pin.png'};


 var map = new google.maps.Map(document.getElementById('map'), {
 zoom: 15,
 center: coords,
 mapTypeId: 'satellite'
 });

 marker = new google.maps.Marker({
 icon: iconBase,
 map: map,
 draggable: true,
 animation: google.maps.Animation.DROP,
 position: coords
 });
 marker.addListener('click', toggleBounce);
 }

我只需要函数initializeMap来读取var' coords'。我已经尝试过使用& coords'作为globalvariable,试图在其他函数中包含getCoords函数。他们似乎没有阅读。有效的方法吗?

2 个答案:

答案 0 :(得分:0)

必须调用函数。

修改你的函数以将lat / long返回给调用者...

function getCoords() {
    var place_data= firebase.database().ref("/place/name");

    place_data.once('value').then(function(snapshot) {

    var longitude = snapshot.child("Event_long").val();
    var latitude = snapshot.child("Event_lat").val();
    return new google.maps.LatLng(latitude, longitude); //modified this line
});
}

在这里称呼它......

function initializeMap() {
 var iconBase = {url:'/images/wing.pin.png'};
 var coords = getCoords(); // called here

 var map = new google.maps.Map(document.getElementById('map'), {
 zoom: 15,
 center: coords,
 mapTypeId: 'satellite'
 });

 marker = new google.maps.Marker({
 icon: iconBase,
 map: map,
 draggable: true,
 animation: google.maps.Animation.DROP,
 position: coords
 });
 marker.addListener('click', toggleBounce);
 }

答案 1 :(得分:0)

我能够通过将纬度和经度作为参数传递给initializeMap函数得到我想要的东西,如下所示:

function getCoords() {
var plae_data= firebase.database().ref("/place/name");

place_data.once('value').then(function(snapshot) {

 var longitude = snapshot.child("Event_long").val();
 var latitude = snapshot.child("Event_lat").val();
 var coords = new google.maps.LatLng(latitude, longitude);

 initializeMap(latitude, longitude);
 });

 }


  //Load Map in Summary Tab//
  function initializeMap(latitude,longitude) {
  var iconBase = {url:'/images/wing.pin.png'};


  var map = new google.maps.Map(document.getElementById('map'), {
  zoom: 17,
  center:  new google.maps.LatLng(latitude, longitude),
  mapTypeId: 'roadmap'
  });

  marker = new google.maps.Marker({
  icon: iconBase,
  map: map,
  draggable: true,
  animation: google.maps.Animation.DROP,
  position:  new google.maps.LatLng(latitude, longitude)
  });
  marker.addListener('click', toggleBounce);
  }