【发布时间】:2015-02-05 11:53:28
【问题描述】:
我想制作一个定位器,并且我有一个包含 500 多个元素的 json 文档。每个元素看起来像:
{
"lat": "52.500141",
"longi": "13.312320",
"_name": "Restaurant Berlin"
}
现在我在我的代码中这样做:Link to Tutorial
我的带有地图元素的 xaml:
<maps:Map x:Name="mymap" ColorMode="Light" Center="50.9727,010.2145" ZoomLevel="6" HorizontalAlignment="Left" Margin="-13,0,-13,-72" Width="482" CartographicMode="Road">
<toolkit:MapExtensions.Children>
<toolkit:MapItemsControl Name="RestaurantItems">
<toolkit:MapItemsControl.ItemTemplate>
<DataTemplate>
<toolkit:Pushpin PositionOrigin="0,0" GeoCoordinate="{Binding Coordinate}">
<toolkit:Pushpin.Template>
<ControlTemplate TargetType="toolkit:Pushpin">
<StackPanel>
<Image Source="/Resources/marker.png" Stretch="Uniform" Width="150" Height="100" HorizontalAlignment="Center"/>
</StackPanel>
</ControlTemplate>
</toolkit:Pushpin.Template>
</toolkit:Pushpin>
</DataTemplate>
</toolkit:MapItemsControl.ItemTemplate>
</toolkit:MapItemsControl>
</toolkit:MapExtensions.Children>
</maps:Map>
在我阅读 json 文件后,它看起来像这样:
ObservableCollection<Restaurantmarker> restaurants = new ObservableCollection<Restaurantmarker>();
for(int k = 0; k < JsonObjects.Count; k++)
{
double a = double.Parse(JsonObjects[k].lat, CultureInfo.InvariantCulture);
double b = double.Parse(JsonObjects[k].longi, CultureInfo.InvariantCulture);
new Restaurantmarker()
{
_name = JsonObjects[k]._name,
Coordinate = new GeoCoordinate (a,b)
};
};
ObservableCollection<DependencyObject> children = MapExtensions.GetChildren(mymap);
var obj = children.FirstOrDefault(x => x.GetType() == typeof(MapItemsControl)) as MapItemsControl;
obj.ItemsSource = restaurants;
还有我的 Observable Collection 课程:
public class Restaurantmarker
{
public GeoCoordinate Coordinate { get; set; }
public string _name { get; set; }
}
使用较少的元素,只有 20 个元素效果很好,但超过 500 个元素就不起作用了。有谁能够帮我?
【问题讨论】:
-
“不起作用”是什么意思
-
我等了 2-3 分钟,但什么也没出现。而且整整半分钟都不好:/
-
您不是在告诉我们您要在 Windows Phone 地图控件上显示 500 多张尺寸为 150x100 的图像吗?那可能只是行不通。
-
一些想法可能会有所帮助...也许只添加当前在可见地图区域内的图钉,(地图边界)刷新每次显示的图钉的边界使用相关事件更改地图(当用户在地图上导航时)。如果用户缩小得太远,可能不会显示任何图钉,而是会显示一条消息,通知用户他们需要进一步放大才能看到图钉(或者您可以限制用户实际缩小的范围)。
标签: c# xaml windows-phone-8 dictionary