0

我收到以下错误,似乎无法弄清楚为什么嵌套在某些 json 中的 google.maps.latLng 对象会导致错误,特别是:

错误:属性值无效:(-19.240542583932452、148.15044705312494)

有谁知道为什么这段代码会导致错误?当我 console.log json.markers[n].latLng firebug 声明它是一个 google.maps.latLng 对象时,尽管当它作为错误的一部分包含时,它清楚地表示为 .toString() 输出(不确定是否这仅仅是因为错误消息是否为字符串)。

我在我一直在研究的 jQuery Google Maps V3 API 插件上使用以下两种方法。这是一些片段,我没有包含完整的代码,因为它只会使帖子混乱。为了清楚起见,我硬编码了一些 json,在我完成的插件中,它将通过 ajax 调用检索。

在我的插件的 init 方法中:

    // Request list of markers and return the json object
var markers = methods.requestMarkers();

// Place the markers
methods.placeMarkers(markers);

作为单独的方法:

requestMarkers : function () {

    return {"markers":[{"id":["7"],"latLng":[new google.maps.LatLng(-19.240542583932452, 148.15044705312494)]},{"id":["8"],"latLng":[new google.maps.LatLng(-28.0497654, 153.43591700000002)]}]}
},

placeMarkers : function ( json ) {

    if (json.markers.length > 0) {

        var markers = new Array();

        for(var n=0; n < json.markers.length; n++){ 

            markers[n] = new google.maps.Marker({
                map         : methods.map,
                position    : json.markers[n].latLng
            });
        }
    }
}

完整的代码可以在 Github 上找到,并且仍然是 wip。

4

1 回答 1

1

调用 LatLng 将始终返回一个 LatLng 对象,即使提供了错误的参数。当前参数是一个包含 1 个 LatLng 对象的数组,因此您必须将位置设置为

json.markers[n].latLng[0] 

与 github 代码相关:
requestMarkers 函数(使用 AJAX 代码)不会返回任何内容,因此标记不会包含 json 响应。placeMarkers()在里面打电话done()

requestMarkers : function () {

$.ajax({
type: "get",
url: methods.options.ASSOCIATED,
dataType: "json"
}).done(function( json ) {
if (json.markers.length > 0) {
methods.placeMarkers(json);
}
});


     }
于 2012-08-26T11:09:57.887 回答