VEMap和GeoRSS Feed(单独托管)

时间:2010-03-19 15:02:59

标签: api bing-maps virtual-earth georss

方案如下:

  • 存在一个输出有效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有点新意,可能错过了一些东西。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

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

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

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