2016-06-16 4 views
0

Я работаю с объектом MapBox от SharpMap в приложении Windows Forms C#, и я не могу найти, как заставить уровень масштабирования работать. Объект MapBox находится в объекте TabControl.Как правильно инициализировать уровень масштабирования в объекте SharpMap?

Этот класс вызывается после основного вызова InitializeComponent() в моем приложении.

public void InitializeMap(SharpMap.Forms.MapBox mapBox) 
     { 
      mapBox.Map.BackgroundLayer.Add(new SharpMap.Layers.TileAsyncLayer(
       new BruTile.Web.OsmTileSource(), "OSM")); 

      mapBox.Map.Zoom = 10; // 
      mapBox.Refresh(); 
     } 

Независимо записываемое значение для атрибута mapBox.Map.Zoom, это всегда такой же высокий уровень масштабирования.

С другой стороны, если я использую вызов mapBox.Map.ZoomToExtents(), он правильно масштабирует до уровня уровня OSM.

Я полагаю, что я делаю неправильные вещи, но я не могу найти, в чем проблема.

ответ

0

mapBox.Map.Zoom всегда совпадает с mapBox.Map.Envelope.Width.

Вместо того, чтобы просто масштабировать, используйте mapBox.Map.ZoomToBox(new GeoAPI.Geometries.Envelope(-5.0, 5.0, -5.0, 5.0)). Карта будет позиционироваться и масштабироваться так, чтобы весь конверт находился внутри карты.

Конверт в моем примере имеет ширину 10, но если ваша карта шире, чем высокая mapBox.Map.Zoom будет больше, так как (как я уже говорил выше) ее значение совпадает с шириной видимой часть карты.