【问题标题】:how to get latitude longitude from function and send it to new google.maps.LatLng( latitude ,longitude ) javascript如何从函数中获取纬度经度并将其发送到新的 google.maps.LatLng( latitude ,longitude ) javascript
【发布时间】:2018-02-07 13:17:13
【问题描述】:

我正在使用这个脚本从地址中获取纬度经度,

var latitude="";
var longitude ="";


function codeAddress(address) {

  var geocoder = new google.maps.Geocoder();
  geocoder.geocode( { 'address': address}, function(results, status) {
    if (status == 'OK') {


    latitude = results[0].geometry.location.lat();
    longitude = results[0].geometry.location.lng();
    //  myAfterFunction();
    //  console.log(this.latitude);

    } else {
      alert('Geocode was not successful for the following reason: ' + status);
    }
  });

}

var center = new google.maps.LatLng(latitude,longitude );

我的问题是我无法从这个函数中获取纬度和经度值,我尝试使用另一个函数

function myAfterFunction(){
  console.log(latitude);
}

所以我的问题是如何从我的函数中获取纬度和经度?谢谢

【问题讨论】:

  • 你遇到了什么错误?
  • 当我写 console.log(latitude);控制台.log(经度);在函数之外,它说未定义未定义

标签: javascript angular google-maps ionic-framework


【解决方案1】:

根据您的标题(我可能错了,您应该清楚地指出您的代码在问题中的作用),听起来您已成功获取纬度和经度,但随后未能将其发送到地图。

问题可能在于以下事实:

访问地理编码服务是异步的,因为谷歌地图 API 需要调用外部服务器。为此,你 完成后需要传递一个回调方法来执行 要求。此回调方法处理结果。请注意, 地理编码器可能会返回多个结果。 (API docs)

这种异步特性意味着,当您的回调函数 (function(results, status) {...})) 正在等待响应时,您也在执行这一行:

var center = new google.maps.LatLng(latitude,longitude );

但是,当然,纬度和经度还没有定义,因为我们还没有回应。

要明确看到这一点,请将定义 center 的代码替换为 alert() 或 console.log(),然后在回调函数中放置另一个代码,看看首先触发了什么:

function codeAddress(address) {
  var geocoder = new google.maps.Geocoder();
  geocoder.geocode( { 'address': address}, function(results, status) {
    console.log("Response recieved");
    }
  });

}
console.log("Tried to use response");

最简单的解决方案可能是将需要此特定经度和纬度的代码放在回调函数中,以便在您得到响应并扩展纬度和经度之前它不会执行。

【讨论】:

  • 感谢您的回复,但即使我在我的函数中放置了 var center = new google.maps.LatLng(latitude,longitude),我稍后也会需要这个中心值,因为我的脚本很长
  • 如果你想使用这些变量(经度和纬度),你必须在回调函数中使用它,除非你有一个方法来确定回调何时完成(也许一个函数检查每个第二看看是否定义了这些变量),但是将所有长脚本放入一个函数并从回调函数中调用该函数应该相当容易(本质上是一种视觉上不同的方式来放置需要纬度的所有代码和回调函数中的经度)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-18
  • 1970-01-01
相关资源
最近更新 更多