O Bing Maps 7 suporta KML?

9

Não estou tendo sorte em encontrar exemplos. Encontrei código como esse abaixo, mas isso é para versões anteriores.

shapeLayer = new VEShapeLayer();
shapeSpec = new VEShapeSourceSpecification(VEDataType.ImportXML, layer.url, shapeLayer);
veMap.ImportShapeLayerData(shapeSpec);
ca0v
fonte
Eu não acho que este exemplo represente kml. Isso parece esri shapefile para meu olho destreinado. Dito isto, tenho certeza de que você poderia fazer um mashup entre bing e GE, mas leia a licença para restrições.
precisa saber é o seguinte
Nada a ver com os shapefiles da ESRI Brad. Desde o doco API - msdn.microsoft.com/en-us/library/bb412413.aspx VEShapeLayer classe contém informações sobre camadas de forma. As camadas de forma são um mecanismo para criar e gerenciar grupos arbitrários de formas (pinos, polilinhas e polígonos). As camadas de forma do mapa podem ser criadas a partir de arquivos XML do GeoRSS, blocos de mapa personalizados ou de qualquer coleção pública do Bing Maps ( maps.live.com ).
user2856

Respostas:

2

Como mencionado acima, o GeoRSS e o KML não são suportados. No entanto, alguém escreveu um intérprete GeoRSS para o Bing Maps v7. E como os arquivos KML e GeoRSS são ambos XML, você pode converter facilmente entre os dois usando XSL. Algumas caçadas mostram que muitas pessoas falaram sobre isso, mas não consigo encontrar nenhum arquivo XSL real que o faça. No entanto, encontrei um que fez o contrário, convertendo o GeoRSS para KML , o que deve lhe dar uma boa idéia de por onde começar, se você mesmo escreveu.

Se você precisar fazer isso apenas uma vez, poderá usar os dois sites a seguir para converter KML em GeoRSS via CSV:

  1. Um conversor de KML para CSV usando XSL.
  2. Um webapp CSV para GeoRSS

E uma opção final é simplesmente escrever seu próprio intérprete KML, da mesma maneira que alguém escreveu seu próprio intérprete GeoRSS , por @Derek.

Patrick
fonte
Estou confuso ... como o GeoRSS é suportado com a API de mapas bing? É muito difícil dizer que escrever seu próprio código de análise conta como "suportado".
Derek Swingley
Desculpe, mas não há suporte para isso, mas a postagem à qual vinculei tem um intérprete para usar o GeoRSS no Bing v7 com jQuery. Vou reescrever para ficar mais claro.
Patrick
4

Parece que a resposta é não. Estou dizendo isso com base na análise dos documentos do SDK e neste segmento: Procurando por exemplo KML ou GeoRSS no Bing Maps Ajax Control v7 .

Se o suporte a KML for crucial, você poderá usar a API ArcGIS da Esri para JavaScript, pois ela oferece suporte a camadas KML acessíveis ao público . Divulgação completa: Trabalho na Esri na equipe da API JavaScript.

Derek Swingley
fonte
Curioso: acho difícil ler a licença ESRI para JSAPI. Alguém pode usar o jsapi para publicar mapas? Por exemplo, eu poderia usar o JSAPI para exibir mapas bing e não violar nenhuma licença ESRI? Mesmo para o Google, OSM, ESRI Public Tiles? Ou é necessário que o usuário seja um usuário do ArcGIS Server? OL está aberto, mas é JSAPI?
ca0v 27/02
11
@ user2023 Estamos discutindo o licenciamento JSAPI internamente e concordamos que a história não está clara. Estamos trabalhando para melhorar isso e planejamos atualizar várias páginas para refletir uma história de licenciamento mais simples e fácil de entender. Até atualizarmos as várias páginas, a história é a seguinte: use o JSAPI para sites / aplicativos internos, externos, não comerciais e comerciais, gratuitamente. Você não precisa pagar a menos que comece a armazenar uma grande quantidade de dados no arcgis.com e a usar os serviços (geometria, localizador / geocodificação e roteamento) no arcgis.com.
Derek Swingley
2

O Bing Maps 7.0 não inclui um conversor KML. Mas como ele usa objetos JavaScript para exibir dados no mapa (consulte a API do Bing ), você pode analisar manualmente o kml e convertê-lo nos respectivos objetos.

Em este exemplo de código , eu uso o JavaScript para converter dados de polígono de KML para novos objetos Microsoft.Maps.Polygon. Eu usaria o código abaixo para adicionar os polígonos ao meu mapa do 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);
Ryan Done
fonte
Seu KML precisa estar em uma determinada forma? Ou isso funcionaria em qualquer arquivo KML?
J86
0

Como a maioria das outras postagens mencionou, não parece que o KML seja diretamente suportado no controle Bing Maps Ajax v7. No entanto, pensei que vale a pena mencionar que ele é supostamente suportado na GUI de mapas normal. Na seguinte postagem no blog do Bing, descreve como se pode importar um KML para o Bing Maps "Meus lugares":

Não é exatamente o que a pergunta estava procurando, mas potencialmente útil para esse tipo de situação.

Scott H
fonte