2014-02-11 70 views
3

我使用Geocoder從lan/lat座標獲取地址。 問題是地址是本地語言(通常是街道名稱)。我怎樣才能把它設置爲只有英文?Geocoder的英文而不是本地語言

我使用:

Geocoder geocoder = new Geocoder(Context, Locale.getDefault()); 

嘗試:

Geocoder geocoder = new Geocoder(Context, Locale.ENGLISH); 
Geocoder geocoder = new Geocoder(Context, Locale.US); 

沒有運氣。

+0

'地理編碼器地理編碼器=新的地理編碼(MainApplication.getAppContext(),Locale.ENGLISH);'爲我工作。 API 16 –

回答

1

API 19
答案並不完全正確,我認爲。
我剛剛遇到過這種情況,當我將GeoCoder語言環境設置爲英語時,出現錯誤的街道名稱。
它沒有翻譯它們,但它刪除了語言特定的部分,這是我的一個關注。

例如,「Straße」變成了「St」。

Google Maps HTTP Geocoder API在這方面有所不同,當我設置英文語言時,只有被測試國家被翻譯(奧地利,而不是Österreich),街道才能正確返回。

由於很多人使用HTTP API作爲後備地址解析器失敗的情況下,這可能是一個問題,就像我的情況一樣。
我的解決方案是總是使用國家的區域設置爲這兩個API,然後結果匹配。
HTTP API有一個&語言參數,它理解Local.toString()的值;
Geocoder可以像在原始問題中一樣啓動。

0

我不認爲這是可能的。街道名稱是街道名稱。他們不會被翻譯。你有一個名字。無論用什麼語言,你的名字都是你的名字。當你與外語人士交談時,你不會「翻譯」你的名字。

地理編碼器只是一個將地理座標映射到其他實體的數據庫。一般來說,你不會找到一個街道的多個名稱。有一些地名翻譯的例子(例如,城市名稱可以翻譯成多種語言),但是這些例外而不是規則。

+0

街道名稱不需要翻譯,只顯示英文。例如,你的名字叫大衛,大衛是中國人。谷歌地圖可以看到不同的語言。在以色列有本古裏安的街道,通過地理編碼器,我的結果是英語中的本古裏安的בן-גוריון,但我希望它以英語而不是希伯來語顯示。 – Dim

+0

@DanM看看[這裏](http://stackoverflow.com/questions/19059948/why-geocoder-from-google-maps-is-returning-japanese-character/19060980#19060980)。如果街道名稱被標記爲這種方式,你不能做太多的事情。翻譯不適用於所有數據(如David已經說過的)。唯一的辦法是把它翻譯成你自己的。 –

相關問題