【发布时间】:2019-04-16 10:25:29
【问题描述】:
我使用 Google Maps Complex Markers 示例根据 Json 请求在某些地方放置标记。但我收到了这条消息:
未处理的 Promise Rejection: TypeError: undefined is not an object (evalating 'beaches.length')
我不清楚为什么 JSON 不加载。 我是 Javascript/JQuery 的新手,所以我需要帮助。
最初,变量 beaches 是在 initMap() 中输入的:
var beaches = [
['Bondi Beach', -33.890542, 151.274856, 4],
['Coogee Beach', -33.923036, 151.259052, 5],
['Cronulla Beach', -34.028249, 151.157507, 3],
['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
['Maroubra Beach', -33.950198, 151.259302, 1]
];
我改为使用 iniMap() 函数之外的 loadJSON 调用来获取这些数据。
var beaches;
function setup() {
loadJSON("getData.php", gotData, 'jsonp');
}
function gotData(data) {
beaches = data;
}
如您所见,出于安全原因,我使用了“jsonp”。我尝试清除它,但问题仍然存在。
为了呈现数据,执行此调用。问题出现在“beaches.lenght”中:
for (var i = 0; i < beaches.length; i++) {
var beach = beaches[i];
var marker = new google.maps.Marker({
position: {lat: beach[1], lng: beach[2]},
map: map,
shape: shape,
title: beach[0],
zIndex: beach[3]
});
}
如果有任何帮助,我将不胜感激......
【问题讨论】:
-
一切都指向循环运行的标记 before
beaches填充了数据。另外,loadJSON似乎是一个处理函数......?你在用吗? -
loadJSON很可能是异步的。 Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference 的可能重复项 -
谢谢...我会阅读它,我会向您提供一些反馈...谢谢!!
标签: javascript php jquery google-maps google-maps-api-3