如何从地址查找经纬度
How to find Latitude and Longitude from Address
我正在使用 Address 获取该位置的纬度和经度,但它总是 returns null...
我正在传递这样的地址:1701 Amphitheatre Pkwy Mountain View CA 94043
Geocoder geocoder = new Geocoder(MainActivity.this, Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocationName(strNewClientCompleteAddress, 1);
if ((addresses != null) && (addresses.size() > 0)) {
Address fetchedAddress = addresses.get(0);
lat = fetchedAddress.getLatitude();
lng = fetchedAddress.getLongitude();
Log.v("try-if", "ok great work");
} else {
Log.v("try-else", "something wrong");
}
} catch (IOException e) {
e.printStackTrace();
Log.v("catch", "Could not get address....!");
}
strLat = String.valueOf(lat);
Log.v("lat:", strLat);
strLng = String.valueOf(lng);
Log.v("lng:", strLng);
和Log说
V/strNewClientCompleteAddress:(1466): 1701 Amphitheatre Pkwy Mountain View CA 94043
V/try-else(1466): something wrong
V/lat:(1466): 0.0
V/lng:(1466): 0.0
清单权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
您是否设置了必要的权限,例如:
android.permission.INTERNET"
您是否添加了 Google Play 服务?
- 什么return Geocoder.isPresent()方法? http://developer.android.com/reference/android/location/Geocoder.html#isPresent%28%29
我检查了你的代码,没有任何问题。
我低于日志。
02-21 06:21:16.036: V/try-if(18306): ok great work
02-21 06:21:16.036: V/lat:(18306): 37.4235981
02-21 06:21:16.036: V/lng:(18306): -122.0871014
请确保您已在 class 下方导入。
import android.location.Address;
import android.location.Geocoder;
Geocoder class 后端仅存在于 Google 批准的设备上。因此,在任何没有 GMail/Market/Maps 的设备上,查找基本上都会失败。
同时检查互联网是否在设备中正常工作..
注意: 有时 Geocoder 服务无法在后台运行,因为它因内存不足或任务管理器而被终止。重启设备后会再次启动。
另一种方法是使用Google Api https://developers.google.com/places/documentation/autocomplete
直接,您将获得 JSON 位置列表。
此方法不依赖于 phone 上的 Play 服务,而是使用映射 API 键
我正在使用 Address 获取该位置的纬度和经度,但它总是 returns null...
我正在传递这样的地址:1701 Amphitheatre Pkwy Mountain View CA 94043
Geocoder geocoder = new Geocoder(MainActivity.this, Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocationName(strNewClientCompleteAddress, 1);
if ((addresses != null) && (addresses.size() > 0)) {
Address fetchedAddress = addresses.get(0);
lat = fetchedAddress.getLatitude();
lng = fetchedAddress.getLongitude();
Log.v("try-if", "ok great work");
} else {
Log.v("try-else", "something wrong");
}
} catch (IOException e) {
e.printStackTrace();
Log.v("catch", "Could not get address....!");
}
strLat = String.valueOf(lat);
Log.v("lat:", strLat);
strLng = String.valueOf(lng);
Log.v("lng:", strLng);
和Log说
V/strNewClientCompleteAddress:(1466): 1701 Amphitheatre Pkwy Mountain View CA 94043
V/try-else(1466): something wrong
V/lat:(1466): 0.0
V/lng:(1466): 0.0
清单权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
您是否设置了必要的权限,例如:
android.permission.INTERNET"
您是否添加了 Google Play 服务?
- 什么return Geocoder.isPresent()方法? http://developer.android.com/reference/android/location/Geocoder.html#isPresent%28%29
我检查了你的代码,没有任何问题。
我低于日志。
02-21 06:21:16.036: V/try-if(18306): ok great work
02-21 06:21:16.036: V/lat:(18306): 37.4235981
02-21 06:21:16.036: V/lng:(18306): -122.0871014
请确保您已在 class 下方导入。
import android.location.Address;
import android.location.Geocoder;
Geocoder class 后端仅存在于 Google 批准的设备上。因此,在任何没有 GMail/Market/Maps 的设备上,查找基本上都会失败。
同时检查互联网是否在设备中正常工作..
注意: 有时 Geocoder 服务无法在后台运行,因为它因内存不足或任务管理器而被终止。重启设备后会再次启动。
另一种方法是使用Google Api https://developers.google.com/places/documentation/autocomplete
直接,您将获得 JSON 位置列表。
此方法不依赖于 phone 上的 Play 服务,而是使用映射 API 键