问题标签 [mapsui]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
582 浏览

gis - Xamarin Mapsui - 如何让地图在世界末日翻滚?

我需要展示一张可以永远水平平移的地图。

我是否可以设置它,以便 TileLayer 滚动显示世界的另一端,平移到地图的尽头?

0 投票
1 回答
355 浏览

c# - 更改 Mapsui Control 中的平移按钮

我在 C# 应用程序中使用 Mapsui 作为映射控件。默认情况下,通过使用鼠标左键拖动来启动平移。我想将其更改为鼠标中键。

有谁知道如何做到这一点?

Mapsui 有一个名为 PanMode 的对象,您可以按如下方式创建一个实例,但是,我相信它只是一个用于在平移时居中地图的枚举:

编辑:

根据“pauldendulk”的回答(感谢您的支持),我认为我需要做这样的事情:

首先,抓住中间按钮单击并将其传递给 mapsui 左按钮方法。不幸的是 MapControlMouseLeftButtonDown() 是一个私有方法,所以这不起作用。

其次,我需要阻止原始的左键单击触发。

同样,这不是正确的语法,因为它会引发异常(不能为空)。

有谁知道如何解决这些问题?

0 投票
3 回答
3727 浏览

xamarin.forms - Mapsui 在 Xamarin Forms 中添加地图引脚


MapsUI我需要在使用OpenStreetMap图块 的地图控件上添加一堆图钉。

问题是我在他们的文档中找不到任何提及引脚的内容,所以我的问题是:

是否有任何可用的引脚但名称不同,或者我必须自己绘制引脚(在我发现的一些示例中使用几何和点),如果是这样,我如何在缩放地图时保持它们相同的大小?

也许有人可以指出我应该在哪里查看他们的文档,以防我失明并且错过了它。

谢谢!

0 投票
1 回答
318 浏览

c# - Mapsui 错误:如何修复 PresentationSource 为空?

我已经开始使用 Mapsui 开发 WPF 应用程序。首先,我尝试在一个单独的 Visual Studio 项目中熟悉 Mapsui。现在我想将我的代码包含到我的主项目中。

目前我收到以下我无法弄清楚的错误消息:

System.Exception:“PresentationSource 为空”

在我的 Mapsui 测试项目中,我没有收到此错误。

我还尝试将我的应用程序代码包含到测试项目中。但在这里我也收到此错误消息。

也许有人知道我应该仔细研究的想法或有直接的解决方案。非常感谢您的帮助!

0 投票
1 回答
2509 浏览

xamarin.forms - 需要一种方法在 Android 和 iOS 上的 Xamarin Forms 中持续跟踪用户的当前位置

我正在为学校开展一个高级项目,该项目要求我通过手机GPS坐标持续跟踪用户。我的最终目标是不断Mapsui用当前用户的位置更新我的地图。我在如何不断将数据更新为Mapsui. 如果我输入静态GPS坐标,该点会正确显示在我的地图上。

确实,让我感到困惑的核心问题是异步函数以及如何在使用Xamarin.Essentials.

任何想法或提示将不胜感激!

0 投票
1 回答
633 浏览

c# - 从 Mapsui/SkiaSharp 打印

我是使用 Mapsui/SkiaSharp 的新手,如果这很明显,请原谅我。

我正在尝试打印!使用Mapsui使用下面的“渲染”方法(调用Mapsui.Rendering.Skia.MapRenderer)将地图渲染到图像,该方法采用地图、Spherical Mercator 中的世界范围以及图像(或窗口)的大小。这适用于屏幕分辨率。

当我打印时,由于打印机的 DPI 较高,地图上的文本很小且不可读。

这可能是我的经验不足,但我知道 Skia 是在跨平台渲染方面完成的,以实现设备独立性。Mapsui 在文档中也有一个关于缩放的特定部分,但它使用SKCanvasView.IgnorePixelScaling引用,我无法通过仅作用于 SKCanvas 的 MapRenderer 访问它。

关于打印渲染我有什么遗漏吗?

是否有我可以使用的打印特定渲染上下文或管道来自动适当地缩放字体,而不是将位图写入 GDI 图形上下文?

(下面的代码是 PrintDocument 中的 OnPrintPage 覆盖)。


编辑添加更多细节;给我一些结果的一种查询方法如下:渲染到 XpsDocument 会创建一个上下文,我可以让文档上下文知道 DPI,它会自动为我调整字体的缩放比例。这并不理想,因为现在我需要操作 XPS 文件来打印它,并且有一些皱纹。

0 投票
1 回答
1097 浏览

forms - Mapsui Xamarin Forms 中心地图

我正在为我的应用程序使用 Mapsui 2.0-beta.22 和 Xamarin Forms 3.4.0。我无法进行地图居中工作,我尝试了许多来自堆栈、其他站点和 Mapsui 示例的示例。

对我来说唯一“可用”的方法是:

map.Home = n => n.NavigateTo(sphericalMercatorCoordinate, map.Resolutions[9]);

从示例中,我使用的 Mapsui 版本在 Map 类中没有方法来居中视图。

我试图从MapViewModel方法中心地图:

我在 NavigationParameters 中传递点坐标,然后用它们创建sphericalMercatorCoordinate. 即使这一点是有效的,NavigateTo从上面使用在任何情况下都不起作用。

0 投票
1 回答
422 浏览

coordinate-systems - 使用 Mapsui,如何为从 shapefile prj 文件读取的坐标系创建一个新的转换类?

如何使用从 prj 文件读取源坐标系统的 ProjNet4GeoAPI 创建与 MapSui.Projections.ITransformation 接口兼容的新转换类。

从 Mapsui 源代码中,有一个 MinimalTransformation 实现了 ITransformation 接口,用于在 SphericalMercator 和 WGS84 之间进行转换。

来自 Mapsui 文档:开箱即用的 Mapsui 对投影的支持是有限的。MinimalProjection 类仅在 SphericalMercator (EPSG:3857) 和 WGS84 (EPSG:4326) 之间进行投影。但是,可以创建自己的转换。您需要实现 ITransformation 接口。在此实现中,您需要使用其他一些投影库。推荐一个是ProjNet4GeoAPI

我可以使用 ProjNet4GeoAPI 创建一个工作转换类,但它实现 GeoAPI.CoordinateSystems.Transformations.ICoordinateTransformation 而不是 Mapsui.Projection.ITransformation

如何在 Mapsui 中使用 ICoordinateTransformation 类?我是否在 Mapsui.Projection 中创建了一个像 SphericalMercator 这样的投影类(参见下面的代码)?

来自 Mapsui.Projection:

源代码:https ://github.com/garykindel/ShapefileProjectionDemo 使用 Mapsui 2.0.0-beta.22 nuget 包,我从 master 手动构建 Mapsui.desktop.dll。

0 投票
1 回答
397 浏览

c# - 如何用单独的 Pins 替换 MapView?

我正在尝试在我的 Xamarin Forms 应用程序(使用 Mapsui 和 Prism)中更改 MapView,因为我需要单独的视图来存储 Pin 图。第一个 MapView(我们称之为default)用于显示列表中的所有引脚。第二个 MapView ( history) 用于显示新的图钉,这些图钉在离开 Page 时会被移除。

我必须Dictionary存储我的 MapView,以便轻松访问我想要的任何视图。每个创建的 MapView 都有相同的 Map 实例。我想从应该隐藏视图中添加的引脚更改default为。historydefault

我用这个改变视图:

带有日志的额外代码用于调试目的 - 它显示正确的值(上一个引脚 = 7,新引脚 = 0,查看引脚 = 0)。

我添加了history不带缩放按钮的视图,以确保它正在改变 - 确实如此(所以我认为不需要发布 XAML)。

我应该如何更改 MapView 以在导航到历史记录时隐藏图钉并在我切换回默认视图时显示它们?还是有更好的方法来“分组” Pin 图并根据名称隐藏/显示它们?

更新 我认为这可能很重要:

这是我添加 Pins 以查看的方式。这与上面的 MapView 相同(所有代码均来自MapService)。

0 投票
2 回答
92 浏览

android - 如何将 map.Envelope.BottomLeft 的输出转换为 LatLon?

我正在使用 MapsUI 和 Xamarin.Forms 创建一个应用程序。

“BottomLeft”属于“Point”类型,具有以下值:X:-20037508.342789 Y:-20037508.342789

我不确定这些值是什么。我读过它们可能是像素,但这对我来说没有多大意义。TopRight 是相同的否定值。我似乎无法从这些信息中得到任何有用的信息。

MyMapControl.Viewport.ScreenToWorld(map.Envelope.BottomLeft) 只是给了我一个 Y 坐标被否定的点(所以它现在是积极的)。

任何帮助将不胜感激。