假设以下情况:
用户从列表中选择一个国家/地区。点击国家/地区后,地图应缩放到所选国家/地区。
如果我只知道列表中的国家/地区名称,如何在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中是否有类似内容?
答案 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解决方案一样简单,不是吗?