4

我正在使用Geocoder类从用户键入的字符串地址获取纬度和经度EditText

有趣的是,它返回诸如“q”、“qq”、“n”、“N”之类的查询的结果。有没有办法让它变得更好?(验证或其他什么,或使用其他服务?)

if (!s.toString().isEmpty()) {
          try {
                 List<Address> addresses = geocoder.getFromLocationName(s.toString(), 4);
                            if (addresses.size() > 0) {
                                Address userAddress = addresses.get(0);
                                double latitude = userAddress.getLatitude();
                                double longitude = userAddress.getLongitude();
                                mRestaurantLatLng = new LatLng(latitude, longitude);
                                if (userAddress != null) {
                                    mPin.setVisibility(View.VISIBLE);
                                } else {
                                    mPin.setVisibility(View.GONE);
                                    mRestaurantLatLng = null;
                                }
                            } else {
                                mPin.setVisibility(View.GONE);
                                mRestaurantLatLng = null;
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
4

1 回答 1

0

您总是可以直接使用另一个服务,或者您可以根据您想要的详细程度修剪您的结果。

就像:

List<Address> results = GeoCoder.getFromLocationName(query, 100);
filter(results);
if (results.size() > 0) {
   // Do Stuff
}


....

void filter(List<Address> results) {
   for (int i = 0; i < results.size(); i++) {
      Address address = results.get(i);
      if (!address.hasLatitude() || !address.hasLongitude()) {
          results.remove(i);
      }
      // remove any that dont match your desired detail level
      ...
}
于 2015-09-11T16:17:20.663 回答