2016-06-08 4 views
1

В UWP-приложении, содержащем MapControl, есть способ различать манипуляции с картой, сделанной пользователем (например, с помощью масштабирования для увеличения), и один, который производится самим приложением? (например, по телефону mapControl.TrySetViewAsync(...))UWP MapControl: различие между манипуляциями пользователя и приложения

Не похоже, что для этого есть обработчик событий, не так ли? я уже попробовал несколько из них (например, LoadingStatusChanged или CenterChanged), но ни один из них не делает никакой разницы между гается и приложения манипуляции ..

+0

Только что нашел это предложение, представленное на сайте bing-devs: https://binglistens.uservoice.com/forums/283355-ideas/suggestions/9494889-add-a-centermanuallychanged-event-to-mapcontrol - но есть ли способ сделать это самостоятельно? –

ответ

4

Вы должны быть в состоянии зарегистрироваться, чтобы получить TargetCameraChanged событие, которое будет срабатывать каждый раз, когда изменения вида карты. Возвращенные MapTargetCameraChangedEventArgs содержат имущество ChangeReason.

Свойство ChangeReason будет система, UserInteraction или Programmatic.

Движения в карте, вызванные вызовами API, такие как TrySetViewAsync(...), вызывают события, которые имеют ChangeReason == Programmatic, а движения, вызванные действиями пользователя, такие как масштабирование для увеличения, должны иметь ChangeReason == UserInteraction.

+0

Благодарим за помощь! –

+1

Я сделал небольшое изменение для вашего ответа, чтобы сделать его более читаемым (по крайней мере, как я его вижу), если вы считаете это плохим, не стесняйтесь отката. Также +1 для ответа. – Romasz