积极答复者
问一个用bingmap做离线地图的问题

问题
答案
-
I think you might be able to get a great deal of what you need from here: http://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Reference_Overlay/MapServer
Also, ESRI for Silverlight looks pretty nice, http://www.esri.com/software/mapping_for_everyone/api/code_gallery.html#silverlight
Cedar- 已标记为答案 世外涛缘MVP 2011年5月31日 12:46
2011年5月9日 3:13
全部回复
-
从TileSource派生一个MyTileSource类。
public class MyTileSource : TileSource
{
public MyTileSource()
: base("BingMapUriBase")
{
firstTile = true;
}
override public Uri GetUri(int x, int y, int zoomLevel)
{
string filename = string.Format("mymap{0}_{1}_{2}.png", zoomLevel, x, y);
var store = IsolatedStorageFile.GetUserStoreForApplication();
if (store.FileExists(filename))
{
var uu = UriMadeUpFromFileName;//生成一个指向该文件的Uri。
return uu;
}
else if(OfflineMode)
{
var uu = new Uri(string.Format(this.UriFormat, new Random().Next() % 4, x, y, zoomLevel));
DownloadFile(uu, filename);//下载图片,保存到本地。
return uu;
}
else
{
return null;
}
}
}然后把这个类的一个实例添加到MapTileLayer中,再添加到Map中。
BingMap应该是通过这里的GetUri返回的Uri去获取该区域(x,y,zoomlevel)的地图图片。所以最简单的实现离线地图的方法就是生成一个指向本地文件的Uri,然后BingMap去自动加载。
当然,也可以通过其他方式让BingMap去加载这些本地文件。不过我还没有找到能让BingMap加载本地文件的方法。特来求助。
2011年4月28日 1:10 -
I think you might be able to get a great deal of what you need from here: http://services.arcgisonline.com/ArcGIS/rest/services/Reference/World_Reference_Overlay/MapServer
Also, ESRI for Silverlight looks pretty nice, http://www.esri.com/software/mapping_for_everyone/api/code_gallery.html#silverlight
Cedar- 已标记为答案 世外涛缘MVP 2011年5月31日 12:46
2011年5月9日 3:13 -
我也遇上与你同样的
如果使用arcgis提供的控件的话这个问题可以解决,arcgis的方法里已经给留了扩展的地方。
具体例子请见 http://blog.newnaw.com/?p=993 (ArcGIS移动客户端中可以自动离线的底图图层 - 菩提老王的葡萄架).
不知道你的问题是否已解决,arcgis的加载效率与效果不如 ms的好一些,所以目前还想用wp上的map控件来做。我的QQ191131029,欢迎与我交流。
2012年4月1日 7:23