如何使用 OSMDroid 缩放到特定国家/地区?

How to zoom to a specific country with OSMDroid?

假设以下情况:
用户从列表中选择一个国家。单击国家/地区后,地图应缩放至所选国家/地区。

如果我只知道列表中的国家名称,如何在 OSMDroid 中实现 zoomToCountry?

在PHPAPI"GoogleMaps v3"中有一个解决方案像

function findAddress(address) {
        var geocoder = null;
        geocoder = new google.maps.Geocoder();

        if (!address) 
        var address=document.getElementById("countryselect").value;
        if ((address != '') && geocoder) {
          geocoder.geocode( { 'address': address}, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
              if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
               if (results && results[0] && results[0].geometry && results[0].geometry.viewport) 
                    map.fitBounds(results[0].geometry.viewport);
              } else {
                alert("No results found");
              }
            } else {
              alert("Geocode was not successful for the following reason: " + status);
            }
          });
        }
    }

OSMDroid 或 OSMBonuspack 中有类似的吗?

PHP 解决方案是使用国家名称调用地理编码服务,以获取国家边界框。

您可以使用 Nominatim 服务做类似的事情。所以 OSMBonusPack GeocoderNominatim 应该可用。

大致如此(没有错误处理、AsyncTask 等):

GeocoderNominatim coder = new GeocoderNominatim(ctx);
List<Address> results = coder.getFromLocationName(countryName, 1);
Address address = results.get(0);
Bundle extras = address.getExtras();
BoundingBoxE6 bb = extras.getParcelable("boundingbox");

然后:

mapView.zoomToBoundingBox(bb);

就像 PHP/GoogleMaps 解决方案一样简单,不是吗?