有很多标记的 Gmap 性能?

Gmap performance with a lot of markers?

我使用的是 Gmap.NET 的 WinForm 版本。我正在做的是为每个标记创建 1 个叠加层,然后将其添加到我的地图控件中。这显着减少了我程序中的延迟。现在唯一的问题是,如果我想隐藏一个叠加层,我有多个叠加层,我必须使用索引号来隐藏 1 个叠加层。

这就是我在地图上添加标记的操作。我为每个标记创建 1 个叠加层:(伪代码)

For (int i = 0; i >= dataset.rows.count; i++)
{
for each row in dataset
create overlay("stores")
add overlay to map
create marker(GPS from dataset)
addMarkerToOverlay
}

现在,如果我想隐藏某些商店,可能来自不同的州,我将不得不这样做 MapControl.Overlays(index).IsVisible = False。 这是一个问题,因为我有 100 多个叠加层。 如果我创建 1 个单一叠加层并将所有标记添加到其中,WinForm 几乎会冻结和滞后,以至于无法使用。

我想知道是否有其他人以前使用过 Gmaps.NET 或知道我可以提高性能的任何方法?最好将所有标记都放在 1 个叠加层上,这样我就可以隐藏 1 个叠加层,从而隐藏所有标记。

这是我的真实代码:

Dim i As Integer = (DS.Tables(0).Rows.Count - 1)
        Do While (i >= 0)
            Dim lat As Double = DS.Tables(0).Rows(i)(1)
            Dim lng As Double = DS.Tables(0).Rows(i)(2)

            Dim StoreOverlay As GMapOverlay = New GMapOverlay("Stores")
            map.Overlays.Add(StoreOverlay)

            Dim marker As GMapPoint
            marker = New GMapPoint(New PointLatLng(lat, lng), 15)
            StoreOverlay.Markers.Add(marker)

            i = (i - 1)
        Loop

对于像我这样的菜鸟和遇到同样问题的人,这里是解决方案...

确保您没有在循环语句中添加层的代码。我创建了 300 多个图层,每个图层分配了 300 多个标记。

如果您只有 1 个层,然后在上面添加了数百个标记,只要您不循环添加层,就应该没问题。愚蠢的错误!

将您的代码更改为如下内容:

create overlay("stores")
for (int i = 0; i >= dataset.rows.count; i++)
{
   for each row in dataset
   add overlay to map
   create marker(GPS from dataset)
   addMarkerToOverlay
}

确保 create overlay 在循环之前。

PS: 找到答案了,干杯!