我正在尝试使用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:
但Google Maps API的响应确实包含了所需的信息:
我知道API是异步的,但我不太了解Meteor,以了解如何在API返回数据后检索数据。
答案 0 :(得分:1)
提供的codeAddress
函数没有任何问题,因为results[0].geometry.location
对象的lat / lng值未在控制台中打印,原因是results[0].geometry.location
LatLng type
而这又不会公开lat
和lng
属性。
要打印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());
});