有很多标记的 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: 找到答案了,干杯!
我使用的是 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: 找到答案了,干杯!