У меня есть некоторые маркеры на картах Google, и я хотел бы идентифицировать кластеры между ними между двумя точками. Тем не менее, я имею немного трудности:Иерархическая кластеризация в JavaScript
Сначала я Переберите все фломастеры и создать массив, который является:
for (var i = 0; i < MARKERS.length - 1; i++) {
for (var j = i + 1; j < MARKERS.length; j++) {
var distance_between = google.maps.geometry.spherical.computeDistanceBetween(point_i, point_j)
var valueToPush = {}
valueToPush.fromMarker = name_i
valueToPush.toMarker = name_j
valueToPush.distance = distance_between
cluster_array.push(valueToPush)
}
}
Что бы я тогда хотел бы сделать, это запустить иерархический алгоритм кластеризации, как это :
var cluster = .cluster(cluster_array, MAX, threshold)
Где, если я указываю 500 для порогового значения, то я получаю список как этот
кластера 0: Маркер, Маркер Y Маркер C
кластер 1: Маркер В
кластер 2: Маркер D, Е Маркер
т.д.
где каждый кластер показывает мне маркера, которые находятся в пределах 500 м друг от друга.
Большое спасибо
чек [kmeans алгоритм] (http://en.wikipedia.org/wiki/K-means_clustering) и [алгоритм детерминированного отжига] (http://apiacoa.org/publications/teaching/deterministic-annealing/da-slides.pdf) для другого подхода –