This example illustrates how to provide animation for a map pushpin.
To do this, it is necessary to create a PushpinLocationAnimation object and assign it to the MapPushpin.LocationChangedAnimation property. After that, it becomes possible to customize the animation duration (Duration) and easing function (EasingFunction).
In addition, you can change the pushpin state after its location animation is complete via the Completed event. In this example, this event is used to change the pushpin location randomly each time the bouncing animation effect is complete.
MainWindow.xaml |
<Window x:Class="LocationAnimation.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:dxm="http://schemas.devexpress.com/winfx/2008/xaml/map"
Title="MainWindow" Height="350" Width="525" >
<Grid>
<dxm:MapControl>
<dxm:ImageTilesLayer>
<dxm:ImageTilesLayer.DataProvider>
<dxm:OpenStreetMapDataProvider/>
</dxm:ImageTilesLayer.DataProvider>
</dxm:ImageTilesLayer>
<dxm:VectorLayer>
<dxm:MapPushpin x:Name="pushpin" TraceDepth="30" TraceStroke="Red" >
<dxm:MapPushpin.LocationChangedAnimation>
<dxm:PushpinLocationAnimation Duration="00:00:02" Completed="PushpinLocationAnimation_Completed" >
<dxm:PushpinLocationAnimation.EasingFunction>
<BounceEase/>
</dxm:PushpinLocationAnimation.EasingFunction>
</dxm:PushpinLocationAnimation>
</dxm:MapPushpin.LocationChangedAnimation>
</dxm:MapPushpin>
</dxm:VectorLayer>
</dxm:MapControl>
</Grid>
</Window>
|
MainWindow.xaml.cs |
using System.Windows;
using DevExpress.Xpf.Map;
using System;
namespace LocationAnimation {
public partial class MainWindow : Window {
Random rand = new Random((int)DateTime.Now.Ticks);
public MainWindow() {
InitializeComponent();
SelectRandomLocation();
}
private void PushpinLocationAnimation_Completed(object sender, EventArgs e) {
SelectRandomLocation();
}
void SelectRandomLocation() {
pushpin.Location = (new GeoPoint(rand.NextDouble() * 40, rand.NextDouble() * 40));
}
}
}
|
MainWindow.xaml.vb |
Imports Microsoft.VisualBasic
Imports System.Windows
Imports DevExpress.Xpf.Map
Imports System
Namespace LocationAnimation
Partial Public Class MainWindow
Inherits Window
Private rand As New Random(CInt(Fix(DateTime.Now.Ticks)))
Public Sub New()
InitializeComponent()
SelectRandomLocation()
End Sub
Private Sub PushpinLocationAnimation_Completed(ByVal sender As Object, ByVal e As EventArgs)
SelectRandomLocation()
End Sub
Private Sub SelectRandomLocation()
pushpin.Location = (New GeoPoint(rand.NextDouble() * 40, rand.NextDouble() * 40))
End Sub
End Class
End Namespace
|