1 解決方案一 此處解決辦法參照自網友文章,對於輸入的地址信息要求:城市名+具體地址名。 如果輸入的地址信息只有具體地址名,而沒有城市名,可能解析不出經緯度信息。還有就是解析出的經緯度再反向解析顯示再地圖上作為一個地標標記時,會有較明顯的偏差,偏差的實際地理距離大概有一千米左右...,這是樓主自己實 ...
1 解決方案一
此處解決辦法參照自網友文章,對於輸入的地址信息要求:城市名+具體地址名。
如果輸入的地址信息只有具體地址名,而沒有城市名,可能解析不出經緯度信息。還有就是解析出的經緯度再反向解析顯示再地圖上作為一個地標標記時,會有較明顯的偏差,偏差的實際地理距離大概有一千米左右...,這是樓主自己實際上機運行檢測的結果,不能完全肯定情況是否是這樣,還有一點就是如果解析時可能會使應用出現閃退。我試驗的結果,會閃退一次,第二次重新點開應用,才會出現正確的解析結果。
最後,說一下解析的經緯度坐標,最終的數字結果均要除以10的六次方(即1e6),要不然進行反向解析為地標時會報錯。還有就是,如果在監聽方法中同時解析多個地址,可能會一直閃退。所以,以下代碼僅供參考。
具體實現方法:
public GeoPoint getGeoPointBystr(String str) { GeoPoint gpGeoPoint = null; if (str!=null) { Geocoder gc = new Geocoder(getActivity(), Locale.CHINA); List<Address> addressList = null; try { addressList = gc.getFromLocationName(str, 1); if (!addressList.isEmpty()) { Address address_temp = addressList.get(0); //計算經緯度 double Latitude=address_temp.getLatitude()*1E6; double Longitude=address_temp.getLongitude()*1E6; System.out.println("經度:"+Latitude); System.out.println("緯度:"+Longitude); //生產GeoPoint gpGeoPoint = new GeoPoint((int)Latitude, (int)Longitude); } } catch (IOException e) { e.printStackTrace(); } } return gpGeoPoint; }
調用上述方法解析出經緯度:
GeoPoint result = getGeoPointBystr("武漢市中南民族大學南三門"); Double num_latitude = (result.getLatitudeE6()) / 1e6; Double num_longitude = (result.getLongitudeE6()) / 1e6;