Есть ли библиотеки для реализации кластеризации на PHP?
если вам не обязательно честную кластеризацию то можно и самому не долго написать:предисловие: мною было посчитано что смещение на 0.01 градуса по прямой на нашей планете земля можно считать 1111 метров$objects = array(array('lon' => 1, 'lat' => 2), ..., ...);
$cluster = array();
$levels = 10;
$firstRectWidth = 0.01; //самый маленький "квадрат" будет 1111 на 1111
for ($i = 0; $i < count($objects); $i++)
{
$obj = $objects[$i];
for ($level = 1; $level <= $levels; $level++)
{
         $lon_index = ($obj->lon) / ($firstRectWidth * (2 ^ $level)); // не помню как степень в php
         $lat_index = ($obj->lat) / ($firstRectWidth * (2 ^ $level)); // не помню как степень в php
         $cluster[$level][$lon_index . "-" . $lat_index][] = $i;
}
}

// использование

$zoom = 1..10;
echo "кластеров ".(count($cluster[$zoom]))."<br >";
foreach ($cluster[$zoom] as $key => $value)
{
          echo "область ".$key."<br >";
          echo "кол-во элеметнов ". (count($value));
}
Вот к примеру как я на SQL расчитываю растояние между двумя координатами.
Высчитам расстоение, можно в принципе и кластеризацию написать на PHP, если надо :-)
"google maps cluster" - поищите в поисковике, думаю найдете много интересного, как PHP, так и MySQL и JS решения.$query = $this->db->query('SELECT
  pan.id,
  ROUND(ATAN(SQRT(POW(COS(RADIANS(pan.latitude)) * SIN(ABS(RADIANS('.$pano->longitude.')-RADIANS(pan.longitude))),2) + POW( COS(RADIANS('.$pano->latitude.')) * SIN(RADIANS(pan.latitude)) - SIN(RADIANS('.$pano->latitude.')) * COS(RADIANS(pan.latitude))*COS(ABS(RADIANS('.$pano->longitude.')-RADIANS(pan.longitude))),2))/(SIN(RADIANS(pan.latitude)) * SIN(RADIANS('.$pano->latitude.')) + COS(RADIANS(pan.latitude)) * COS(RADIANS('.$pano->latitude.'))* COS(ABS(RADIANS('.$pano->longitude.')-RADIANS(pan.longitude))))) * 6373000, 0) AS distance
FROM pano pan
WHERE pan.latitude IS NOT NULL
    AND pan.longitude IS NOT NULL
    AND pan.id != '.$pano->id);