2014-10-09 4 views
3

Я использую Gmap.NET с C# WPF, и я хотел бы добавить большое количество маркеров (~ 6k) на карту. Но я до сих пор не могу добавить их в асинхронном режиме, Карта всегда замораживании и не реагирует на все, до тех пор, пока не будут добавлены все маркеры ... Вот мой пример кода:WPF Gmap.NET добавляет большое количество маркеров

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); 
          } 
         } 
         )); 
      } 
     })); 
} 

ответ

1

Вы, вероятно, нужно разработать решение кластерного маркера для GMap. Используйте событие Map_OnMapZoomChanged, чтобы скрыть/показать маркеры соответственно.

С немного произведения, вы можете быть в состоянии достичь кластера вроде Google Maps один:

GMap Marker Cluster

удачи! Не забудьте открыть его с открытым исходным кодом, когда закончите :)