我想基于long/lat得到一个地址.似乎这样的事情应该有效吗?
Geocoder myLocation = Geocoder(Locale.getDefault());
List myList = myLocation.getFromLocation(latPoint,lngPoint,1);
Run Code Online (Sandbox Code Playgroud)
问题是我不断得到:方法Geocoder(Locale)未定义类型savemaplocation
任何帮助都会有所帮助.谢谢.
谢谢,我尝试了上下文,首先是locale,然后失败并且正在查看其他一些构造函数(我曾经看过一个只提到locale).而不管,
它没有用,因为我仍然得到:方法Geocoder(Context,Locale)未定义类型savemaplocation
我有:import android.location.Geocoder;
我知道有时google后端服务可能无法使用.
因此,解决方案可能是循环,直到我获得数据.
private class getLocationDetails extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
Log.d("looping", "" + count + "");
count++;
double lat = Double.parseDouble(params[0]);
double lng = Double.parseDouble(params[1]);
List<Address> addresses = null;
try {
Geocoder gCoder = new Geocoder(ImageAndLocationActivity.this,
Locale.getDefault());
addresses = gCoder.getFromLocation(lat, lng, 1);
Address addr = addresses.get(0);
user_country = addr.getCountryName();
user_city = addr.getLocality();
user_district = addr.getSubAdminArea();
if (user_city == null) {
user_city = user_district;
}
} catch (Exception e) {
Log.e("Exception in getLocationDetails - ", …Run Code Online (Sandbox Code Playgroud) 我正在使用Google Maps API v2 for android并且正常运行.但是,我正在尝试使用地理编码器来获取地址的经度和纬度,但没有成功.
它改变了从v2做到这一点的方式?
我正在使用传统的代码
Geocoder gc = new Geocoder(context);
//...
List<Address> list = gc.getFromLocationName("1600 Amphitheatre Parkway, Mountain View, CA", 1);
Address address = list.get(0);
double lat = address.getLatitude();
double lng = address.getLongitude();
//...
Run Code Online (Sandbox Code Playgroud)
始终返回强制关闭,Log不解决任何问题.当使用try/catch块时,打开地图但总是使用相同的位置使用Internet权限,我已经包含在项目中COARSE_LOCATION我已经使用了位于此处和其他站点的各种代码,但没有成功.
先感谢您.
在过去的两天里,当IllegalArgumentException我试图从地址中获取坐标时,我在Android代码中收到错误,甚至反转,从经度和纬度获取地址时,我会忘记这一点.这是代码,但我看不到错误.它是一个标准的代码段,可以在Google搜索中轻松找到.
public GeoPoint determineLatLngFromAddress(Context appContext, String strAddress) {
Geocoder geocoder = new Geocoder(appContext, Locale.getDefault());
GeoPoint g = null;
try {
System.out.println("str addres: " + strAddress);
List<Address> addresses = geocoder.getFromLocationName(strAddress, 5);
if (addresses.size() > 0) {
g = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6)
);
}
} catch (Exception e) {
throw new IllegalArgumentException("locationName == null");
}
return g;
}
Run Code Online (Sandbox Code Playgroud)
这些是manifest.xml文件的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
Run Code Online (Sandbox Code Playgroud)
我也确实声明了Google API密钥: …