VEMap и канал GeoRSS (размещаются отдельно) - PullRequest
0 голосов
/ 19 марта 2010

Сценарий таков:

  • Существует веб-служба WCF, которая выводит действительный фид GeoRSS. Он находится в своем собственном домене, так как к нему имеют доступ различные приложения.

  • Создана веб-страница (на другом сайте) с экземпляром VEMap (объект карты Bing / Virtual Earth).

Теперь VEMap может принимать входной канал в этом формате с помощью следующего:

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

map.ImportShapeLayerData(veLayerSpec, onComplete, true);

onComplete - это функция обратного вызова, которую я использую для замены графического вывода по умолчанию на что-то свое.

Вопрос касается "someurl", который представляет собой путь к локальному XML-файлу, содержащему географическую информацию (простой формат georss). Я понял, что этот канал и карта должна быть размещена в одном домене, поэтому я создал универсальный обработчик, который читает удаленный канал и возвращает его в том же формате.

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

Когда я это делаю, я получаю ошибку VEMap ("z is null"). Это та же самая ошибка, которую можно получить при попытке получить доступ к удаленному каналу. Когда я копирую канал в локальный XML-файл (например, «feed.xml»), ошибки не возникает.

В настоящий момент порядок операций такой: удаленная подача -> локальный обработчик -> импорт VEMap

Если я слишком усложняю эту процедуру, дайте мне знать! Я немного новичок в API Карт Bing и, возможно, что-то пропустил. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 19 марта 2010

Формат, который у меня есть выше, на самом деле очень близок к тому, что мне было нужно. Аналогичное решение было найдено Майком МакДугаллом. Хотя я передавал RSS-канал напрямую через обработчик (непосредственно записывая поток чтения), мне просто нужно было указать следующее из обработчика:

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

С помощью вышеуказанного исправления я могу получить удаленный фид GeoRSS для успешной загрузки отдельно размещенного экземпляра карты Virtual Earth.

...