如何使用导入的JSON数据创建标记

时间:2014-08-20 17:24:14

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

我正在使用以下代码导入坐标数据(嵌套在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()中提醒站点数据时,它会显示“未定义”。因此,我不是 能够使用这些坐标创建标记。 谁能解释这些东西是如何工作的?我很困惑。

2 个答案:

答案 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});
  }
}