【问题标题】:How to initialize correctly the zoom level in a SharpMap object?如何正确初始化 SharpMap 对象中的缩放级别?
【发布时间】:2016-10-18 11:49:57
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net mapping gis sharpmap


    【解决方案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 将大于该高度,因为(如上所述)它的值与地图的可见部分。

    【讨论】:

      猜你喜欢
      • 2015-06-21
      • 2023-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多