UWP MapControl巨大的MapIcons

时间:2017-05-19 08:10:32

标签: uwp observablecollection uwp-maps

事情是我不能同时看到所有20.000个MapIcons,我想更多地增加MapIcons的数量。

我的ViewModel System.Collections.ObjectModel.ObservableCollection<House>

中有一个名为Houses的{​​{1}}道具
HousesViewModel

我的public MainPage() { this.InitializeComponent(); HousesVM.Houses.CollectionChanged += Houses_CollectionChangedAsync; GetInitialPins(); } 有一个foreach来添加/填充HousesVm.Houses,但这似乎效率低下,所以我重写了这样:

GetInitialPins()

缺点是这不会触发我添加MapIcons的List<House> houses = JsonConvert.DeserializeObject<List<House>>(response); HousesVM.Houses = new System.Collections.ObjectModel.ObservableCollection<House>(houses); 事件。

CollectionChanged

我还试图离开private async void Houses_CollectionChangedAsync(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { var dispatcher = CoreApplication.MainView.CoreWindow.Dispatcher; await dispatcher.RunAsync(CoreDispatcherPriority.Low, async () => { foreach (House item in e.NewItems) { MapIcon myPOI = new MapIcon { Location = new Geopoint(new BasicGeoposition() { Latitude = item.Latitude, Longitude = item.Longitude }), NormalizedAnchorPoint = normalizedAnchorPoint, Title = item.Name, CollisionBehaviorDesired = MapElementCollisionBehavior.RemainVisible, ZIndex = 0 }; await mappie.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => { mappie.MapElements.Add(myPOI); }); } }); } ,只是将MapIcon添加到地图控件的子项中。这给了我一个内存不足的例外。还尝试在XAML中绑定:

Ellipse

还给出了内存不足异常......还看到bing map的js版本具有集群/分组功能。在uwp中没有。并且在文档中也看到了大量的我应该考虑构建一个tile服务并引用自定义创建的tile ...这对我的情况来说似乎有些过分。         

1 个答案:

答案 0 :(得分:1)

群集是处理大量点数的推荐方法,因为正如您所指出的那样,无论如何都无法同时看到所有点。 这里的UWP地图示例中有一个聚类示例:https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/MapControl