【问题标题】:Best way to get geo-location in Java [closed]在 Java 中获取地理位置的最佳方法 [关闭]
【发布时间】:2010-11-27 19:14:08
【问题描述】:

在 Java 中获取地理位置的最佳方式是什么(如果可能,免费)?

更新:不是来自 GPS 设备。基本上 Firefox 3.5 / HTML 5 是如何做到的

【问题讨论】:

  • 你到底是什么意思?您是想从 GPS 设备检索坐标,还是根据 IP 地址查找位置,或者在数据库或其他东西中查找某些目的地的坐标?
  • 这适用于需要离线执行的桌面应用程序吗?还是可以使用网络服务?

标签: java geolocation


【解决方案1】:

如果您想了解 Firefox 3.5(或 Google Chrome)如何获取地理位置,请看这里:How Google/Firefox Geolocation API works

基本上,Firefox 3.5(以及 Chrome)所做的是获取附近 Wi-Fi 网络的列表,并使用 JSON 将该列表发送到 Google 网络服务,然后该服务将返回大致坐标。

顺便说一下,这个过程没有涉及Java。要从 Firefox/Chrome 获取地理位置,您只需调用几个 JavaScript 方法。 (我真的希望你知道 Java 与 JavaScript 不同)

【讨论】:

  • 此答案中添加的链接现已失效
  • @SpringLearner:谢谢!我真的应该把我的博客放回网上。同时,我更新了 Wayback Machine 的链接。
  • 嘿@DenilsonSáMaia 我想要使用以 ip 作为参数的 java 方法完全相同的解决方案。你能提供一些指针吗?如果您能够提供 javascript 实现,那也会有所帮助。
【解决方案2】:

一个简单的方法是使用 GeoLite (http://dev.maxmind.com/geoip/legacy/geolite/)。因为它使用本地数据库,所以不需要网络服务调用,而且对大量 IP 进行地理编码要快得多。

方法如下:

添加这个 Maven 工件:

<dependency>
    <groupId>com.maxmind.geoip</groupId>
    <artifactId>geoip-api</artifactId>
    <version>1.2.11</version>
</dependency>

http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz下载地理位置数据文件

解压文件到任意文件夹。然后做:

LookupService cl = new LookupService("/var/geolite/GeoLiteCity.dat",
                    LookupService.GEOIP_MEMORY_CACHE | LookupService.GEOIP_CHECK_CACHE);

Location location = cl.getLocation("some ip address");

结果将在 Location 对象中的 latitude、longitude、city、region 和 countryCode 属性中。

请查看他们的准确度估计,以确保它满足您项目的需求:http://www.maxmind.com/en/geolite_city_accuracy

【讨论】:

    猜你喜欢
    • 2013-11-09
    • 1970-01-01
    • 2023-02-03
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 2016-10-25
    相关资源
    最近更新 更多