方案如下:
存在一个输出有效GeoRSS Feed的WCF Web服务。它存在于自己的域中,因为许多不同的应用程序都可以访问它。
使用VEMap(Bing / Virtual Earth地图对象)的实例创建了一个网页(在其他网站上)。
现在,VEMap可以通过以下方式接受此格式的输入Feed:
var layer = new VEShapeLayer();
var veLayerSpec = new VEShapeSourceSpecification(VEDataType.GeoRSS, "someurl", layer);
map.ImportShapeLayerData(veLayerSpec, onComplete, true);
onComplete是一个回调函数,我用来用自定义的东西替换默认的图形图形。
问题在于“someurl”,它是包含地理信息(georss simple format)的本地xml文件的路径。我已经意识到这个feed并且地图必须托管在同一个域中,所以我创建了一个通用处理程序来读取远程feed并以相同的格式返回它。
var veLayerSpec = new VEShapeSourceSpecification(VEDataType.GeoRSS, "/somelocalhandler.ashx", layer);
当我这样做时,我得到VEMap错误(“z为空”)。这与尝试访问远程源时会收到的错误相同。当我将feed复制到本地xml文件(即“feed.xml”)时,没有错误。
目前的操作顺序为:远程Feed - >本地处理程序 - > VEMap导入
如果我过度使这个程序复杂化,请告诉我!我对Bing Maps API有点新意,可能错过了一些东西。任何帮助表示赞赏。
答案 0 :(得分:0)
我上面的格式实际上非常接近我的需要。找到了类似的解决方案by Mike McDougall.虽然我直接通过处理程序传递RSS提要(直接写入读取流),但我只需要在处理程序中指定以下内容:
context.Response.ContentType = "text/xml";
context.Response.ContentEncoding = System.Text.Encoding.UTF8;
通过上述修复,我可以让远程GeoRSS订阅源成功加载单独托管的Virtual Earth地图实例。