函数始终返回undefined

时间:2015-12-24 16:11:54

标签: javascript angularjs google-maps

我正在尝试使用此功能获取城市的纬度:

GridBagLayout

此功能(例如:function get_lat(city) { var geocoder = new google.maps.Geocoder(); geocoder.geocode({ "address": city }, function(results, status) { if (status == google.maps.GeocoderStatus.OK && results.length > 0) { var location = results[0].geometry.location; return location.lat(); } else { } }); } 始终返回get_lat("Amsterdam"))。地理编码器本身确实有效:在undefined行之前添加console.log(location.lat())输出正确的纬度。

有谁知道我做错了什么?

更新

我如何在地图中使用纬度?

return

在首次访问时无效(它位于Ionic应用程序中)。刷新后确实有效。

1 个答案:

答案 0 :(得分:1)

您将从function(results, status)内的匿名get_lat返回,而不是从get_lat返回。

由于您要从谷歌的回调中检索纬度,您可以做的是向get_lat添加第二个参数(另一个回调函数),一旦您从谷歌的服务中检索纬度,就会返回纬度:

function get_lat(city, callback) {
  var geocoder = new google.maps.Geocoder();
  geocoder.geocode({
    "address": city
  }, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK && results.length > 0) {
      var location = results[0].geometry.location;
      callback(location.lat()); // return lat
    } else {
      callback(SOME_ERROR_VALUE); // return error
    }
  });
}

你会像以下一样使用它:

get_lat('Amsterdam', function(lat)) {
    console.log('here is my lat: ' + lat);
});