Есть ли способ заставить MapPolyline иметь лучшую производительность на WP7 - PullRequest
2 голосов
/ 02 марта 2011

В настоящее время я использую элемент управления Silverlight Map для WP7 и пытаюсь визуализировать маршруты проезда на карте.Чтобы выделить необходимый маршрут, я использую MapLayer с MapPolyline.Проблема в том, что даже при CacheMode, установленном на BitmapCache, область MapPolyline перерисовывается всякий раз, когда пользователь перемещает или увеличивает карту.Я использовал другие элементы управления, такие как Ellipses или Pushpins, и с включенным BitmapCache ни один из них не перерисовывается и не дает такой же удар по производительности, как MapPolyline.

Вот краткий пример

    <maps:Map ZoomLevel="3">
        <maps:MapPolyline Name="line" Stroke="Red" StrokeThickness="9">
            <maps:MapPolyline.CacheMode>
                <BitmapCache/>
            </maps:MapPolyline.CacheMode>
            <maps:MapPolyline.Locations>
                <maps:LocationCollection>
                    <geo:GeoCoordinate Latitude="33" Longitude="33"/>
                    <geo:GeoCoordinate Latitude="36" Longitude="33"/>
                    <geo:GeoCoordinate Latitude="33" Longitude="36"/>
                </maps:LocationCollection>
            </maps:MapPolyline.Locations>
        </maps:MapPolyline>       
    </maps:Map>

Есливы устанавливаете App.Current.Host.Settings.EnableRedrawRegions = true;, вы можете видеть, что происходит перерисовка.Производительность особенно плоха, когда у вас увеличенная полилиния и увеличен масштаб.

Можно ли чем-нибудь помочь?Родные карты Bing имеют довольно плавное рисование маршрутов, поэтому я думаю, что должен быть способ решить эту проблему?

Спасибо!

1 Ответ

0 голосов
/ 03 марта 2011

Можете ли вы объяснить немного больше, в чем проблема?

У меня есть приложение - RunSat, в котором я рисую полилинии с несколькими сотнями точек (например, я только что посмотрел трехчасовую поездку на велосипеде), и это прекрасно отрисовывается - в том числе во время операций масштабирования.

Я не понимаю проблемы - даже используя приведенный выше пример кода. В помощь - тестируете ли вы на телефоне или на эмуляторе?

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

...