我从API获取JSON数据,需要在整个数据中循环以获得纬度和经度坐标。然后取出那些坐标并将它们存储在一个数组中。
这是我到目前为止所拥有的
$.ajax({
url: 'APIUrl',
dataType:'json',
success:function(locations) {
console.log(locations);
for (var i = 0; i < locations.results.length; i++) {
var latitude = locations.results[i].geocode.lat;
var longitude = locations.results[i].geocode.long;
var name = locations.results[i].name;
var coordinates = [{name: name, latitude: latitude, longitude: longitude, radius: 2}];
bombMap.bubbles(coordinates, {
popupTemplate: function (geo, data) {
return ['<div class="hoverinfo">' + data.name, '</div>'].join('');
}
});
};
},
});
当我在console.log(coordinates);它将所有正确的数据输出为单个数组,但现在我需要将它们全部组合成一个数组。
我尝试了$ .merge和$ .extend没有运气。
JSON输出示例:
Object {results: Array[310], count: 310}
count: 310
results: Array[310]
[0 … 99]
0: Object
address: Object
bucket: "fair"
clientRefId: "53ecdf1a2000008307b96dbf"
description: ""
email: ""
errors: Array[4]
geocode: Object
accuracy: "Medium"
lat: 38.95376968383789
long: -77.44419860839844
__proto__: Object
1: Object
需要将名称和地理编码数据存储到变量中,如此
var = [{
name:
latitude:
longitude: },{
name:
latitude:
longitude: }
];
答案 0 :(得分:2)
想出这个,并且很快就没注意到它。
$.ajax({
url: 'APIUrl',
dataType:'json',
success:function(locations) {
var locals = [];
for (var i = 0; i < locations.results.length; i++) {
var latitude = locations.results[i].geocode.lat;
var longitude = locations.results[i].geocode.long;
var name = locations.results[i].name;
var coordinates = {name: name, latitude: latitude, longitude: longitude, radius: 2};
locals.push(coordinates);
};
bombMap.bubbles(locals, {
popupTemplate: function (geo, data) {
return ['<div class="hoverinfo">' + data.name, '</div>'].join('');
}
});
},
});
需要在for循环之外声明一个空数组,然后使用.push用坐标填充它。应该早点发现那个
答案 1 :(得分:0)
获得一个大阵列:
concatenatedCoordinates = coordinates.reduce(function(a, b){return a.concat(b);});
我希望我理解你的问题。