2016-08-24 57 views
0

所以MinZoomLevelMaxZoomLevel是隻能得到的屬性。如何使用Bing更改MapControl上的MinZoomLevel或MaxZoomLevel?

我不能繼承MapControl並覆蓋它們,因爲MapControl是密封的。

我可以使用不同的MapTileSource,並設置那裏ZoomLevelRange和那個作品。

但主要問題是,如何設置MinZoomLevelMaxZoomLevel默認MapControl使用Bing地圖?我無法在bing地圖的MapTileSource上設置它,因爲該地圖對於bing地圖而言是空的。

編輯:也有不同MapTileSource當我設置ZoomLevelRange,它也沒有幫助。你仍然可以在它之外滾動,但是你沒有得到數據。所以這只是數據收縮。不滾動縮小。

+0

從文檔的MinZoomLevel:_「縮放級別的最大值和最小值取決於地圖視圖類型:2D,3D,或的Streetside」 _ – stuartd

回答

0

MinZoomLevel和MaxZoomLevel是隻讀的,不能設置它們。

您可以嘗試聆聽ZoomLevelChanged event,如果縮放級別超出您想要限制的範圍,請將其設置回所需的範圍內?

喜歡的東西:

MapControl mapControl = new MapControl(); 
mapControl.ZoomLevelChanged += MapControl_ZoomLevelChanged; 

private void MapControl_ZoomLevelChanged(MapControl sender, object args) 
{ 
    const int maxZoom = 7; 
    const int minZoom = 5; 

    if (mapControl.ZoomLevel > maxZoom) 
    { 
     mapControl.ZoomLevel = maxZoom; 
    } 
    else if(mapControl.ZoomLevel < minZoom) 
    { 
     mapControl.ZoomLevel = minZoom; 
    } 
} 
+0

嗯是的,我知道那。謝謝。這個方法很有效,但是很笨拙,因爲當你用MouseWheel滾動並且低於5或者7時,它會跳躍。當我設置「ZoomLevelRange」時,也有不同的'MapTileSource',它也沒有幫助。你仍然可以在它之外滾動,但是你沒有得到數據。所以這只是數據收縮。 – Jacob

相關問題