【问题标题】:Maps elements display as text (class name)地图元素显示为文本(类名)
【发布时间】:2016-03-04 09:36:08
【问题描述】:

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

XAML 代码如下所示:

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

我做错了什么?谢谢。

【问题讨论】:

  • 我不知道 WinRt,但通常使用地图控件,您不能只在地图上放置折线,您需要将它们托管在一个图层中。

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


【解决方案1】:

很遗憾,地图元素无法通过 XAML 添加到地图中。您需要在代码中添加它们。

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

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

private void MapPage_DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
{
    var vm = DataContext as MapViewModel;
    vm.MapElements = MyMap.MapElements;
}

然后您可以在视图模型中向元素添加项目。

您还可以使用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 示例,但我的 xaml MapItemControl 元素不包含 ItemTemplate 属性。
  • 您使用的是 Windows Phone 8.1?
  • 是的,Windows Phone 8.1
猜你喜欢
  • 2021-04-28
  • 2015-09-12
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多