GMap .net 离线模式

8
我正在使用C#中的Gmap开发应用程序(非常好的API,顺便说一句),不要与Google地图API混淆,我已经做了一些非常酷和有用的工作。
我的问题是我的一些客户没有互联网连接,这就是为什么我需要能够离线显示背景(地图)。我曾经使用属性“GMap.NET.AccessMode.ServerAndCache;”从服务器获取数据,现在我想使用“GMap.NET.AccessMode.CacheOnly”并拥有完整的缓存。
让他们通过连接加载缓存以准备脱机使用不是一个选项,这些电脑永远不会连接到互联网。经过一些研究,我了解到OpenStreetMap是唯一允许我免费使用他们的地图的开源地图(这很好,因为他们有非常好的地图)。我下载了一个20GB的欧洲地图,但我不知道如何指定它作为缓存(我知道如何定位缓存文件夹)。
大多数情况下,我的谷歌搜索结果都是人们试图创建一个虚拟的sqlite服务器,其中包含所有地图的瓷砖,并通过localhost访问DB,但是老实说,我认为这非常复杂,我想知道是否有任何人有想法允许我离线使用这些地图或者提供这个API的文档链接,这在网上很难找到(我找到了源代码,但几乎没有注释和解释)。
谢谢您的帮助,对于我的糟糕的英语表示抱歉。

我的一些客户没有互联网连接。他们也无法访问内部网络吗?如果他们可以访问内部网络,您可以设置自己的OpenStreetMap瓦片服务器。 - Yasuyuki Uno
3个回答

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);
        }

(大部分内容摘自Gmap NET Demo源代码)

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

这些文件存储在C:\ Users \ [您的用户名] \ AppData \ Local \ GMap.NET \ TileDBv5 \ en中。

一旦你成功预获取了瓦片,你可以将文件复制到离线计算机的相同位置,并应该使用它(或者只需通过USB或其他方式将整个GMap.NET文件夹复制到离线计算机)。


0
请注意,您下载的地图提供程序必须与您在代码中使用的提供程序相同。 例如:GMap.NET.MapProviders.GMapProviders.OpenStreetMap

0

使用 gmap.CacheLocation = @"C:\Users\xxx\Desktop\"; 来指定缓存位置。

只需将缓存复制到相同目录下的不同计算机即可正常工作。

要缓存地图数据,请查看我的 Github https://github.com/williamwdu/GMap.NETChacher

缓存目录将如下所示:TileDBv5\en\Data.gmdb


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接