c# - WPF Gmap.NET 添加大量标记

标签 c# wpf gmap.net

我将 Gmap.NET 与 C# WPF 一起使用,我想在 map 上添加大量标记 (~6k)。 但是我仍然无法异步添加它们, map 总是卡住并且根本没有响应,直到所有标记都不会被添加...... 这是我的代码示例:

private void MainMap_Loaded(object sender, RoutedEventArgs e)
{
    MainMap.Zoom = 12;

    LoadMarkers();
}

private async void LoadMarkers()
{
    await Task.Run(new Action(() =>
    {
            for (int i = 0; i <= 6000; i++)
            {
                Dispatcher.InvokeAsync(
                    new Action(
                        delegate()
                        {
                            PointLatLng point = new PointLatLng(GetRandomNumber(55.0000, 55.7510),
                                GetRandomNumber(36.0000, 38.9999));

                            var currentMarker = new GMap.NET.WindowsPresentation.GMapMarker(point);
                            {
                                currentMarker.Shape = new MarkerTemplate(this, currentMarker,
                                    string.Empty);
                                currentMarker.Offset = new Point(-16, -32);
                                currentMarker.ZIndex = int.MaxValue;

                            MainMap.Markers.Add(currentMarker);
                            }
                        }
                        ));
            }
        }));
}

最佳答案

您可能需要为 GMap 设计聚类标记解决方案。使用 Map_OnMapZoomChanged 事件相应地隐藏/显示标记。

通过一些工作,您可能能够实现像 Google Maps 这样的集群。一:

GMap Marker Cluster

祝你好运!完成后不要忘记将其开源:)

关于c# - WPF Gmap.NET 添加大量标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26276474/

相关文章:

c# - WPF 按钮打开或关闭彩色状态

.net - WPF 中的 MVVM - UserControls 和 GMap.NET

c# - 如何强调功能区按钮标签的字符?

c# - 如何在GMap.NET中使 map 无限远?

c# - GMap.Net 标记最初在不正确的位置

c# - 事件和委托(delegate)与调用方法

c# - 将字典从 Ajax 传递到 C# 代码隐藏

c# - 试图从 Resources.Image 读取或写入 protected 内存

c# - 从方法中重定向到 Action

c# - 将焦点设置在 UserControl 中的 TextBox 上