在谷歌地图api v3上处理大量标记

Handling large amounts of markers on google maps api v3

本文关键字:处理 谷歌地图 api v3      更新时间:2023-09-26

问题基于使用谷歌地图api V3的经验,否则请忽略该问题

问题摘要:

  • 这个问题包含了很多信息(关于用例的背景信息),但这个问题只有2个清晰具体的部分
  • 第一部分是关于聚类标记在这种情况下使用
  • 第二部分是关于加载新标记(分别加载新的标记组)随视图移动时端口
  • 关于处理视口中的点(标记),这两个部分仍然是相同的,当你解决一个问题时,你必须考虑第二部分,否则

关于用例和问题描述的信息
想象一下数据库中存储的由纬度和经度定义的千个或数千个点(地方)的应用。我将在地图上标出这些地方。地图将以这种方式划分:

  • 地图将被划分为多个区域=地图的中心将被设置为该区域的某个特定纬度和经度(例如该区域的主要城市)-为了简单起见,它将是2个已知坐标
  • 区域的数量是<20
  • 在每个地区都会有一些路线,每条路线都会由一些点组成(就像你有路线图,从一个城市到另一个城市,路上有一些城镇,例如城镇1、城镇2、城镇3=>所以你有5个点-只有这些点是重要的)
  • 区域由<100条路线,每条路线由<100点(=地方/=城镇)(按点了解经纬度坐标)
  • 所以我提到了划分我的区域的三种类型:区域>路线>路线中的步伐;这是划分您将能够从我的web应用程序的菜单(=php+html5+css+js)中访问的内容
  • 其次,重要的是地点-地点的数量将以数千为单位,最重要的是你选择了一些起点,并想显示最近的地点(例如,区域1->路线2->路线2上的城市4位于纬度x和经度y,我想只显示视口中的相关地点=路线2上城市4周围的地方)

出现了一些问题:(粗体对我来说很重要)

  • 将位置存储在数据库(MySQL)中可能不是最好的主意,我会考虑一些按坐标将位置排序到一些组,以便于请求到数据库
  • 视口中的位置太多(例如,2号路线上的示例城市4是地图的中心,周围有50或150个位置)-我发现关于聚集地点的一些解析-问题第1部分是如果有人有这方面的经验,如果它足以运行它在普通电脑或手机浏览器上(不想通过视口上标记的曲调)-我读到的内容可以将标记在一起,如果放大则显示更具体的标记
  • 问题2是从一个区域移动到另一个区域(或者只是从一个地方移动)——例如,地图的中心点叫做A(=路线图2上的城市4)并且在视图端口中只有loade点,然后随地图移动到右侧,您应该加载新点,因为您的视口changed=问题第2部分是装载的良好实践这意味着——如果你把"10个像素"向右转,为新的地方调用数据库,然后再把"另外10个像素向右转",为另一个新的地方再次调用数据库,这是愚蠢的,因为我只会通过请求数据库、排序等来杀死应用程序

您可以使用边界框来过滤大部分位置。然后使用哈维辛公式。