离线地图的数据可以通过这种发现获得:在maptilesource中的GetUri函数中把其中的Uri所指向的图片保存到本地。
离线工作时,从本地获得这些图片来生成地图。
但如果要自己编码把这些图片显示到地图控件中相当麻烦。但又不能通过uri的方式直接访问独立存储中的内容。
public class MyTileSource : TileSource
{
public MyTileSource()
: base("BingMapUriBase")
{
firstTile = true;
}
public override Uri GetUri(int x, int y, int zoomLevel)
{
return new Uri(string.Format(this.UriFormat, new Random().Next() % 4, x, y, zoomLevel));
但我的问题是 如何返回独立存储中的数据呢?
}
}
然后把这个类的一个实例添加到MapTileLayer中,再添加到Map中。
BingMap应该是通过这里的GetUri返回的Uri去获取该区域(x,y,zoomlevel)的地图图片。所以最简单的实现离线地图的方法就是生成一个指向本地文件的Uri,然后BingMap去自
动加载。
当然,也可以通过其他方式让BingMap去加载这些本地文件。不过我还没有找到能让BingMap加载本地文件的方法。特来求助。
如果使用arcgis提供的控件的话这个问题可以解决,arcgis里已经给留了扩展的地方。
具体例子请见 http://blog.newnaw.com/?p=993 (ArcGIS移动客户端中可以自动离线的底图图层 - 菩提老王的葡萄架).
arcgis的加载效率与效果个人认为不如 ms的好一些(虽然它功能上的强大的确可以横扫一切gis软件),所以目前还想用winPhone上的Maps控件来做。我的QQ191131029,欢迎与我交流。