В настоящее время я использую элемент управления 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 имеют довольно плавное рисование маршрутов, поэтому я думаю, что должен быть способ решить эту проблему?
Спасибо!