2015-07-13 74 views
-1

首先,我對我的英語感到抱歉。 我嘗試在谷歌地圖android api中設置精確的visibile界限。例如地圖只會顯示美國的地區,用戶不能將地圖滾動到加拿大。當你看鏈接時,你可以理解我想要做的事情。我認爲我可以用CameraChangeListener來獲取可見區域,但我無法實現算法。你可以幫我嗎 ? http://sehirharitasi.ibb.gov.tr/谷歌地圖Android套裝可見邊界

回答

0

這是不那麼容易和好你的鏈接,但它的東西,可以工作:

//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)); 
       }     
     } 
+0

非常感謝... – Suheyb

+0

真的有用嗎?因爲'** map已被滾動後,onCameraChange()'將被調用**! –

+0

是的,這就是Google API的行爲,除非API仍然存在,否則你不能擁有比這更好的東西! –