Xaml 地图元素显示为文本(类名)

Xaml 地图元素显示为文本(类名),xaml,windows-runtime,windows-phone-8.1,windows-phone,Xaml,Windows Runtime,Windows Phone 8.1,Windows Phone,我在Windows Phone 8.1上使用WinRt MapControl。但当我尝试添加MapIcon或MapPolyline地图元素时,只会得到如下文本: <maps:MapControl x:Name="MapOnScreenControl" MapServiceToken="12345"> <maps:MapPolyline Path="{Binding Route, Converter={St

我在Windows Phone 8.1上使用WinRt MapControl。但当我尝试添加MapIcon或MapPolyline地图元素时,只会得到如下文本:

<maps:MapControl x:Name="MapOnScreenControl"
                         MapServiceToken="12345">
            <maps:MapPolyline Path="{Binding Route, Converter={StaticResource RouteToGeopathConverter}}"/>
        </maps:MapControl>

XAML代码如下所示:

<maps:MapControl x:Name="MapOnScreenControl"
                         MapServiceToken="12345">
            <maps:MapPolyline Path="{Binding Route, Converter={StaticResource RouteToGeopathConverter}}"/>
        </maps:MapControl>


我做错了什么?谢谢。

不幸的是,无法通过XAML将地图元素添加到地图中。您需要在代码中添加它们

MapOnScreenControl.MapElements.Add(new MapPolyline());
我喜欢做的一个技巧是使用viewmodel通过设置viewmodel的
map
属性或
mapements
属性向地图添加元素

private void MapPage_DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
{
    var vm = DataContext as MapViewModel;
    vm.MapElements = MyMap.MapElements;
}
然后,可以在viewmodel中向元素添加项目

您还可以使用
MapItemsControl
添加项目集合

<maps:MapControl x:Name="Map" MapServiceToken="abcdef-abcdefghijklmno">
    <maps:MapItemsControl ItemsSource="{Binding Locations}">
        <maps:MapItemsControl.ItemTemplate>
            <DataTemplate>
                <Image Source="Assets/Mappin.png" Height="25"
                        maps:MapControl.NormalizedAnchorPoint="1,0.5" 
                        maps:MapControl.Location="{Binding Geopoint}" />
            </DataTemplate>
        </maps:MapItemsControl.ItemTemplate>
    </maps:MapItemsControl>
</maps:MapControl>

不幸的是,无法通过XAML将映射元素添加到映射中。您需要在代码中添加它们

MapOnScreenControl.MapElements.Add(new MapPolyline());
我喜欢做的一个技巧是使用viewmodel通过设置viewmodel的
map
属性或
mapements
属性向地图添加元素

private void MapPage_DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
{
    var vm = DataContext as MapViewModel;
    vm.MapElements = MyMap.MapElements;
}
然后,可以在viewmodel中向元素添加项目

您还可以使用
MapItemsControl
添加项目集合

<maps:MapControl x:Name="Map" MapServiceToken="abcdef-abcdefghijklmno">
    <maps:MapItemsControl ItemsSource="{Binding Locations}">
        <maps:MapItemsControl.ItemTemplate>
            <DataTemplate>
                <Image Source="Assets/Mappin.png" Height="25"
                        maps:MapControl.NormalizedAnchorPoint="1,0.5" 
                        maps:MapControl.Location="{Binding Geopoint}" />
            </DataTemplate>
        </maps:MapItemsControl.ItemTemplate>
    </maps:MapItemsControl>
</maps:MapControl>


我不知道WinRt,但通常使用地图控件时,您不能将多段线放在地图上,您需要将它们放在图层中。我不知道WinRt,但通常使用地图控件时,您不能将多段线放在地图上,您需要将它们放在图层中。谢谢您的回答。我尝试使用与您描述的相同的xaml示例,但我的xaml MapItemControl元素不包含ItemTemplate属性。您正在使用Windows Phone 8.1?是的,Windows Phone 8.1感谢您的回答。我正在尝试使用与您描述的相同的xaml示例,但我的xaml MapItemControl元素不包含ItemTemplate属性。您正在使用Windows Phone 8.1?是的,Windows Phone 8.1