Wpf 我的地图上有多条路线--我如何使用您刚才为集合的每个元素定义的路线?我从未尝试过,但您可能可以将本文中的整个地图面板放在另一个外部MapItemsControl的ItemTemplate中。 protected override Size ArrangeO

Wpf 我的地图上有多条路线--我如何使用您刚才为集合的每个元素定义的路线?我从未尝试过,但您可能可以将本文中的整个地图面板放在另一个外部MapItemsControl的ItemTemplate中。 protected override Size ArrangeO,wpf,canvas,mvvm,itemscontrol,gmap.net,Wpf,Canvas,Mvvm,Itemscontrol,Gmap.net,我的地图上有多条路线--我如何使用您刚才为集合的每个元素定义的路线?我从未尝试过,但您可能可以将本文中的整个地图面板放在另一个外部MapItemsControl的ItemTemplate中。 protected override Size ArrangeOverride(Size arrangeSize) { foreach (UIElement child in Children) { PointLatLng position = new PointLatLng


我的地图上有多条路线--我如何使用您刚才为集合的每个元素定义的路线?我从未尝试过,但您可能可以将本文中的整个地图面板放在另一个外部MapItemsControl的ItemTemplate中。
protected override Size ArrangeOverride(Size arrangeSize)
{
    foreach (UIElement child in Children)
    {
        PointLatLng position = new PointLatLng(GetTop(child), GetLeft(child));

        GMapControl map = Owner as GMapControl;
        if (map != null)
        {
            GPoint p = map.FromLatLngToLocal(position);
            p.Offset(-(long)(map.MapTranslateTransform.X + child.DesiredSize.Width * 0.5), -(long)(map.MapTranslateTransform.Y + child.DesiredSize.Height * 0.5));

            Rect rect = new Rect(p.X, p.Y, child.DesiredSize.Width, child.DesiredSize.Height);
            child.Arrange(rect);
        }
    }
    return arrangeSize;
}
<Setter Property="Canvas.Left" Value="{Binding Longitude}" />
<Setter Property="Canvas.Top" Value="{Binding Latitude}" />
<Setter Property="Canvas.ZIndex" Value="{Binding ZIndex}" />
<DataTemplate DataType="{x:Type viewModels:RouteViewModel}">
    <ItemsControl ItemsSource="{Binding Locations}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <wpf:MapOverlay Name="MapOverlay" Owner="{Binding Path=., RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type wpf:GMapControl}}}"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemContainerStyle>
            <Style>
                <Setter Property="Canvas.Left" Value="{Binding Longitude}" />
                <Setter Property="Canvas.Top" Value="{Binding Latitude}" />
                <Setter Property="Canvas.ZIndex" Value="{Binding ZIndex}" />
            </Style>
        </ItemsControl.ItemContainerStyle>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Ellipse Fill="Blue" Stroke="Black" Width="10" Height="10"></Ellipse>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</DataTemplate>
public double Latitude => Locations.Select(loc => loc.Latitude).FirstOrDefault();
public double Longitude => Locations.Select(loc => loc.Longitude).FirstOrDefault();
<map:MapPanel>

    <map:MapPolyline Locations="{Binding RouteLocations}"
                     Stroke="DarkBlue" StrokeThickness="3"/>

    <map:MapItemsControl ItemsSource="{Binding RouteLocations}">
        <map:MapItemsControl.ItemContainerStyle>
            <Style TargetType="map:MapItem">
                <Setter Property="map:MapPanel.Location" Value="{Binding}"/>
            </Style>
        </map:MapItemsControl.ItemContainerStyle>
        <map:MapItemsControl.ItemTemplate>
            <DataTemplate>
                <Path Fill="Red">
                    <Path.Data>
                        <EllipseGeometry RadiusX="5" RadiusY="5"/>
                    </Path.Data>
                </Path>
            </DataTemplate>
        </map:MapItemsControl.ItemTemplate>
    </map:MapItemsControl>

</map:MapPanel>