我试图让来自lat,lng的formatted_address但是我遇到错误“断言失败:InvalidValueError:在属性latLng中:不是LatLng或LatLngLiteral:在属性lat中:不是数字” 我使用GMap.js 以下是我的代码: 首先,我获得用户的当前位置
GMaps.geolocate({
success: function (position) {
getSetFormattedAddressLatLng( {
H: position.coords.latitude,
L: position.coords.longitude
});
},
error: function (error) {
notificationService.error('Geolocation failed: ' + error.message);
},
not_supported: function () {
alert("Your browser does not support geolocation");
},
always: function () {
//alert("Done!");
}
});
成功获取用户的当前位置我调用函数getSetFormattedAddressLatLng(),函数如下所示
function getSetFormattedAddressLatLng(latLng) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({
latLng: latLng
}, function (responses) {
if (responses && responses.length > 0) {
//set the formatted_address on originOrDestination
} else {
debugger;
notificationService.error('Cannot determine address at this location.');
}
});
}
但是当我调用geocoder.geocoder()时,我收到错误消息“Assertion failed:InvalidValueError:in property latLng:not latLng or LatLngLiteral:in property lat:not a number”。 我做错了什么?
此致 赤丹
答案 0 :(得分:0)
您将这样的结构传递给geocoder.geocode
构造函数:
{
H: position.coords.latitude,
L: position.coords.longitude
}
哪个有效。试着这样做(我假设position
已经是LatLng对象了):
getSetFormattedAddressLatLng(position);
或可能
getSetFormattedAddressLatLng(position.coords);
最糟糕的是,您可以创建一个新的LatLng对象:
GMaps.geolocate({
success: function (position) {
getSetFormattedAddressLatLng(new google.maps.LatLng(position.coords.latitude, position.coords.longitude));
},
答案 1 :(得分:0)
感谢Duncan的暗示,解决了它。 通过如下创建latLng对象,然后将其传递给geocoder.geocode()
来解决var latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);