我正在使用 C# 中的 Gmap(很棒的 API,顺便说一句)开发一个应用程序,不要与 google-map API 混淆,从那时起我做了一些非常酷且有用的东西。
我的问题是我的一些客户没有互联网连接,这就是为什么我需要能够离线显示背景(地图)。我曾经使用过该物业GMap.NET.AccessMode.ServerAndCache;
从服务器获取我的数据,现在我希望能够使用GMap.NET.AccessMode.CacheOnly
具有完整的缓存。
让他们通过连接加载缓存以准备离线使用是不可能的,PC 永远不会连接到互联网。经过一番研究,我了解到 OpenStreetMap 是唯一一个允许我免费使用他们的地图的开源地图(这很好,因为他们有非常好的地图)。我下载了一张 20GB 的欧洲地图,但我不知道如何将其指定为缓存(我知道如何找到缓存文件夹)。
大多数时候,我的 Google 搜索显示人们试图创建一个虚拟 SQLite 服务器,其中包含通过本地主机访问的数据库中的所有地图图块,但老实说,我认为这非常复杂,我想知道是否有人有想法允许我离线使用这些地图或这个 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.NET\TileDBv5\en 中
成功预取图块后,您可以将文件复制到离线电脑中的同一位置,它应该使用它(或者通过 USB 或其他方式将整个 GMap.NET 文件夹复制到离线电脑)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)