我目前正在使用 Google Maps JavaScript API (https://developers.google.com/maps/documentation),其中我使用标记和折线来说明地图上的各种数据点和路径。我熟悉 MarkerClusterer 库,它根据特定范围或缩放级别对标记进行聚类,但现在我需要一种方法,不仅可以对标记进行聚类,还可以对相应的polylines进行聚类。
本质上,我想要实现的是一张地图,其中簇包含标记及其相关的折线部分。当单击一个簇并且标记分散时,折线的相应部分也会出现,与相应的标记相关联。
在研究这个问题时,我遇到了Haversine公式,它可以用来计算球体上点(纬度、经度)之间的距离。我正在考虑使用这个公式来手动查找一定范围内的标记及其相关的折线。
但是,在开始创建手动解决方案之前,我想知道是否有人知道支持对标记和折线进行聚类的现有方法或库。
我感谢您提供的任何指导或参考。谢谢你。
这是我的编码方式:
// Simplified example code
const map = new google.maps.Map(document.getElementById("map"), {
center: { lat: -34.397, lng: 150.644 },
zoom: 8,
});
// Example marker and polyline creation
const markers = locations.map((location, i) => {
return new google.maps.Marker({
position: location,
map: map,
});
});
const flightPath = new google.maps.Polyline({
path: locations,
geodesic: true,
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 2,
});
flightPath.setMap(map);
// Cluster creation
const markerCluster = new MarkerClusterer({ markers, map });
我的位置数组由具有 lat 和 lng 属性的对象组成。每个标记对应一个位置,折线按照这些位置在数组中出现的顺序连接这些位置。现在,我想修改上面的代码,不仅可以对标记进行聚类,还可以对折线的相应部分进行聚类。任何关于我如何解决这个问题的建议将不胜感激。
提前谢谢大家!
所以,简而言之,只要我想将latlng分组在特定的范围内,就可以将折线“聚类”。现在,我只想将它们分组,最好有办法从聚集点(A 和 B 之间)设置箭头的起点。