场景如下:

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

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

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

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

map.ImportShapeLayerData(veLayerSpec, onComplete, true);

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

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

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

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

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

如果我使这个过程过于复杂,请告诉我!我对 Bing 地图 API 有点陌生,可能错过了一些东西。如有任何帮助,我们将不胜感激。

有帮助吗?

解决方案

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

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

通过上述修复,我能够让远程 GeoRSS 源成功加载单独托管的 Virtual Earth 地图实例。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top