, поэтому у меня есть массив широты / долготы (это ложная широта / долгота, как вы можете видеть, но только для иллюстрации точки, и исходный размер массива НАМНОГО больше этого):
<?php
$my_nodes = array(
1=> array(273078.139,353257.444),
2=> array(273122.77,352868.571),
3=> array(272963.687,353782.863),
4=> array(273949.566,353370.127),
5=> array(274006.13,352910.551),
6=> array(273877.095,353829.704),
7=> array(271961.898,353388.245),
8=> array(272839.07,354303.863),
9=> array(273869.141,354417.432),
10=> array(273207.173,351797.405),
11=> array(274817.901,353466.462),
12=> array(274862.533,352958.718),
13=> array(272034.812,351852.642),
14=> array(274128.978,354676.828),
15=> array(271950.85,354370.149),
16=> array(275087.902,353883.617),
17=> array(275545.711,352969.325)));
?>
Я хочу иметь возможность найти ближайший узел (в данном случае это узел 1,2,3, 4,5, ...) для заданной широты X и широты Y. Я знаю, что самый простой способ сделать этосделать цикл for, а затем сделать разницу погрешности (abs (latitude_X - latitude_X_array) + abs (latitude_Y - latitude_Y_array)), но это будет очень неэффективно по мере увеличения размера массива.
Я думал о выполнении бинарного поиска, однако массив должен быть отсортирован первым в бинарном поиске, однако трудно отсортировать широту / долготу, и в конце мы находим CLOSEST широту / долготу вмассив для заданного широты X, длинны Y. Какой подход я должен использовать здесь?
ОБНОВЛЕНИЕ:
Марк имеет правильную точку, эти данные могут быть сохранены в базе данных.Однако, как я могу получить такую информацию из БД, если я хочу ближайшую?