我创建了示例应用程序我想从字符串地址行获取纬度和经度。这是我用来获得纬度和经度的方法
private void getFromLocation(String address) {
Geocoder geoCoder = new Geocoder(this, Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocationName(address, 1);
if (addresses.size() > 0) {
GeoPoint p = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6));
latitude = p.getLatitudeE6() / 1E6;
longtitude = p.getLongitudeE6() / 1E6;
HAMBURG = new LatLng(latitude, longtitude);
Log.d("latitide", "" + latitude);
Log.d("longtitude", "" + longtitude);
} else {
Log.d("Addess", "Address not found");
}
} catch (Exception ee) {
Log.d("ex", ee.toString());
}
}
private void getFromLocation(String address) {
Geocoder geoCoder = new Geocoder(this, Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocationName(address, 1);
if (addresses.size() > 0) {
GeoPoint p = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6));
latitude = p.getLatitudeE6() / 1E6;
longtitude = p.getLongitudeE6() / 1E6;
HAMBURG = new LatLng(latitude, longtitude);
Log.d("latitide", "" + latitude);
Log.d("longtitude", "" + longtitude);
} else {
Log.d("Addess", "Address not found");
}
} catch (Exception ee) {
Log.d("ex", ee.toString());
}
}
此方法抛出异常“
“。我犯了什么错误?还有其他解决方案可以获得纬度和经度吗?
答案 0 :(得分:0)
IOException可能表示远程请求因某些相对较低级别的原因而失败;
<强> IOException: if the network is unavailable or any other I/O problem occurs
强>
public List<Address> getFromLocationName (String locationName, int maxResults)
在API级别1中添加 返回已知用于描述命名位置的地址数组,该地址可以是诸如“Dalvik,Iceland”的地名,诸如“1600 Amphitheatre Parkway,Mountain View,CA”的地址,诸如“SFO”的机场代码“等等。返回的地址将针对提供给该类构造函数的语言环境进行本地化。
查询将阻止并返回值将通过网络查找获得。结果是最佳猜测,并不保证有意义或正确。从与主UI线程分开的线程调用此方法可能很有用。
locationName:用户提供的位置描述
maxResults:要返回的最大结果数。建议使用较小的数字(1到5)
地址对象列表。如果未找到匹配项或没有可用的后端服务,则返回null或空列表。
IllegalArgumentException:如果locationName为null
IOException:如果网络不可用或出现任何其他I / O问题
所以,做
请尽量避免在一分钟内收到几次点击。 在不同的设备上运行此代码。
有关详细信息,请查看此artical。
答案 1 :(得分:0)
List<Address> foundGeocode = null;
/* find the addresses by using getFromLocationName() method with the given address*/
try {
foundGeocode = new Geocoder(MainActivity.this).getFromLocationName("Your location",1);
Double s=foundGeocode.get(0).getLatitude(); //getting latitude
Double n=foundGeocode.get(0).getLongitude();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}