Android基礎(43) java
Android地圖開發實際應用中,常常會經過地圖定位判斷手機用戶是哪一個城市的,而後根據城市的不一樣調取不一樣的數據,或者是地圖定位以後,會在手機界面中顯示用戶的詳細位置,如石家莊市中山北國商城。android
那麼這些信息如何得到? 詳細研究過Android MapView的可能用到Geocoder這個對象。詳細代碼以下:git
[java] view plaincopyjson
- Geocoder geocoder=new Geocoder(this, Locale.getDefault());
- try {
- List<Address> addresses=geocoder.getFromLocation(latitude, longitude, 1);
- StringBuilder stringBuilder=new StringBuilder();
- if(addresses.size()>0){
- Address address=addresses.get(0);
- for(int i=0;i<address.getMaxAddressLineIndex();i++){
- stringBuilder.append(address.getAddressLine(i)).append("\n");
- }
- stringBuilder.append(address.getLocality()).append("_");
- stringBuilder.append(address.getPostalCode()).append("_");
- stringBuilder.append(address.getCountryCode()).append("_");
- stringBuilder.append(address.getCountryName()).append("_");
- System.out.println(stringBuilder.toString());
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- Toast.makeText(this, "報錯", Toast.LENGTH_LONG).show();
- e.printStackTrace();
- }
[java] view plain copyapi
- Geocoder geocoder=new Geocoder(this, Locale.getDefault());
- try {
- List<Address> addresses=geocoder.getFromLocation(latitude, longitude, 1);
- StringBuilder stringBuilder=new StringBuilder();
- if(addresses.size()>0){
- Address address=addresses.get(0);
- for(int i=0;i<address.getMaxAddressLineIndex();i++){
- stringBuilder.append(address.getAddressLine(i)).append("\n");
- }
- stringBuilder.append(address.getLocality()).append("_");
- stringBuilder.append(address.getPostalCode()).append("_");
- stringBuilder.append(address.getCountryCode()).append("_");
- stringBuilder.append(address.getCountryName()).append("_");
- System.out.println(stringBuilder.toString());
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- Toast.makeText(this, "報錯", Toast.LENGTH_LONG).show();
- e.printStackTrace();
- }
坑爹呀,怎麼執行都異常 ,真機測試還異常, 有說android 2.xx版本不能用,無論怎麼樣,這個很差用。app
看谷歌另外一種方法:測試
Google Geocoding API
,定會讓你眼前一亮。ui
詳細地址:http://code.google.com/intl/zh-CN/apis/maps/documentation/geocoding/this
根據座標查找詳細信息,也就是本篇所說的,請看 反向地址解析(地址查詢)google
請求地址:http://maps.google.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true
注意座標 (緯度,經度)不要傳反了
經實例測試,發現兩個問題 1,讀取json很慢;2,返回地址信息是英文【有時頁面直接訪問是中文,模擬器中是英文】
解決辦法:
1,將請求地址:google.com 改成 google.cn
2,在請求地址後邊再加一個參數language=zh-CN [ 不知道爲何官網不給詳細一點 ]