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