【问题标题】:Given longitude and latitude, how can I get the code and name of a country?给定经度和纬度,我怎样才能得到一个国家的代码和名称?
【发布时间】:2021-10-27 18:05:04
【问题描述】:

给定经度和纬度,我怎样才能得到一个国家的代码和名称?

从这个source我得到了以下国家经纬度对应的数据。如何获取某些坐标所在国家的名称和代码?

[
  {
    "countryCode": "AD",
    "latitude": "42.546245",
    "longitude": "1.601554",
    "countryName": "Andorra"
  },
  {
    "countryCode": "AE",
    "latitude": "23.424076",
    "longitude": "53.847818",
    "countryName": "United Arab Emirates"
  },
  {
    "countryCode": "AF",
    "latitude": "33.93911",
    "longitude": "67.709953",
    "countryName": "Afghanistan"
  },
  {
    "countryCode": "AG",
    "latitude": "17.060816",
    "longitude": "-61.796428",
    "countryName": "Antigua and Barbuda"
  },
  {
    "countryCode": "AI",
    "latitude": "18.220554",
    "longitude": "-63.068615",
    "countryName": "Anguilla"
  },
  {
    "countryCode": "AL",
    "latitude": "41.153332",
    "longitude": "20.168331",
    "countryName": "Albania"
  },
  {
    "countryCode": "AM",
    "latitude": "40.069099",
    "longitude": "45.038189",
    "countryName": "Armenia"
  },
  {
    "countryCode": "AN",
    "latitude": "12.226079",
    "longitude": "-69.060087",
    "countryName": "Netherlands Antilles"
  },
  {
    "countryCode": "AO",
    "latitude": "-11.202692",
    "longitude": "17.873887",
    "countryName": "Angola"
  },
  ...
]

完整数据集https://jsfiddle.net/kmznxrhe/

例如,给定以下坐标纬度:12.4157952,经度:-86.8777984,如何获取这些坐标所在国家的名称和代码?

我不分享示例,因为我真的不知道如何完成这项任务

提前致谢

【问题讨论】:

标签: javascript geolocation


【解决方案1】:

我得到了以下国家经纬度对应的数据。

因此,您的数据集仅包含该国家/地区内部的单个坐标,而没有提供有关该国家/地区边界的任何信息。

如何获得这些坐标所在国家的名称和代码?

此过程称为反向地理编码。有一些 API 可用于此任务,例如OSM 的Nominatim API

查询您提供的坐标的示例 URL 作为示例: https://nominatim.openstreetmap.org/reverse?lat=12.4157952&lon=-86.8777984&zoom=3&format=json

【讨论】:

    【解决方案2】:

    有了这个数据集,您唯一能做的就是通过特定的纬度和经度

    获取国家/地区

    const data = [
      {
        "countryCode": "country",
        "latitude": "latitude",
        "longitude": "longitude",
        "countryName": "name"
      },
      {
        "countryCode": "NR",
        "latitude": "-0.522778",
        "longitude": "166.931503",
        "countryName": "Nauru"
      },
      {
        "countryCode": "ZW",
        "latitude": "-19.015438",
        "longitude": "29.154857",
        "countryName": "Zimbabwe"
      }
    ]
    
    let myCountry = data.find(country => country.latitude === "-19.015438" && country.longitude === "29.154857")
    
    console.log(myCountry)
    
    //output
    //{
    //  "countryCode": "ZW",
    //  "latitude": "-19.015438",
    //  "longitude": "29.154857",
    //  "countryName": "Zimbabwe"
    //}

    但你不能检查覆盖率(例如:12.4157952,-86.8777984),我建议这样做this post

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      相关资源
      最近更新 更多