私はアンドロイドで地図をクリックするとアドレスを取得しようとしています。現在の位置を緯度と経度で渡すためにGeocoderを使用しています。ジオコーダーはアドレスのリストを取得します。 StringBuilderを使用して分割してアドレスを返そうとすると、nullの結果が返されます。この同じコードはエミュレータで動作しますが、LG Androidデバイスでコードを実行すると、Addressの値は取得されません。これはこれまで私が試したことです。StringBuilderがロケーションアドレスを追加していません
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng latLng) {
Double lat = latLng.latitude;
Double lng = latLng.longitude;
String address = getAddressFromLatLng(latLng);
}
});
private String getAddressFromLatLng(LatLng latLng) {
Toast.makeText(getContext(), "Inside getAddress", Toast.LENGTH_SHORT).show();
Geocoder geocoder = new Geocoder(getActivity());
StringBuilder strReturnedAddress=null;
try {
List<Address> addresses = geocoder.getFromLocation(latLng.latitude, latLng.longitude, 1);
if(addresses != null){
Toast.makeText(getContext(), "Addresses is not null", Toast.LENGTH_SHORT).show();
Address returnedAddress = addresses.get(0);
Toast.makeText(getContext(), "Returned address " + returnedAddress, Toast.LENGTH_SHORT).show();
strReturnedAddress = new StringBuilder();
Toast.makeText(getContext(), "str address " + strReturnedAddress, Toast.LENGTH_SHORT).show();
for(int i=0; i < returnedAddress.getMaxAddressLineIndex(); i++){
strReturnedAddress.append(returnedAddress.getAddressLine(i)).append(",");
}
}
} catch (IOException e) {
e.printStackTrace();
}
return strReturnedAddress.toString();
}
返されたアドレスのトースト値は、実際にはアドレスのリストを返します。その後、次の文はstrReturnedAddress = new StringBuilder();
です。アドレスに続くトースト文はnullを返します。これは実際のデバイスでのみ発生します。同じコードがエミュレータでうまく機能します。どんな助けもありがとうございます。
「ジオコーダ」とは何ですか?それはnullを返すので、それを追加してください。 –
'' str address "+ strReturnedAddress'は常に空です。 –