将 LatLng 变量从另一个函数传递给 google 映射初始化

passing LatLng variable from another function to google maps initialize

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

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//
});
}

这是google地图初始化。

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' 作为全局变量,试图将 getCoords 函数包含在其他函数中。他们只是似乎不读书。有什么有效的方法吗?

必须调用函数。

将您的函数修改为 return 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);
 }

我能够通过将纬度和经度作为参数传递给 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);
  }