0

我正在 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 层的范围。

我想我做错了一件简单的事情,但我似乎无法找到问题所在。

4

1 回答 1

1

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会更大,因为(如上所述)它的值与地图可见部分的宽度相同。

于 2017-03-30T11:38:07.057 回答