0

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()call を使用すると、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 に答える