【问题标题】:Reading Array of Json [duplicate]读取Json数组[重复]
【发布时间】:2020-03-07 20:06:17
【问题描述】:

我创建了一个函数,该函数尝试根据地址获取 lat long,然后,我希望这些函数在控制台上打印

如何获取坐标值....我是否以正确的方式进行操作?请帮忙理解一下。

coords = getLocationCoords("Ambala,Haryana,India,134003");
console.log(coords)

function getLocationCoords(fa){

    var coords = [];

    $.get(location.protocol + '//nominatim.openstreetmap.org/search?format=json&q='+fa, function(data){

        coords['lat'] = JSON.parse(data[0].lat);
        coords['lon'] = JSON.parse(data[0].lon);

    });

    return coords;
}//getLocationCoords

【问题讨论】:

  • 请添加语言标签
  • 首先,您需要删除 JSON.parse() 调用:coords['lat'] = data[0].lat; 等。然后您更大的问题是 $.get() 调用是异步的,因此您需要更改代码以与回调一起正常工作,或实现承诺。有关详细信息,请参阅副本

标签: javascript jquery arrays json


【解决方案1】:

您不能将坐标作为“返回值”,因为没有什么可以返回。也就是说,在调用某个处理程序之前,什么都不会返回,这可能是 0.2 秒后,也可能是 3 秒后。但是如果处理程序返回它,你仍然不会得到它,因为分配是立即发生的。为了解决这个问题,你也可以直接把它设为“promise”,这样当值准备好后,你可以then()它,然后处理这个值,如下:

getLocationCoords("Ambala,Haryana,India,134003")
  .then(data => {
    coords = data.map(loc =>
      ({
        lat: Number(loc.lat),
        lon: Number(loc.lon)
      })
    );
    console.log("GOT IT", coords);
  });

function getLocationCoords(fa) {
  return $.get(location.protocol + '//nominatim.openstreetmap.org/search?format=json&q=' + fa)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

【讨论】:

  • 感谢 eipione0 的回复...如何在“.then”大括号之后获取坐标值...我需要将 lat long 的值放入 var map = L.map(' map').setView([30.416667,77.166667], 3);
  • 你能再创建一个问题吗...一个问题中不应该有两个问题,并且让它越来越长
猜你喜欢
  • 2019-09-20
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 2021-08-08
  • 2016-09-13
相关资源
最近更新 更多