【问题标题】:Gmap performance with a lot of markers?有很多标记的 Gmap 性能?
【发布时间】:2019-01-04 21:59:19
【问题描述】:

我正在使用 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

【问题讨论】:

    标签: gmap.net


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      把你的代码改成这样:

      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:哦,你已经找到答案了,干杯!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-02
        • 1970-01-01
        • 2013-07-11
        • 2012-12-25
        相关资源
        最近更新 更多