Поддерживает ли Bing Maps 7 KML?


9

Мне не повезло найти примеры. Я нашел такой код ниже, но это для более ранних версий.

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

Я не думаю, что этот пример представляет кмл. Это выглядит как esri shapefile для моего неподготовленного глаза. Тем не менее, я уверен, что вы могли бы сделать гибрид между Bing и GE, но прочитайте лицензию для ограничений.
Брэд Несом

Ничего общего с ESRI шейп-файлы Брэд. Из API doco - msdn.microsoft.com/en-us/library/bb412413.aspx Класс VEShapeLayer Содержит информацию о слоях фигур. Слои фигур - это механизм для создания и управления произвольными группами фигур (канцелярские кнопки, полилинии и полигоны). Слои фигур карты можно создавать из XML-файлов GeoRSS, пользовательских листов карты или из любой общедоступной коллекции Bing Maps ( maps.live.com ).
user2856

Ответы:


2

Как упоминалось выше, GeoRSS и KML не поддерживаются. Однако кто-то написал интерпретатор GeoRSS для Bing Maps v7. А поскольку файлы KML и GeoRSS являются XML, вы можете легко конвертировать их между собой, используя XSL. Некоторая охота показывает, что многие говорили об этом, но я не могу найти ни одного реального XSL-файла, который бы это делал. Однако я обнаружил, что тот, кто сделал наоборот, преобразовал GeoRSS в KML , что должно дать вам хорошее представление о том, с чего начать, если вы написали свой собственный.

Если вам нужно сделать это только один раз, вы можете использовать следующие два веб-сайта для преобразования KML в GeoRSS через CSV:

  1. KML в CSV конвертер с помощью XSL.
  2. CSV для GeoRSS веб - приложение

И последний вариант - просто написать свой собственный интерпретатор KML, точно так же, как кто-то написал свой собственный интерпретатор GeoRSS , согласно @Derek.


Я в замешательстве ... как GeoRSS поддерживается API Bing Maps? Довольно сложно сказать, что написание собственного кода синтаксического анализа считается «поддерживаемым».
Дерек Суингли

Извините, это не поддерживается, но у поста, на который я ссылался, есть интерпретатор для использования GeoRSS в Bing v7 с jQuery. Я перепишу, чтобы быть более понятным.
Патрик

4

Похоже, ответ нет. Я говорю об этом, основываясь на своих документах по SDK и этой теме: Поиск примера KML или GeoRSS в Bing Maps Ajax Control v7 .

Если поддержка KML имеет решающее значение, вы можете использовать ArcGIS API Esri для JavaScript, поскольку он поддерживает общедоступные слои KML . Полное раскрытие: я работаю в Esri в команде JavaScript API.


Любопытно: мне трудно прочитать лицензию ESRI для JSAPI. Кто-нибудь может использовать jsapi для публикации карт? Например, могу ли я использовать JSAPI для отображения карт bing и не нарушать какие-либо лицензии ESRI? То же самое для Google, OSM, ESRI Public Tiles? Или необходимо, чтобы пользователь был пользователем ArcGIS Server? ПР открыт, но есть ли JSAPI?
приблизительно

1
@ user2023 Мы обсуждали внутреннее лицензирование JSAPI и согласны, что история неясна. Мы работаем над улучшением этого и планируем обновить несколько страниц, чтобы отразить более простую и понятную историю лицензирования. Пока мы не обновим различные страницы, история такова: используйте JSAPI для внутренних, внешних, некоммерческих и коммерческих сайтов / приложений бесплатно. Вам не нужно платить, если вы не начнете хранить большой объем данных на arcgis.com и не используете сервисы (геометрия, локатор / геокодирование и маршрутизация) на arcgis.com.
Дерек Суингли

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

1

Используйте Openlayers !! Вы можете загрузить файлы KML и установить Bing в качестве слоя базовой карты. И, самое главное, это открытый исходный код, абсолютно стабильный и очень активный проект.

http://dev.openlayers.org/sandbox/rdewit/kml/examples/kml_wmsc_ows5.html

http://openlayers.org/dev/examples/bing.html


Не совсем ответ на проблему, но хороший обходной путь.
ca0v

0

Как упоминалось в большинстве других постов, не похоже, что KML напрямую поддерживается в элементе управления Ajax Bing Maps v7. Однако я подумал, что стоит упомянуть, что он предположительно поддерживается в графическом интерфейсе карт нормалей. В следующем сообщении в блоге Bing описывается, как можно импортировать KML в Bing Maps «Мои места»:

Не совсем то, что искал вопрос, но потенциально полезно для такой ситуации.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.