gpt4 book ai didi

c# - GMap .net 离线

转载 作者:太空狗 更新时间:2023-10-29 21:53:29 28 4
gpt4 key购买 nike

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

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

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

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

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

réponses en français bienvenues.

最佳答案

您可以创建一个单独的程序来预取图 block 以供离线使用。或者使用 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

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

关于c# - GMap .net 离线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32711953/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com