yandexmobile / yandexmapkit-wp

Yandex Map Kit for Windows
17 stars 2 forks source link

Групировать и обновлять PushPin'ы #4

Closed uncledoc closed 12 years ago

uncledoc commented 12 years ago

Добрый день. Подскажите пожалуйста, как создавать группы PushPin'ов а потом обновлять их?

kzaikin commented 12 years ago

"Из коробки" в мапките такой фичи нет.

Пожалуйста поподробней. Какие группы? Как вы ожидаете они должны отображаться, как себя вести? Если идея окажется стоящей, реализуем.

Но вы можете располагать на карте любые контролы, надо лишь задать контролу координаты через Attached свойство MapLayer.Location.

uncledoc commented 12 years ago

Можно сделать так же само как в API ваших карт для android. Карта может содержать множество слоев, а слои в свою очередь - множество контролов (в том числе и PushPin), в слоях мы можем удалять и добавлять контролы. При вызове у карты метода типа invalidate() - карта перерисовуется на основе слоев. Так же неплохо было бы добавить в слои что-то типа Z-index, для того чтобы регулировать какой слой будет рендерится поверх другого.

Например: у нас есть система которая отслеживает передвижение маршрутного такси по городу. В один слой мы поместим линии маршрута, во второй PushPin с местами остановок, а в третий слой мы будем раз в 10 секунд рисовать PushPin'ы с текущим местоположением маршрутных такси.

kzaikin commented 12 years ago

Ааа, вы об этом. Конечно так можно. контрол Map это ContentControl. В него можно класть что угодно, в том числе MapLayer, который является панелью. В него можно класть пушпины либо другие MapLayer. Пушпины показываются с учётом zindex. В общем смотрите примеры

uncledoc commented 12 years ago

Проблема в том что у MapLayer нет метода типа remove который позволял удалять элементы, в тоге сейчас при малейшем изменении данных - нужно пересоздавать MapLayer и сетить его в Map.Content со всеми вытекающими последствиями.

kzaikin commented 12 years ago

MapLayer - наследник Panel. Чтобы добавить или удалить контрол с панели, используется коллекция MapLayer.Children

<Map ...>

var pushPin = new PushPin(); foo.Children.Add(pushPin); ... foo.Children.Remove(pushPin);

Для перемещения одного и того же пушпина по карте рекомендую не пересоздавать его, а изменять свойство Location

uncledoc commented 12 years ago

Ага, теперь понятно, спасибо большое! Intellisense в студии почему то не отображает методы и свойства родителей.