如何从IP地址整数值获取位置详细信息

时间:2012-07-20 10:52:35

标签: java geolocation

我正在将IP地址转换为相应的号码。现在我想知道位置细节,即长和纬度,时区等。在Java中是否可行。我是否必须为数据库使用一些外部jar?

6 个答案:

答案 0 :(得分:2)

IP地址本身没有位置信息。但是,存在具有此映射的许多数据库/服务。

有关多种不同选项,请参阅this blog entry。为此可以连接许多API和数据库,您可以选择在本地下载此类信息以避免远程查找。

答案 1 :(得分:1)

因此,正如其他人正确指出的那样,IP地址不包含任何关于位置的“元数据”。您需要依靠第三方获取此信息,自行检索此信息,或者不使用它。编写库来抓取这些信息应该可以用Java编写。

答案 2 :(得分:1)

  ipAddress = request.getRemoteAddr();
  GeoLocation gl = new GeoLocation();
  gl.GetGeoLocationByIP(ipAddress);

String country = gl.Country;

refer

答案 3 :(得分:1)

要从IP地址获取位置,您必须购买IP数据库 他们将定期更新IP表。

但是,如果您愿意,您可以从请求标题中获取位置详细信息,即城市,地区,国家/地区,经度,纬度。

仅适用于GAE用户。

详情请见 GAE ReleaseNotes

public static HashMap<String, Object> getLocationDetails(HttpServletRequest request)
{
    HashMap<String, Object> locationMap =   null; 
    String country  =   "",city="",region="",latitude="",longitude="",temp="",state="",title="",address="",zip="";
    boolean primary =   true;
    try
    {
        locationMap = new HashMap<String, Object>();
        country     =   request.getHeader("X-AppEngine-Country"); 
        region      =   request.getHeader("X-AppEngine-Region");
        city        =   request.getHeader("X-AppEngine-City");
        temp        =   request.getHeader("X-AppEngine-CityLatLong");
        latitude    =   (temp.split(","))[0];
        longitude   =   (temp.split(","))[1];
        log.info("country>>"+country+"region>>"+region+"city>>"+city+"temp>>"+temp+"latitude>>"+latitude+"longitude>>"+longitude);

        locationMap.put("city"      , city);
        locationMap.put("state"     , region);
        locationMap.put("country"   , country);
        locationMap.put("latitude"  , latitude);
        locationMap.put("longitude" , longitude);
        log.info("locationMap==>"+locationMap);
    }catch (Exception e) 
    {
        log.log(Level.SEVERE,"Exception while getting location"+e.getMessage(),e);
    }
    return locationMap;
}

答案 4 :(得分:0)

您可以获得服务提供商的地址。不是电话的所有者。

如果您使用启用了GPS的Android。那么你可以得到你的确切位置。 代码见下面的链接。

What is the simplest and most robust way to get the user's current location on Android?

答案 5 :(得分:0)

您可以使用我的API查找此信息https://ipinfo.io。如果您没有通过IP地址,它会为您提供您自己的详细信息,或者您可以传递IP地址以获取该地址的详细信息:

$ curl ipinfo.io/24.6.61.239
{
  "ip": "24.6.61.239",
  "hostname": "c-24-6-61-239.hsd1.ca.comcast.net",
  "city": "Mountain View",
  "region": "California",
  "country": "US",
  "loc": "37.3845,-122.0881",
  "org": "AS7922 Comcast Cable Communications, LLC",
  "postal": "94040"
}

有关详细信息,请参阅https://ipinfo.io/developers