【问题标题】:find location using device IP address使用设备 IP 地址查找位置
【发布时间】:2018-01-05 09:08:30
【问题描述】:

我正在使用 ionic2。

我使用 Cordova plugin add cordova-plugin-networkinterface 找到了我的设备 IP 地址。

这是我的IP地址

192.168.1.104

如何使用设备 IPAddress 查找位置?

请多多指教,

谢谢

【问题讨论】:

  • 您无法使用内部 IP 找到您的位置。你需要知道你的外部 IP
  • 感谢您的回复。我怎样才能获得外部IP。
  • 在这种情况下只能从您的/a 服务器。
  • 我想你可以使用this API端点发出请求,这将返回你的外部IP。
  • @TrishantPahwa 我有一个疑问外部 IP 也是客户端 IP 地址?

标签: javascript ionic-framework ionic2 cordova-plugins


【解决方案1】:

只有外部 IP 地址才有机会在现实世界中找到您。要从 JavaScript 获取它,您需要一个友好的网站,该网站为其服务提供易于使用的 API。

geolocation ip API 上快速搜索会发现像 http://ip-api.com/ 这样的地方,它提供了公共 IP 地址和您的位置。请注意,IP 地址的“解析”可能非常粗糙。您付费购买的 API 可能会做得更好。

要手动获取您家的公共 IP 地址,您可以按照路由器标签上的说明登录路由器。其中某处是显示您的公共 IP 地址的菜单,尽管他们可能将其称为 WAN 地址。如果你的密码是像“密码”这样愚蠢的东西,现在是时候改变它了。我喜欢把它写在一小块胶带上,然后把它大部分放在路由器上,不覆盖任何洞。

【讨论】:

    【解决方案2】:

    您可以使用 ExternalIp 获取位置,我会使用 freegeoip.net,因此调用此 URL 您可以获取 JSON 对象,如下所示:

    输出:

    {
      "ip": "116.12.250.1",
      "country_code": "SG",
      "country_name": "Singapore",
      "region_code": "01",
      "region_name": "Central Singapore Community Development Council",
      "city": "Singapore",
      "zip_code": "",
      "time_zone": "Asia/Singapore",
      "latitude": 1.2931,
      "longitude": 103.8558,
      "metro_code": 0
    }
    

    限制:

    每小时 10,000 个请求

    位置信息(根据您的原始问题)

    你可以使用Geobytes

    用法:

    $.getJSON('http://gd.geobytes.com/GetCityDetails?callback=?', function(data) {
      console.log(JSON.stringify(data, null, 2));
    });
    

    返回:

    {
      "geobytesforwarderfor": "",
      "geobytesremoteip": "116.12.250.1",
      "geobytesipaddress": "116.12.250.1",
      "geobytescertainty": "99",
      "geobytesinternet": "SA",
      "geobytescountry": "Saudi Arabia",
      "geobytesregionlocationcode": "SASH",
      "geobytesregion": "Ash Sharqiyah",
      "geobytescode": "SH",
      "geobyteslocationcode": "SASHJUBA",
      "geobytescity": "Jubail",
      "geobytescityid": "13793",
      "geobytesfqcn": "Jubail, SH, Saudi Arabia",
      "geobyteslatitude": "27.004999",
      "geobyteslongitude": "49.660999",
      "geobytescapital": "Riyadh ",
      "geobytestimezone": "+03:00",
      "geobytesnationalitysingular": "Saudi Arabian ",
      "geobytespopulation": "22757092",
      "geobytesnationalityplural": "Saudis",
      "geobytesmapreference": "Middle East ",
      "geobytescurrency": "Saudi Riyal",
      "geobytescurrencycode": "SAR",
      "geobytestitle": "Saudi Arabia"
    }
    

    限制

    • 每小时 16,384 个请求
    • 可以返回错误的位置
    • 免费计划没有 SSL(https)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 2018-05-19
      • 2013-11-15
      • 2022-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多