我正在使用以下代码导入坐标数据(嵌套在initialize()中):
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://.../stations.json', true);
xhr.onload = function() {
loadstations(this.responseText)
}
};
xhr.send();
功能如下:
function loadstations(places) {
var temp = JSON.parse(this.responseText);
for (i = 0; i < 470 ; i++) {
stations[i] = new google.maps.LatLng(temp[i+2].Latitude,temp[i+2].Longitude);
}
}
但是当我在initialize()中提醒站点数据时,它会显示“未定义”。因此,我不是 能够使用这些坐标创建标记。 谁能解释这些东西是如何工作的?我很困惑。
答案 0 :(得分:0)
尝试包装匿名函数,创建类
的实例function loadstations(places) {
var temp = JSON.parse(this.responseText);
var i;
for (i = 0; i < temp.length; i++) {
(function(i){
stations[i] = new google.maps.LatLng(temp[i+2].Latitude,temp[i+2].Longitude);
})(i);
}
}
答案 1 :(得分:0)
XmlHttpRequest是异步的。您需要在回调函数可用时使用它们:您没有提供初始化函数,但这应该在您的AJAX请求中返回的LatLng位置添加(默认)标记(假设代码有效)。
var markers = [];
function loadstations(places) {
var temp = JSON.parse(this.responseText);
for (i = 0; i < 470 ; i++) {
stations[i] = new google.maps.LatLng(temp[i+2].Latitude,temp[i+2].Longitude);
markers[i] = new google.maps.Marker({position:stations[i], map:map});
}
}