この質問は Java についてここでよく聞かれますが、私が目にするものはすべて Android 中心のようです: ユーザーがモバイル デバイスではなくコンピューターから電話をかけているときに、ユーザーの現在の緯度と経度を取得する方法が必要です。これは C# で実行できることはわかっていますが、Java で正確に実行する方法がわかりません。以前に Google マップの RESTful API を使用したことがありますが、入力として住所が必要で、ユーザーの現在の緯度/経度を取得したいだけで、Google を呼び出すよりも簡単だと思います。どんな助けでも大歓迎です。
2 に答える
一般的なコンピューターでこれを行うことができない理由は、一般的なコンピューターは、考えてみると非常に明白だからです。
通常、コンピュータには GPS デバイスが組み込まれていません。そのため、コンピューターはそれがどこに基づいているかを教えてくれません。
もう 1 つの方法は、IP アドレスを物理的な場所にマップすることです。IP アドレスは基本的に物理的な場所に関連付けられていないため、これは信頼できません。IP アドレスによるジオロケーションは、ユーザーのネットワーク サービス プロバイダーがサード パーティに位置情報を提供できる (そして提供する意思がある) 場合にのみ機能します。実際には、この情報は非常に「まだら」です。もう 1 つの問題は、情報を取得するために外部の「位置情報サービス」に依存する必要があることです。これは、標準の Java プラットフォームの一部ではありません。
WiFi ホットスポットの位置特定に基づく別のアプローチがあります1。http://gps.about.com/od/glossary/g/wifi_position.htmのリンクで詳細が説明されています。ただし、緯度/経度を登録するユーザーの WiFi プロバイダーと、ユーザーが WiFi をオンにすることに依存します。
1 - iPhone の開発を行っている同僚が、WiFi をオンにすると、iPhone で (GPS を使用して) より正確な地理位置情報を取得できると述べたのを覚えています。
Java は現在、場所を取得するための一般的なプラットフォームに依存しない API を提供していません。ただし、プラットフォーム固有の方法がある場合があります。
デスクトップ マシンでのほとんどの実装は、IP アドレスを介して位置情報を取得します。Java からこれらのサービスを使用できます (Javaで地理位置情報を取得する最良の方法)。ただし、オペレーティング システムがより一般的な API を提供する場合は、任意の GPS ハードウェアを利用できます。
ここにはGnome が提供するライブラリの詳細があり、KDE でのサポート計画についても書かれています。