Увеличение вызывает (тяжелые) проблемы в Bing Maps с полилиниями - PullRequest
1 голос
/ 07 января 2011

Здравствуйте, у меня есть некоторые проблемы с элементом управления Bing Map.

Если я приближаюсь к полилиниям, они начинают исчезать (снизу вверх и справа налево)
Полилинии генерируются динамически с помощью ItemsControl (того, который включен в пространство имен карт), привязанного к коллекции моих собственных LocationData из ViewModel, которые преобразуются IValueConverter в определенные LocationPoints карты.
Некоторые значения, которые недоступны из ViewModel, задаются в загруженном событии.
Карта и контейнер растягиваются на весь экран.

Так что, если линии начинают исчезать, и я уменьшаю изображение с помощью кнопки в моей панели приложений

private void ZoomOut_Click(object sender, RoutedEventArgs e)
{
    map1.ZoomLevel -= 1.0;
}

Приложение выходит без исключения ...
Я проверил его на реальном устройстве с отладчиком и без него, и отладчик говорит только, что он потерял соединение с устройством.

Кто-нибудь сталкивался с подобными или похожими проблемами и, надеюсь, решил их?

Спасибо за любую помощь.

PS: Мои LocationData содержат приблизительно 100 - 200 точек, которые разбиты на 3 - 7 линий, которые не могут быть слишком большими или?

1 Ответ

2 голосов
/ 02 августа 2011

Да, сотни баллов - это слишком много, но это наименьшая из ваших проблем. То, как вы это закодировали, вы пересчитываете и пересчитываете свои очки каждый раз, когда происходит панорамирование или масштабирование.

  • Не используйте конвертер типов. Конвертируйте ваши очки один раз, кешируйте конвертированные очки и привязывайте их к конвертированным.
  • Исследуйте квадродерево и то, как оно применяется к выбору вашей точки, пропорционально уровню масштабирования.
  • Применить обтравочный прямоугольник. По моему опыту, на полградуса больше каждая сторона вашей области отображения работает хорошо.
  • Изучите модель событий карты Bing и измените дизайн своего кода, чтобы вы могли отбирать, обрезать и наносить на карту только когда манипуляции с картой прекращаются.
  • В идеале, запишите свою логику отбраковки, обрезки и печати так, чтобы она была асинхронной и могла сигнализировать об отмене, чтобы, если манипуляции возобновились до завершения отбраковки, обрезки и заговора, ее можно было отменить и перезапустить.

Используя вышеописанные методы, я могу получить производительность, сопоставимую со встроенной картой.

...