0

场景如下:

  • 存在输出有效 GeoRSS 提要的 WCF Web 服务。这存在于它自己的域中,因为许多不同的应用程序都可以访问它。

  • 已使用 VEMap(Bing/虚拟地球地图对象)的实例创建了一个网页(在不同的站点上)。

现在,VEMap 可以通过以下方式接受这种格式的输入提要:

var layer = new VEShapeLayer();
var veLayerSpec = new VEShapeSourceSpecification(VEDataType.GeoRSS, "someurl", layer);

map.ImportShapeLayerData(veLayerSpec, onComplete, true);

onComplete 是一个回调函数,我用它来用自定义的东西替换默认的 pin 图形。

问题与“someurl”有关,它是包含地理信息(georss 简单格式)的本地 xml 文件的路径。我已经意识到这个提要和地图必须托管在同一个域中,所以我创建了一个通用处理程序来读取远程提要并以相同的格式返回它。

var veLayerSpec = new VEShapeSourceSpecification(VEDataType.GeoRSS, "/somelocalhandler.ashx", layer);

当我这样做时,我得到了 VEMap 错误(“z 为空”)。这与尝试访问远程提要时收到的错误相同。当我将提要复制到本地 xml 文件(即“feed.xml”)中时,没有错误。

目前操作顺序为:远程提要 -> 本地处理程序 -> VEMap 导入

如果我把这个程序复杂化了,请告诉我!我对 Bing Maps API 有点陌生,可能错过了一些东西。任何帮助表示赞赏。

4

1 回答 1

0

我上面的格式实际上非常接近我需要的格式。Mike McDougall找到了类似的解决方案。虽然我直接通过处理程序传递 RSS 提要(直接写入读取流),但我只需要在处理程序中指定以下内容:

context.Response.ContentType = "text/xml";
context.Response.ContentEncoding = System.Text.Encoding.UTF8;

通过上述修复,我可以让远程 GeoRSS 提要成功加载单独托管的虚拟地球地图实例。

于 2010-03-19T18:19:14.277 回答