Bing Maps 7是否支持KML?


9

我没有运气找到例子。我在下面找到了类似的代码,但这是针对早期版本的。

shapeLayer = new VEShapeLayer();
shapeSpec = new VEShapeSourceSpecification(VEDataType.ImportXML, layer.url, shapeLayer);
veMap.ImportShapeLayerData(shapeSpec);

我认为该示例不代表kml。在我未经训练的眼睛中,这看起来像esri shapefile。也就是说,我确信您可以在bing和GE之间进行混搭,但请阅读许可证以了解限制。
布拉德·尼索姆

与ESRI shapefile布拉德无关。从API DOCO - msdn.microsoft.com/en-us/library/bb412413.aspx VEShapeLayer类包含有关形状的层的信息。形状层是一种用于创建和管理任意形状组(柱形图,折线和多边形)的机制。可以从GeoRSS XML文件,自定义地图图块或任何公共“必应地图”(maps.live.com)集合创建地图形状图层。
2011年

Answers:


2

如上所述,不支持GeoRSS和KML。但是,有人为Bing Maps v7 编写了GeoRSS解释器。由于KML文件和GeoRSS文件都是XML,因此您可以使用XSL在两者之间轻松转换。一些狩猎表明,很多人都在谈论它,但是我找不到任何实际的XSL文件。但是,我确实找到了相反的方法,将GeoRSS转换为KML,如果您编写了自己的书,这应该使您对从哪里开始有了一个很好的了解。

如果您只需要执行一次,则可以使用以下两个网站通过CSV将KML转换为GeoRSS:

  1. 一个KML到CSV转换器使用XSL。
  2. 一个CSV到的GeoRSS的webapp

最后一个选择就是简单地编写自己的KML解释器,就像每个@Derek 有人编写自己的GeoRSS解释器一样。


我很困惑... bing maps API如何支持GeoRSS?可以说将自己的解析代码计数为“受支持的”是不小的意思。
德里克·斯温利

抱歉,不支持该功能,但是我链接到帖子中有一个解释器,用于在Bing v7和jQuery中使用GeoRSS。我将重写以更清楚。
Patrick

4

看起来答案是否定的。我说这是基于查看他们的SDK文档和以下线程: 在Bing Maps Ajax Control v7中查找KML或GeoRSS示例

如果KML支持至关重要,则可以使用Esri的ArcGIS API for JavaScript,因为它支持可公开访问的KML图层。全面披露:我在Esri的JavaScript API团队工作。


好奇:我发现JSAPI的ESRI许可证很难阅读。任何人都可以使用jsapi发布地图吗?例如,我可以使用JSAPI来显示bing映射,而不违反任何ESRI许可证吗?Google,OSM,ESRI公共图块是否相同?还是该用户必须是ArcGIS Server用户?OL是开放的,但是JSAPI是吗?
ca0v 2012年

1
@ user2023我们一直在内部讨论JSAPI许可,并同意这个故事还不清楚。我们正在努力对此进行改进,并计划更新几个页面以反映一个更简单,更容易理解的许可故事。在我们更新各个页面之前,故事是这样的:免费使用JSAPI用于内部,外部,非商业和商业站点/应用程序。除非您开始在arcgis.com中存储大量数据并在arcgis.com上使用服务(几何,定位器/地理编码和路由),否则无需付费。
Derek Swingley,2012年

2

Bing Maps 7.0不包含KML转换器。但是,因为它使用JavaScript对象在地图上显示数据(请参见Bing API),所以您可以手动解析kml并将其转换为相应的对象。

此代码示例中,我使用JavaScript将KML多边形数据转换为新的Microsoft.Maps.Polygon对象。然后,我将使用下面的代码将多边形添加到我的Bing地图中。

// Initialize the Map.
var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), {credentials:"Bing Maps Key"});

// Insert your own code to get your KML string here.

// Parse the kml into Microsoft.Maps.Polygon objects and add them to the map.
var polygons = bingKmlParser.parsePolygons(kmlString);
map.entities.push(polygons);

您的KML是否必须采用某种形状?还是可以在任何KML文件上使用?
J86


0

正如大多数其他文章所提到的,Bing Maps Ajax控件v7似乎不直接支持KML。但是,我认为值得一提的是,正常的地图GUI支持它。在以下Bing博客文章中,它描述了如何将KML导入Bing Maps“我的位置”:

问题并不完全是寻找的内容,但对于这种情况可能很有用。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.