Meteor和Google Maps API:地理编码无效

时间:2015-12-28 20:38:06

标签: asynchronous meteor google-maps-api-3

我正在尝试使用Meteor模板中的Google Maps API对物理地址进行地理编码。

这是我用来运行地理编码器的功能:

codeAddress = function(address, callback) {
  var geocoder = new google.maps.Geocoder();
  geocoder.geocode({
    'address': address
  }, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      callback(results[0].geometry.location);
    } else {
      callback(0);
    }
  });
}

使用静态地址进行测试,这是我用来调用codeAddress()的函数:

codeAddress("3100 East Fletcher Avenue, Tampa, FL, United States", function(result) {
  console.log(result);
});

以下是问题

控制台输出不返回Lat和Long:

Console Output

但Google Maps API的响应确实包含了所需的信息:

HTTP Response

我知道API是异步的,但我不太了解Meteor,以了解如何在API返回数据后检索数据。

1 个答案:

答案 0 :(得分:1)

提供的codeAddress函数没有任何问题,因为results[0].geometry.location对象的lat / lng值未在控制台中打印,原因是results[0].geometry.location LatLng type而这又不会公开latlng属性。

要打印LatLng class的值表示,您可以使用以下功能:

  • toString() - 转换为字符串表示。
  • toUrlValue(precision?:number) - 返回表格" lat,lng"的字符串对于这个LatLng。我们默认将lat / lng值舍入到6位小数。
  • lat()lng() - 以度为单位返回纬度或经度

示例

codeAddress("3100 East Fletcher Avenue, Tampa, FL, United States", function (result) {
    console.log(result.toString());
  });