# $citys массив городов, у которых есть poi.
# poi являются массивом в виде строки.
# calcRange
public function createdMatrix ($citys)
{
# Пробегаем грода
for ($i = 0; count($citys) > $i; $i++) {
$poi = $citys[$i]->poi;
$count_poi = count($poi);
for ($r = 0; $count_poi > $r; $r++) {
$data[$i][$r] = [];
for ($v = 0; $count_poi > $v; $v++) {
$sqrt = $this->calcRange($poi[$r]['coordinates'], $poi[$v]['coordinates']);
$data[$i][$r][] = $sqrt;
}
$data[$i][$r]['max'] = $this->maxHorizontSum($data[$i][$r]);
}
$data[$i]['max'][] = max($data[$i]);
}
return $data;
}
# Получаем разницу между точками
public function calcRange($cdr1, $cdr2)
{
$cdr1 = explode(',', $cdr1);
$cdr2 = explode(',', $cdr2);
$sqrt = sqrt(pow(( $cdr1[0] - $cdr2[0] ), 2) + pow(( $cdr1[1] - $cdr2[1] ), 2));
return round($sqrt, 6);
}
В итоге вы получите примерно следующие. Если конечно в HTML будите выводить.
11 поле, сложение горизонтали