代码之家  ›  专栏  ›  技术社区  ›  The Newbie

有很多标记的GMAP性能?

  •  2
  • The Newbie  · 技术社区  · 6 年前

    我使用的是gmap.net的winform版本。我要做的是为每个标记创建一个覆盖,然后将其添加到我的地图控件中。这大大减少了我的程序中的延迟。现在唯一的问题是,如果我想隐藏一个覆盖,我有多个覆盖,我必须使用一个索引号来隐藏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多个覆盖。 如果我创建一个单一的覆盖,并添加我的所有标记到它,WinForm几乎冻结和滞后太多,以至于无法使用。

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

    这是我的真实代码:

    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 回复  |  直到 6 年前
        1
  •  3
  •   The Newbie    6 年前

    对于任何一个像我这样的笨蛋,有同样问题的人来说,这里是解决办法…

    确保没有在循环语句中添加层的代码。我创建了300+层,每个层都有300+个标记。

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

        2
  •  0
  •   kp980    6 年前

    只需将代码更改为:

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

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

    推荐文章