2013-04-06 244 views
3

我看到這個問題在這裏問了很多Java,但我看到的每一個似乎都是以Android爲中心的:我需要一種獲取用戶當前經緯度的方式,來自計算機,而不是移動設備。我知道這在C#中是可行的,但我不確定在Java中如何完成它。我以前使用Google Maps的寧靜API:但是,它需要一個地址作爲輸入,我只想獲取用戶當前的經緯度,我覺得比撥打Google電話更簡單。任何幫助將不勝感激。在Java中獲取用戶當前的緯度和經度

回答

4

Java當前不提供通用平臺無關API來獲取位置。但是,可能有平臺特定的方式。

臺式機上的大多數實現將通過IP地址進行地理定位;您可以使用Java的這些服務(Best way to get geo-location in Java)。但是,如果操作系統提供更通用的API,則可以利用任何GPS硬件。

對於Mac OS,https://superuser.com/questions/346302/is-there-a-way-to-access-os-x-location-services-from-the-command-line

這裏有一個Gnome-provided library的細節,也是一個plans for support in KDE寫了。

+0

謝謝,這似乎是我正在尋找。我會看看Skyhook,它看起來像是一個堅實的選擇。 – 2013-04-08 19:09:41

4

你不能在一般的電腦做這種情況的原因是,在一般的電腦是很明顯的,當你想想看:

  • 電腦一般沒有內置GPS設備。所以電腦不能告訴你在哪裏。

  • 另一種方法是嘗試將IP地址映射到物理位置。這是不可靠的,因爲IP地址並沒有從根本上與物理位置相關聯。通過IP地址進行地理定位只能用於用戶的網絡服務提供商能夠(並願意)向第三方提供位置信息。實際上,這些信息非常「不完整」。另一個問題是您需要依靠外部「地理位置服務」來獲取信息。它不是標準Java平臺的一部分。

  • 還有一種方法是基於地理定位WiFi熱點。此鏈接更詳細:http://gps.about.com/od/glossary/g/wifi_position.htm。但是,這取決於用戶的WiFi提供商註冊其經緯度,並且用戶打開WiFi。


1 - 我記得一個同事做iPhone開發提的是,他得到了更準確的地理位置上的iPhone(帶GPS)當WiFi被打開。

+0

我無法找到代碼,但我幾乎可以肯定,我寫了一個大約一年前在asp.net和C#中的網頁,它會打開並告訴您當前的經緯度。我特別記得我注意到,一旦我連接到WiFi後,我能夠更準確地瞭解我的位置 - 我絕對是通過計算機獲得了我的位置,一旦啓用了WiFi,它就準確無誤。你有什麼想法如何做到這一點? – 2013-04-06 05:31:51

+0

除了Stephen C的描述之外,我還想補充一下Google Devices的位置,在Wi-Fi設備的MAC地址(物理地址)附近添加他們的數據庫來確定位置。但實際上,識別用戶位置的最佳方式是GPS.With其他方式,如果這是公開信息,您可以只獲取Country,Enterprise位置。 – Musa 2016-12-05 16:31:31