Javaでジオロケーションを取得する最善の方法は(可能な場合は自由に)ですか?Javaでジオロケーションを取得する最良の方法
更新:GPSデバイスからではありません。基本的にFirefox 3.5/HTML 5の動作方法
Javaでジオロケーションを取得する最善の方法は(可能な場合は自由に)ですか?Javaでジオロケーションを取得する最良の方法
更新:GPSデバイスからではありません。基本的にFirefox 3.5/HTML 5の動作方法
WiFiとロケーションの最大のデータベースはおそらくSkyHook Wirelessで、AppleとGoogleのジオロケーションに使用されています。利用可能なSDKがあります - http://skyhookwireless.com/developers/を参照してください。
C++のようですが、Java版はありますか? – yxk
これを使用する場合は、おそらくJNIを使用してネイティブC++コードを呼び出すことができますが、Javaアプリケーションのクロスプラットフォーム機能が低下する可能性があります。 –
最近、JNI –
ローカルデータベースが必要な場合は、IPInfoDBが提供するものをチェックすることができます。
ウェブサービスを使用できる場合は、番号がありますが、利用規約に許可されている内容がわかりません。 Google search for "ip geolocation lookup web service"はいくつかのものを示していますが、それらの多くは商用製品であり、ガイドライン内でそれらを使用するために注意深くToSを読まなければなりません。
の代わりにJNAを使用する必要があります。「国レベルで99.5%以上、25マイル圏内で米国の都市レベルで約80%」このAPIに使用されるデータベースは、無料のMaxmind CSVデータベース(Geolite City)であり、多くのスクリプトで再編成されています。 市は正しい街を得ているようですが、Googleマップはそれをかなり正確に行います。 – yxk
もちろん、CSVファイルまたはSQLファイルをIPInfoDBで定期的に更新する必要があります。しかしそれはすべてのトレードオフです。 IPデータベースの手動更新と照会でそれを打ち消すことができます。 –
あなたは、Firefox 3.5(またはGoogle Chromeは)ジオロケーションを取得する方法を知りたい場合は、ここで見てみてください。How Google/Firefox Geolocation API works
を基本的には、何のFirefox 3.5(だけでなく、クロム)がないことのリストを取得することです付近のWi-Fiネットワークのリストを取得し、そのリストをJSONを使用してGoogle Webサービスに送信します。これにより、およその座標が返されます。
ところで、このプロセスに関係するJavaはありません。 Firefox/Chromeからジオロケーションを取得するには、いくつかのJavaScriptメソッドを呼び出します。 (JavaがJavaScriptと異なることをあなたが知っていることを本当に願っています)
この回答に追加されたリンクは現在死んでいます – SpringLearner
@SpringLearner:ありがとう!私は本当に私のブログをオンラインに戻すべきです。その間、私はWayback Machineへのリンクを更新しました。 –
ちょっと@ DenilsonSaMaia私は引数としてIPを取るjavaメソッドを使用してまったく同じソリューションをしたい。あなたはいくつかのポインタを提供できますか?あなたがjavascriptの実装を提供することができれば、それも助けになるでしょう。 –
私が十分理解していれば、あなたのサイトやWebアプリケーションへの訪問者の地理的位置を取得したいと思っています。私が知っている選択肢は以下のとおりです。
GoogleのGearsがジオロケーション(http://code.google.com/apis/gears/api_geolocation.html)を作るためにいくつかの機能がありますが、(WWWドットiplocationtoolsは、ドットコム、このようなIPロケーションツールなどのオンラインサービスを呼び出すJavaScript関数を使用して歯車
をインストールする必要があります)。このサイトには例があり、ビデオチュートリアルもあります。
ちょっと@Migこのリンクは死んでいるようです。他のポインターとまったく同じソリューションですか? –
Javaで地理位置情報のための最高のオープンソースのライブラリがGoogleマップAPIに基づいて、今http://geo-google.sourceforge.net/index.htmlある
悲しいことに、ここにはGeoLocationのサポートはありません。ジオコーディングのみ。 – Reno
Iを試みることができる(あなたはそれを使用するためにGoogle MapsのAPIキーが必要です) http://jgeocoder.sourceforge.net/ を使用することをお勧めしますがjgeocoder - Free Java Geocoder
するSubversionを使用する場合の簡単な方法は、GeoLite(http://dev.maxmind.com/geoip/legacy/geolite/)です。ローカルデータベースを使用するため、Webサービスコールは必要なく、多数の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
からジオロケーション・データ・ファイルをダウンロードし、任意のフォルダにファイルを解凍します。次に、結果はLatitude、longitude、city、regionおよびcountryCodeプロパティのLocationオブジェクトに格納されます。
プロジェクトのニーズを満たしているかどうかの正確な見積もりを確認してください:http://www.maxmind.com/en/geolite_city_accuracy。
あなたはウェブサービスでOKだから、私のAPI http://ipinfo.ioを使うことができます。
$ curl ipinfo.io
{
"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を参照してください:ここではIPアドレスの例JSON出力です。
ここでは1500リクエスト/日まで無料のhttps://ipdata.co APIに基づく例を示します。
はあなたが正確に何を意味する
// Maven : Add these dependecies to your pom.xml (java6+)
// <dependency>
// <groupId>org.glassfish.jersey.core</groupId>
// <artifactId>jersey-client</artifactId>
// <version>2.8</version>
// </dependency>
// <dependency>
// <groupId>org.glassfish.jersey.media</groupId>
// <artifactId>jersey-media-json-jackson</artifactId>
// <version>2.8</version>
// </dependency>
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.MediaType;
Client client = ClientBuilder.newClient();
Response response = client.target("https://api.ipdata.co/8.8.8.8")
.request(MediaType.TEXT_PLAIN_TYPE)
.header("Accept", "application/json")
.get();
System.out.println("status: " + response.getStatus());
System.out.println("headers: " + response.getHeaders());
System.out.println("body:" + response.readEntity(String.class));
を検索したいIPで
8.8.8.8
を置き換えますか? GPSデバイスから座標を取得するか、IPアドレスに基づいて位置を見つけるか、データベースなどの特定の目的地の座標を検索しますか? – Wolfgangオフラインで行う必要があるデスクトップアプリケーション用ですか?または、Webサービスを使用しても問題ありませんか? –
Webサービスは大丈夫 – yxk