如何通过模板添加标记到windowsphone 8中的地图?

Ahm*_*mad 1 maps here-api windows-phone windows-phone-8

当我尝试通过模板在Windows Phone 8中将我的地图添加用户位置标记时,所有点都会出现在地图的左上角.我确信我有不同的位置这是我的代码:

            <maps:Map x:Name="myMap" Center="{Binding CenterPoint}" ZoomLevel="5">
            <toolkit:MapExtensions.Children>
                    <ItemsControl ItemsSource="{Binding AllLocations}">
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <Grid/>
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                            <toolkit:MapChildControl>
                                <toolkit:UserLocationMarker Background="Blue" Foreground="Green" GeoCoordinate="{Binding coordinate,Converter={StaticResource GeoCoordinateConverter}}"/>
                            </toolkit:MapChildControl>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>

                    </ItemsControl>
            </toolkit:MapExtensions.Children>

        </maps:Map>
Run Code Online (Sandbox Code Playgroud)

Mat*_*cey 6

不幸的是,在XAML中定义绑定不起作用.不知道为什么. - 可能与在运行时解析和构建XAML的方式有关.

但是,您可以在代码中设置绑定,它将起作用.

这来自一个有效的应用程序:

<map:Map x:Name="TheMap">
    <toolkit:MapExtensions.Children>
        <toolkit:MapItemsControl>
            <toolkit:MapItemsControl.ItemTemplate>
                <DataTemplate>
                    <toolkit:Pushpin GeoCoordinate="{Binding Converter={StaticResource PinToGeoCoordinateConverter}}"
                                        Content="{Binding Name}" />
                </DataTemplate>
            </toolkit:MapItemsControl.ItemTemplate>
        </toolkit:MapItemsControl>
    </toolkit:MapExtensions.Children>
</map:Map>
Run Code Online (Sandbox Code Playgroud)

Loaded 页面事件(在代码后面)

private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
{
    this.Loaded -= OnLoaded;

    // Have to set up the ItemSource explicitly - unfortunately this doesn't work if set in XAML :(
    var children = MapExtensions.GetChildren(TheMap);
    var obj = children.FirstOrDefault(x => x is MapItemsControl) as MapItemsControl;

    obj.ItemsSource = ViewModel.Pins;
}
Run Code Online (Sandbox Code Playgroud)