2011-09-08 72 views
-1

我正試圖編寫一個世界時鐘應用程序,該應用程序返回給定時區的日出和日落信息。思想是用戶將指定GMT偏移量或明確給出時區。然後,應用程序將使用找到的java.util.TimeZone(或可能給出GMT偏移量)查找緯度和經度。我意識到時區通常不是獲取地理位置信息的非常準確的方式,因爲它們大多基於政治邊界,但似乎存在這樣的情況。我發現的大多數網站/ apis會給出經緯度的時區,但是我想做一個反向搜索(返回給定時區的經度和緯度)。在此先感謝您的幫助。從Java中的時區獲取緯度和經度

+1

時區會爲您提供數十公里長的線路。幸運的是,如果你砍掉海洋,這隻會減少到幾千公里。你仍然留下最好的經度+/- 5度,只有輕微的想法是什麼緯度(21度傾斜並不是那麼重要,並且很難在時區中反映出來)。 – bdares

+2

你可以有一個近似的經度,但絕對沒有關於緯度。 –

+1

@bdares:a * real *時區至少具有國家粒度以適應夏令時和歷史變化。 –

回答

0

時區是一個區域,那麼你就必須回到這個區域的邊界的座標(也可能添加一些方法來檢查指定點內)。所以你必須從地理數據開始。請記住,很多國家都有夏令時,所以時區不是恆定的。

1

Geonames.org有城鎮的一個可下載的數據庫,其中包括各種信息,包括時區和人口。您可以使用它來填充從時區到當時最大城市位置的數據庫。

注意GMT偏移量是非常無用用於此目的,但幸運的時區ID的大陸/城市術語使得它很容易爲用戶選擇正確的一個。

+0

我原則上喜歡這個想法,但我認爲數據庫的大小對於android應用程序來說可能過大。 – Hobo

+0

@Hobo:如果您只需要時區,則只有大約400個映射 - 根本不大。如果您希望獲得更準確的信息,可以按人口規模進行分類,幷包含只有2000個最大的城市。 –

2

讓我告訴你錯誤的級別,如果你這樣做是爲了我的祖國,新西蘭,這是在一個時區(除偏遠島嶼),你可以期待,但綿延在大範圍緯度:

Invercargill, New Zealand 
    Time zone: NZST 
    Sunrise today: 7:05 am 

Auckland, New Zealand 
    Time zone: NZST 
    Sunrise today: 6:34 am 

期待與中國(全國是一個時區),智利,阿根廷,以及其他類似的問題。

不錯的想法,但可能不可行。

0

讀完所有人的回答後,我想我可能會使用Google's Geocoding API,它會返回給定物理地址的緯度/經度和時區。我只需添加一個界面,讓用戶輸入地址,城市或郵政編碼,以便從api中檢索信息並計算日出/日落時間。這比試圖將所有這些信息本地存儲在數據庫(這將是巨大的)要好。感謝所有回答。