如何在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。
离线映射运行良好,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。