当我按国家/地区名称搜索时,它工作正常,但是当我搜索城市或地点时,应用程序崩溃。这是代码:
EditText location_tf = (EditText)findViewById(R.id.TFaddress);
String location = location_tf.getText().toString();
//Toast.makeText(this, location, Toast.LENGTH_SHORT).show();
Geocoder gc = new Geocoder(this);
List<Address> list = gc.getFromLocationName(location, 1);
Address add = list.get(0);
String locality = add.getLocality();
Toast.makeText(this, locality, Toast.LENGTH_SHORT).show();
double lat = add.getLatitude();
double lng = add.getLongitude();
gotoLocation(lat, lng, 4);
答案 0 :(得分:3)
感谢您的帮助,我发现您的答案有所帮助。 我的问题解决了,我在MIUI中文ROM上测试应用程序,安装MIUI国际ROM后,我的代码就像一个魅力。
谢谢。
答案 1 :(得分:1)
基于此SO线程提供的答案
我会说, 地理编码器并不总是返回值。您需要尝试在for循环中发送3次请求。我应该能够至少返回一次。如果没有,那么它们可能是连接问题,或者可能是其他问题,例如服务器拒绝回复您的请求。
您需要尝试以下内容
try {
List<Address> geoResults = geocoder.getFromLocationName("<address goes here>", 1);
while (geoResults.size()==0) {
geoResults = geocoder.getFromLocationName("<address goes here>", 1);
}
if (geoResults.size()>0) {
Address addr = geoResults.get(0);
myLocation.setLatitude(addr.getLatitude());
myLocation.setLongitude(addr.getLongitude());
}
} catch (Exception e) {
System.out.print(e.getMessage());
}
答案 2 :(得分:0)
要获取任何城市或国家/地区的详细信息,请使用定义的here。 api基本上是 - http://maps.googleapis.com/maps/api/geocode/json?address=<yourCityName>&sensor=false