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

时间:2015-05-14 03:18:39

标签: android osmdroid

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

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

在PHP API" 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中是否有类似内容?

1 个答案:

答案 0 :(得分:0)

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解决方案一样简单,不是吗?