我想在Bing地图上为“car”点设置动画。当项目四处移动时,我可以轻松地绘制多个点,但我希望每辆车都有一个点移动。
XAML
<m:Map Name="myMap" Grid.Row="2" MouseClick="myMap_MouseClick" UseInertia="True">
<m:MapLayer x:Name="carLayer" />
</m:Map>
一些代码:
private void AddCarDot(double latitude, double longitude)
{
Ellipse point = new Ellipse();
point.Width = 15;
point.Height = 15;
point.Fill = new SolidColorBrush(Colors.Blue);
point.Opacity = 0.65;
Location location = new Location(latitude, longitude);
MapLayer.SetPosition(point, location);
MapLayer.SetPositionOrigin(point, PositionOrigin.Center);
carLayer.Children.Add(point);
}
private void cmbCar_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if(cmbCar.SelectedItem != null)
{
Binding binding = new Binding("CarLocation");
binding.Source = cmbCar.SelectedItem;
binding.Mode = BindingMode.OneWay;
carLayer.SetBinding(MapLayer.PositionProperty, binding);
}
}
CarLocation是Location类型的Car对象上的属性。 然而,这不起作用,我不太确定如何让“汽车”在地图上移动。有人能指出我正确的方向吗?
答案 0 :(得分:0)
当你想要设置一个绑定而不是“点”(我猜这代表一辆车)时,当一个神秘的“taxiLayer”出现正面变得浑浊的时候,你的问题就会变得浑浊。
您需要将MapLayer.Position
依赖项属性用作附加属性。当附加它的UIElement是MapLayer
地图图层的子项时,知道如何布局它。
所以问题是如何为此属性分配绑定,以便在绑定对象的值更改时更新位置。我将假设在代码的早期部分创建的Elipse可用作字段,我将调用car
。然后代码可能如下所示: -
private Elipse AddCarDot(object source)
{
Ellipse point = new Ellipse();
point.Width = 15;
point.Height = 15;
point.Fill = new SolidColorBrush(Colors.Blue);
point.Opacity = 0.65;
MapLayer.SetPositionOrigin(point, PositionOrigin.Center);
point.SetBinding(MapLayer.PositionProperty, new Binding("CarLocation") {Source = source});
carLayer.Children.Add(point);
}
private void cmbCar_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if(cmbCar.SelectedItem != null)
{
AddCarDot(cmbCar);
}
}
现在假设您的对象具有CarLocation
属性实现INotifyPropertyChanged
,因此当CarLocation
更改时,可以提醒绑定点将适当移动。