我需要一个框架,它在世界地图上采用一组纬度经度点和绘图,按国家/地区分组,每个国家/地区都有点数作为标记。这里的分组是一个国家的纬度经度点数。 当我深入到一个国家时,聚类应该变为基于状态的聚类。而下一个级别,到地区。
Leaflet marker cluster与我的要求非常相似,但分组是基于接近度而不考虑国家或州界限。也就是说,他们不是地区意识。
Regionbound.com调整了传单代码中的一些代码,使其能够识别区域,
var marker1 = new L.marker([ - 37.8,145],{regions:[“Asia-Pac”,“Australia”,“VIC”,“Melbourne”]});
但是示例代码说,必须定义每个纬度经度以及一些包含地点信息的额外参数。 我可以使用reverse geocoding获取地点信息,但是对每个纬度经度进行反向地理编码非常耗时。
由Highcharts提供的Highmaps是另一种解决方案,但在那里,每个国家都有代码应该被分配一个值[属于该国家的点坐标的数量]。 但我所拥有的只是纬度经度点,没有国家或州的信息。
因此,我需要的东西只需要一组纬度经度,并根据缩放级别根据国家,州,地区进行聚类。
答案 0 :(得分:3)
您的问题中有两个不同的需求:
对于第1点,您知道纬度/经度点不会自己说明它们属于哪个行政区域。所以" 对每个纬度经度进行反向地理编码"是必须的一步。是否耗时取决于您选择执行此操作的解决方案。
如果我理解正确,你会想要一个"框架"这可以自动为你做。但框架通常是数据无关的,如果他们没有关于这些行政区域边界的数据,他们就无法帮助你。
您可能更愿意寻找"服务" (就像你提到的Mapbox地理编码API)或已经有这些数据的软件。如果您可以对查找进行编程(或执行"批量"操作)并且不受请求率和要映射的点数(可能是Mapbox的情况)的限制,则不是非常耗时。
您可以很好地设置自己的应用程序来执行此映射:
对于第2点,一旦完成上述步骤,我认为你会有很多选择,包括你提到的那些(RegionBound,Highmaps)。
即使使用标准的映射库(Leaflet,OpenLayers 3),您也只需构建"集群" (行政区域上的标记,其中有一个数字表示其中有多少点),例如,无论如何都要与Highmaps有关。
计算"群集"的数量点就像过滤每个区域名称/代码的点一样简单。然后在地图缩放更改时将群集切换到所需的管理级别。
所以关键是要先确定你的点所属的区域(第1点)。
然后一个小问题会出现在 的位置,以便放置"群集"标记:
myShape.getBounds().getCenter()
。