В чем разница между радиусом окружности карты Google [метры] и расстоянием между центром и точкой на окружности [метры]
Я использую Google Maps javascript v3. Я рисую круг на карте, и я разрешаю пользователю изменять радиус. Затем я отправляю координаты центра и радиуса в км серверному скрипту. Я извлекаю все маркеры с расстоянием меньше радиуса от центра. Я использую формулу Великого круга и объекты MySql GEOPOINT для вычисления расстояния:
(6371 * acos (cos(radians(".$coord_X_center."))* cos(radians(X(GEOPOINT)))
* cos(radians(Y(GEOPOINT)) - radians(".$coord_Y_center."))
+ sin(radians(".$coord_X_center."))
* sin( radians(X(GEOPOINT) )))) AS Distance FROM table_markers c
HAVING Distance <= ".$radius." ORDER BY RATING desc,Distance;"
Теперь рассмотрим пример, который я подготовил для вас: Пример Если вы измените радиус круга, просто чтобы исключить один маркер, гораздо больше маркеров исчезнет. Это связано с тем, что рассчитанное расстояние между центром и исчезнувшими маркерами превышает радиус круга. Зачем? В чем разница? Может быть, Google Maps не считают Землю сферой, как я в формуле выше?
Обновить:
POST-запрос отправлен (дважды проверен с помощью firebug): centerx: 8.222424000000046
центр: 45.295839
радиус: 60.84800957919576
Они кастуются:
$coord_X_center = number_format((float) $post_filtered['centerx'], 4, '.', '');
$coord_Y_center = number_format((float) $post_filtered['centery'], 4, '.', '');
$radius = (int) $post_filtered['radius'];
Ответ по формуле выше:
{"names":["PONT-SAINT-MARTIN","FONTAINEMORE","LILLIANES","PERLOZ","GABY"],
"positions":[{"Lat":"7.81191320621736","Lon":"45.5991574533545"},
{"Lat":"7.88378299041174","Lon":"45.6488324511642"},
{"Lat":"7.85828195583629","Lon":"45.6242900876236"},
{"Lat":"7.81139246615188","Lon":"45.6285105114389"},
{"Lat":"7.88397564319245","Lon":"45.7144850123829"}]}
1 ответ
Радиус Земли составляет 6378,1 км (не 6371 км, по крайней мере, по данным Google).