GMap .net offline

本文关键字:offline net GMap | 更新日期: 2023-09-27 18:13:49

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

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

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

大多数时候,我的谷歌搜索向我展示了人们试图创建一个虚拟sqlite服务器和所有地图的瓷砖在DB访问localhost,不过说实话,我觉得这是非常复杂的,我想知道如果任何人有一个想法,请允许我使用这些地图离线或链接这个api的文档,在网上不可能找到(我发现来源,但几乎没有评论和解释)。

提前感谢,很抱歉我的英语不好。

GMap .net offline

您可以创建一个单独的程序来预取贴片以供离线使用。或者使用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。净' TileDBv5 ' en

一旦你成功地预取了磁片,你可以将文件复制到脱机pc上的相同位置,它应该使用它(或者只是复制整个GMap)。. NET文件夹通过usb或其他方式到脱机pc)

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

只需将缓存复制到同一目录下的不同机器上即可。

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

缓存目录如下所示TileDBv5'en'Data.gmdb

请注意,您下载的MAP的提供者与您在代码中使用的提供者是相同的。eq: GMap.NET.MapProviders.GMapProviders.OpenStreetMap