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)
不幸的是,在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)
| 归档时间: |
|
| 查看次数: |
1908 次 |
| 最近记录: |