IPアドレスを対応する番号に変換しています。ここで、場所の詳細、つまり、longとlat、タイムゾーンなどを知りたいです。Javaで可能ですか。データベースに外部jarを使用する必要がありますか?
質問する
3349 次
4 に答える
2
IPアドレス自体には位置情報がありません。ただし、このマッピングを持つデータベース/サービスは多数存在します。
さまざまなオプションについては、このブログエントリを参照してください。このために接続するAPIとデータベースは多数あり、リモートルックアップを回避するためにそのような情報をローカルにダウンロードするオプションがあります。
于 2012-07-20T10:55:22.227 に答える
1
したがって、他の人が正しく指摘しているように、IPアドレスには場所に関するこの「メタデータ」は含まれていません。この情報を取得するためにサードパーティに依存するか、この情報を自分で取得するか、またはそれなしで行く必要があります。その情報をスクレイプするためのライブラリを作成することは、Javaで可能であるはずです。
于 2012-07-20T11:14:44.987 に答える
1
ipAddress = request.getRemoteAddr();
GeoLocation gl = new GeoLocation();
gl.GetGeoLocationByIP(ipAddress);
String country = gl.Country;
于 2013-05-08T06:33:38.120 に答える
1
IPアドレスから場所を取得するには、IPテーブルを定期的に更新するIPデータベースを購入する必要があります。
ただし、必要に応じて、リクエストヘッダーから都市、地域、国、経度、緯度などの場所の詳細を取得できます。
GAEユーザーのみが利用できます。
詳細については、 GAEリリースノート を参照してください
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;
}
于 2013-08-03T08:22:42.643 に答える