如何在uwp中使用OSM离线地图?没有可用的互联网连接时出现问题

How to use OSM offline maps in uwp? Issue when no internet connection available

离线映射运行良好,OSM 的所有位图都来自同一台机器上的本地主机服务器。一切都很好,可以看到我所有的地图,但是如果 wifi 没有连接到互联网,地图将完全停止工作并显示黑屏

我已经在 wifi 关闭时测试了服务器,似乎在浏览器中显示了正确的地图图块。

我使用指向本地节点切片服务器的 HttpMapTileDataSource 获取地图

            var serverUrl = string.Format("http://127.0.0.1:6543/{0}", newTileInfo.TileUri);
            var url = string.Format("{0}/{{zoomlevel}}/{{x}}/{{y}}.png", serverUrl);
            HttpMapTileDataSource dataSource = new HttpMapTileDataSource(url);

            MapTileSource tileSource = new MapTileSource(dataSource);
            tileSource.AllowOverstretch = true;
            tileSource.IsFadingEnabled = false;

            _zoom = newTileInfo.Range;

            MapControl1.TileSources.Add(tileSource);

看到这个问题后,我猜测离线地图是可以使用地图控件的权限(必须在线,这违背了离线地图的意图)

改为HttpMapTileDataSource, note that, as of build 15063, local uris don't work anymore. As you are connecting to 127.0.0.1 which is the local server, so that you may need to use a CustomMapTileDataSource。对于每个请求的图块,都会调用事件处理程序 BitmapRequested。在此处理程序中,您可以将任何位图传递给地图。

更多详情请参考Overlay tiled images on a map