当我搜索城市(或任何东西而不是国家名称)时,Android抛出异常的地理位置适用于国家/地区名称

时间:2015-11-04 05:34:02

标签: android google-geocoder

当我按国家/地区名称搜索时,它工作正常,但是当我搜索城市或地点时,应用程序崩溃。这是代码:

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);

3 个答案:

答案 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