我试图通过从纬度和经度中提取城市和地址详细信息来检测我的用户的位置并且它工作正常但是当我尝试在一些marshmallow设备上运行时,反向地理编码给出了区域名称,但是 Map 标记指向所需位置 . 以下是我的代码 . 哪里出错了?
if (centerLatLng != null) {
Geocoder geocoder = new Geocoder(CNM_MapsActivity.this,
Locale.getDefault());
currentLongitude=centerLatLng.longitude;
currentLatitude=centerLatLng.latitude;
List<android.location.Address> addresses = new ArrayList<Address>();
try {
addresses = geocoder.getFromLocation(centerLatLng.latitude,
centerLatLng.longitude, 1);
} catch (IOException e) {
e.printStackTrace();
}
if (addresses != null && addresses.size() > 0) {
sdt=addresses.get(0).getAdminArea();
csdt=addresses.get(0).getLocality();
//toolbar.setTitle(csdt);
tyssy=addresses.get(0).getPremises();//addresses.get(0).getPremises();
String addresl=addresses.get(0).getAddressLine(0);
String ftrn=addresses.get(0).getFeatureName();
String sblc=addresses.get(0).getSubLocality();
String sbna=addresses.get(0).getSubAdminArea();
ttls.setText(csdt);
// if(Character.isDigit(addresses.get(0).getAddressLine(0).charAt(0))){
// tyssy ="Prem Nagar"; //addresses.get(0).getAddressLine(1);
// }
// else if(addresses.get(0).getAddressLine(0).startsWith("Lane")){
// tyssy ="Prem Nagar"; // addresses.get(0).getAddressLine(1);
// }
// else {
// tyssy ="Prem Nagar"; // addresses.get(0).getAddressLine(0);
// }
// mLocationTextView.setText("Click To Set Your Location");
// progressDialog.dismiss();
// txtLocationAddress.setText(String.valueOf(centerLatLng.latitude)+
// String.valueOf(centerLatLng.longitude));
txtLocationAddress.setText(addresl);
// Toast.makeText(MN_MapsActivity.this,"State : "+sdt+"\n"+"city : "+csdt+"\n"+"Premises : "+String.valueOf(tyssy)+"addrs :" +addresl+"\n"+"sblc :"+sblc+"\n"+"featy : "+ ftrn+"\n"+"subadm : "+sbna,Toast.LENGTH_LONG).show();
}
}
else{
// progressDialog.dismiss();
// Toast.makeText(CNM_MapsActivity.this, "Error Please Try Again", Toast.LENGTH_SHORT).show();
Snackbar.make(mn,"Error Please Try Again",Snackbar.LENGTH_SHORT).show();
// onResetMap();
}