关于gmap.net:Gmap表现有很多标记?

Gmap performance with a lot of markers?

我使用的是gmap.net的winform版本。我要做的是为每个标记创建一个覆盖,然后将其添加到我的地图控件中。这大大减少了我的程序中的延迟。现在唯一的问题是,如果我想隐藏一个覆盖,我有多个覆盖,我必须使用一个索引号来隐藏1个覆盖。

这是我要做的,以添加我的标记到我的地图。我为每个标记创建一个覆盖:(伪代码)

1
2
3
4
5
6
7
8
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
}

现在,如果我想把某些商店藏起来,也许是从另一个州藏起来,我就得把它们藏起来。这是个问题,因为我有100多个覆盖。如果我创建一个单一的覆盖,并添加我的所有标记到它,WinForm几乎冻结和滞后太多,以至于无法使用。

我想知道是否还有其他人以前和gmaps.net合作过,或者知道我可以提高性能的任何方法?最好是将所有标记放在一个单独的覆盖上,这样我可以隐藏一个覆盖,它将隐藏所有标记。

这是我的真实代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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+个标记。

如果只有一个图层,然后在上面添加数百个标记,那么只要不循环添加图层,就可以了。愚蠢的错误!


只需将代码更改为:

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
}

只需将创建的覆盖放到for循环之外。

附言:哦,你找到答案了,干杯!