如何根据IP地址获取用户机器的准确经纬度

时间:2015-06-20 06:16:37

标签: php curl geolocation latitude-longitude

在我的基于PHP的应用程序中,我希望在用户根据IP地址登录webapp时捕获用户计算机的位置。

我遵循了这个方法:

session.query(Table).filter(Table.user_id.in_([1,4])).\
filter(Table.created.in_(session.query(func.max(Table.created)).\
filter(Table.user_id.in_([1,4])).group_by(Table.user_id).subquery()))

我得到纬度和经度值,但这些并不准确,相反,它们是绝对的。在响应中我得到了这样的JSON:

subquery = session.query(func.max(Table.created)).\
           filter(Table.user_id.in_([1,4])).\
           group_by(Table.user_id).\
           subquery()

session.query(Table).filter(Table.user_id.in_([1,4])).filter(Table.created.in_(subq))

没有城市没有拉链。有没有更好的API来获得所需的确切内容?提前感谢您的回复。

3 个答案:

答案 0 :(得分:1)

还有很多其他服务。你可能想看看这个: Longitude and latitude value from IP address

答案 1 :(得分:0)

您可以使用MaxMind's GeoIP服务/数据库,它有两个版本:GeoIP2和(Legacy)GeoIP。它们提供免费的数据库和商业数据库,后者更准确。他们有GeoIP2 PHP SDK on GithubLegacy GeoIP is included with PHP

MaxMind GeoIP2 Demo Page允许您输入IP地址并取回以下数据:

  1. 坐标(纬度/经度)
  2. 国家代码(2个字母的国家代码)
  3. ISP
  4. 位置(城市,州,国家,大陆)
  5. Metro Code
  6. 组织
  7. 邮政编码(例如邮政编码)
  8. 链接:

    1. MaxMind's GeoIP2 and Legacy GeoIP product page
    2. GeoIP2 demo page (enter IPs and get results)
    3. GeoIP2-php SDK on Github
    4. GeoIP on PHP.net

答案 2 :(得分:0)

瑞奇,您可以使用IP2Location Geolocation服务或数据库。它有两个版本:a)commercial和b)LITE。他们在许多编程语言中都有developer页编程API。

有一个在线demo页面允许您使用单个IP地址获取以下数据:

  1. 位置(国家,州,城市)
  2. 坐标(纬度,经度)
  3. 高程
  4. 邮政编码
  5. 电话(国际直拨电话和区号)
  6. 域名
  7. ISP名称
  8. 时区
  9. 连接速度
  10. 气象站(气象站名称和代码)
  11. 移动运营商(mnc,mcc,brand)
  12. 使用类型