-1
首先,我對我的英語感到抱歉。 我嘗試在谷歌地圖android api中設置精確的visibile界限。例如地圖只會顯示美國的地區,用戶不能將地圖滾動到加拿大。當你看鏈接時,你可以理解我想要做的事情。我認爲我可以用CameraChangeListener來獲取可見區域,但我無法實現算法。你可以幫我嗎 ? http://sehirharitasi.ibb.gov.tr/谷歌地圖Android套裝可見邊界
首先,我對我的英語感到抱歉。 我嘗試在谷歌地圖android api中設置精確的visibile界限。例如地圖只會顯示美國的地區,用戶不能將地圖滾動到加拿大。當你看鏈接時,你可以理解我想要做的事情。我認爲我可以用CameraChangeListener來獲取可見區域,但我無法實現算法。你可以幫我嗎 ? http://sehirharitasi.ibb.gov.tr/谷歌地圖Android套裝可見邊界
這是不那麼容易和好你的鏈接,但它的東西,可以工作:
//When you setup the map:
map.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
checkBounds();
}
});
而且CheckBounds的功能可以檢查可見區域是允許的一個內:
public void checkBounds() {
//non ricostruire allowedbounds ogni volta, sono sempre gli stessi, fatti il build nell'onCreate
LatLngBounds actualVisibleBounds = map.getProjection().getVisibleRegion().latLngBounds;
if (allowedBounds.contains(actualVisibleBounds)){
return
}else{
map.animateCamera(CameraUpdateFactory.newLatLngBounds(allowedBounds));
}
}
或者您可以使用視區的中心,檢查是否在允許的範圍內(允許邊界變焦)
public void checkBounds() {
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(northeast);
builder.include(southwest);
final LatLngBounds allowedBounds = builder.build();
LatLngBounds centro = map.getProjection().getVisibleRegion().latLngBounds;
if (allowedBounds.contains(centro.getCenter()))
return;
else {
map.animateCamera(CameraUpdateFactory.newLatLngZoom(defaultLatLng, zoomLevel));
}
}
非常感謝... – Suheyb
真的有用嗎?因爲'** map已被滾動後,onCameraChange()'將被調用**! –
是的,這就是Google API的行爲,除非API仍然存在,否則你不能擁有比這更好的東西! –