今天在開(kāi)發(fā)的過(guò)程中遇到了一個(gè)很奇葩的問(wèn)題,就是之前已經(jīng)寫(xiě)好的代碼在Android 7.0 的系統(tǒng)中運(yùn)行是正常的,但是在Android8.0 的系統(tǒng)中運(yùn)行就出現(xiàn)了問(wèn)題。在網(wǎng)上也找了很多資料,經(jīng)過(guò)自己的不斷折騰,終于找到了問(wèn)題。廢話不 多說(shuō)了,直接上代碼:
public void getLatAndLng(String cityName) {
Geocoder geocoder = new Geocoder(this,Locale.CHINA);
try {
List<Address> addressList = geocoder.getFromLocationName(cityName,5);
if (addressList.size()> 0) {
Address address = addressList.get(0);
double latitude = address.getLatitude();//緯度
double longitude = address.getLongitude();//精度
mSelectProvince = address.getAdminArea();// 省份名稱
mSelectArea = address.getSubLocality();//區(qū)名稱
locationLatLng = new LatLng(latitude,longitude);
//centerToLocation();
}
}catch (IOException e) {
e.printStackTrace();
}
}
此方法為根據(jù)城市名稱獲取經(jīng)緯度以及相關(guān)的城市信息。此代碼在Android7.0的系統(tǒng)中可以直接進(jìn)行調(diào)用使用,在Android 8.0的系統(tǒng)中需要在子線程中運(yùn)行,具體的代碼如下:
new Thread() {
@Override
public void run() {
getLatAndLng("城市名稱");
}
}.start();
以上代碼可以完成根據(jù)城市名稱獲取經(jīng)緯度以及相關(guān)城市的信息