google.maps.marker位置错误(在json中嵌套google.maps.latLng对象)

时间:2012-08-26 07:17:35

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

我收到以下错误,似乎无法弄清楚为什么嵌套在某些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
            });
        }
    }
}

可以找到完整的代码on Github and is still wip.

1 个答案:

答案 0 :(得分:1)

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

json.markers[n].latLng[0] 

与github-code相关:
requestMarkers-function(使用AJAX代码)不会返回任何内容,因此标记不会包含json-response。在placeMarkers()

内拨打done()
requestMarkers : function () {

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


     }