google maps api - 错误 - 断言失败:InvalidValueError:在属性latLng中:不是LatLng或LatLngLiteral:在属性lat中:不是数字

时间:2015-10-06 14:59:38

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

我试图让来自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”。 我做错了什么?

此致 赤丹

2 个答案:

答案 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);