我正在Windows Forms C#应用程序中使用来自SharpMap的MapBox对象,但我似乎找不到如何使缩放级别工作。MapBox对象位于TabControl对象中。
这个类是在我的应用程序中的主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层的范围。
我想我做错了一件简单的事情,但我似乎找不到问题所在。
发布于 2017-03-30 19:38:07
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将会大于这个值,因为(正如我上面所说的)它的值与地图可见部分的宽度相同。
https://stackoverflow.com/questions/37868037
复制相似问题