我一直在使用 WPF Mapsui 控件,当使用图块图层(例如 OpenStreetMaps)时,一切似乎总体都工作得很好。
但是,当我不添加图块层并尝试使用 2 个单独的层时,我在缩放和平移时会出现奇怪的行为。在浏览了我能找到的所有文档后,我发现该控件没有显式地具有坐标系,而是使用添加的默认坐标系。这在加载 OSM 时效果很好,因为它使用墨卡托投影,但是当未加载图块并加载两个单独的层时,它似乎仅使用第一层进行缩放/平移限制。这会导致平移仅限于第一层的边界。
有没有办法让控件更新以使用所有添加的图层来确定平移范围和缩放限制?或者,是否有一种简单的方法可以仅使用完整的墨卡托模式进行缩放和平移,即使未加载 OSM 层?
您可以为
Map.Navigator.OverrideResolutions
分配 OpenStreetMap 图块图层中使用的分辨率。
要获取这些分辨率的列表,您可以使用
GlobalSphericalMercator
磁贴模式,如下所示:
map.Navigator.OverrideResolutions = new GlobalSphericalMercator().Resolutions.Select(r => r.Value.UnitsPerPixel).ToList();
您可能还想分配 OverridePanBounds 和 OverrideZoomBounds。