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演示程序(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