【发布时间】:2020-04-09 19:55:59
【问题描述】:
我正在使用 opengeodata 和一些公司内部 API 进行项目。因此,我在这里使用的代码略有改变。
首先,我使用 Opencagedata Javascript API 从地址中获取 lat/lng 坐标。
<script>
function geocode(query) {
$.ajax({
url: 'https://api.opencagedata.com/geocode/v1/json',
method: 'GET',
data: {
'key': 'MyKey',
'q': query,
'no_annotations': 1
},
dataType: 'json',
statusCode: {
200: function(response){ // success
var lat = response.results[0]['geometry']['lat'];
var lng = response.results[0]['geometry']['lng'];
$('#geo_result').text(lat + ' , ' + lng);
之后,我使用另一个内部 API 来获取有关此位置周围地点的一些信息。让我们称它们为 POI。
获得这些 POI 后,我使用 splice 将三个最近的 POI 过滤到 lat/lng 坐标并过滤一些特定关键字。
var radius = 1.5;
var POI = [];
var apiCall = $.get("CoorpAPI/" + radius + "/around/" + lat + "," + lng);
apiCall.done(function(result) {
var myLoc = result.filter(function(loc) {
return loc.id.substr(0, 3) != 'keyword';
});
$.each(myLoc, function(n, loc) {
POI.push(loc.id)
})
var top3 = POI.slice(0,3);
console.log(top3);
现在我想针对返回位置信息的第二个 API 运行这三个“top3” POI [“AB1234”、“BC2345”、“CD3456”]。
这些信息应该被写入到第二个第二维的同一个数组中。
最后我想要的东西是这样的:
[
0: AB1234
Location Information: A
Location Information: B
1: CD2345
Location Information: C
Location Information: D
...
]
我猜循环看起来应该有点像这样,但我不确定如何调用 API 并从“top3”位置和 api 返回的位置信息中创建一个二维数组:
for (var i = 0; i < top3.length; i++) {
var apiCall_2 = $.get("CoorpAPI_2"+top3[i]);
// ???
}
【问题讨论】:
-
最后一个 sn-p
})出现语法错误,不匹配。 JS 中实际上不存在二维数组,但存在嵌套数组,所以是的,您可以将 $.get 的输出存储在目标数组中的循环内,因此只需将结果附加到二维数组即可。
标签: javascript ajax for-loop geo