具有许多标记的Gmap性能?

时间:2019-01-04 21:59:20

标签: gmap.net

我正在使用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个可以隐藏所有标记的叠加层。

这是我的真实代码:

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

2 个答案:

答案 0 :(得分:3)

对于像我这样的菜鸟并且遇到相同问题的其他人,这是解决方案...

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

如果您只有1层,然后在其上添加数百个标记,那么只要您也没有循环添加这些层,就可以了。愚蠢的错误!

答案 1 :(得分:0)

只需将您的代码更改为此:

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循环之外即可。

PS:哦,您找到答案了,欢呼!