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

时间:2016-03-04 09:36:09

标签: xaml windows-runtime windows-phone-8.1 windows-phone

我在Windows Phone 8.1上使用WinRt MapControl。但是当我尝试添加MapIcon或MapPolyline地图元素时,我只得到这样的文字:

enter image description here

XAML代码如下所示:

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

我在做什么是错的?感谢。

1 个答案:

答案 0 :(得分:4)

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

MapOnScreenControl.MapElements.Add(new MapPolyline());

我喜欢的一个技巧是使用viewmodel通过设置我的viewmodel的Map属性或MapElements属性来向地图添加元素。

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>