GMap .net离线

Dam*_*ois 6 c# maps caching gmap.net

我在c#(伟大的API,顺便说一句)中使用Gmap开发应用程序,不要与google-map API混淆,从那以后我做了一些非常酷和有用的东西.

我的问题是我的一些客户没有互联网连接,这就是为什么我需要能够离线显示背景(地图).我曾经使用该属性GMap.NET.AccessMode.ServerAndCache;从服务器获取我的数据,现在我希望能够使用GMap.NET.AccessMode.CacheOnly完整的缓存.

让他们加载具有连接的缓存以准备离线使用不是一种选择,PC永远不会连接到互联网.经过一些研究,我了解到OpenStreetMap是唯一允许我免费使用他们的地图的开源地图(这很好,因为他们有非常好的地图).我下载了20GB的欧洲地图,但我不知道如何将其指定为缓存(我知道如何找到缓存文件夹).

大多数时候,我的谷歌搜索向我展示了人们试图创建一个虚拟sqlite服务器,其中包含通过localhost访问的数据库中的所有地图块,但老实说,我认为这非常复杂,我想知道是否有人有想法允许我离线使用这些地图或者这个api的文档链接,不可能在网上找到(我找到了消息来源,但几乎没有评论也没有解释).

提前谢谢,抱歉我的英语不好.

réponsesenfrançaisbundvenues.

pm1*_*101 3

您可以创建一个单独的程序来预取图块以供离线使用。或者使用GMap NET演示程序(https://github.com/radioman/greatmaps/tree/master/Demo.WindowsPresentation)

下面的代码用于在使用 ALT + 鼠标第一个按钮选择区域后按下按钮。

RectLatLng area = mapView.SelectedArea;
if (!area.IsEmpty)
{
    for (int i = (int)mapView.Zoom; i <= mapView.MaxZoom; i++)
    {
        TilePrefetcher obj = new TilePrefetcher();
        obj.Title = "Prefetching Tiles";
        obj.Icon = this.Icon;
        obj.Owner = this;
        obj.ShowCompleteMessage = false;
        obj.Start(area, i, mapView.MapProvider, 100);
    }
    DialogResult = true;
    Close();
}
else
{
    MessageBox.Show("No Area Chosen", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
Run Code Online (Sandbox Code Playgroud)

(大部分复制自Gmap NET Demo源码)

https://github.com/radioman/greatmaps/tree/master/Demo.WindowsPresentation

文件存储在

C:\Users\[您的用户名]\AppData\Local\GMap.NET\TileDBv5\en

成功预取图块后,您可以将文件复制到离线电脑中的同一位置,并且它应该使用它(或者通过 USB 或其他方式将整个 GMap.NET 文件夹复制到离线电脑)。