Проверьте, находятся ли широта и долгота в кругу [Сторона сервера] - PullRequest
0 голосов
/ 04 июля 2018

Я хочу знать, есть ли java API для карты Google, чтобы проверить определенную долготу и широту внутри круга. Я не использую Android или IOS-клиент. Мне нужно сделать это на бэкэнд-сервере. Я обнаружил, что есть способ решить эту проблему в Android SDK [ Проверьте, находятся ли широта и долгота в пределах круга ] Но мне нужна некоторая справка, как решить эту проблему на бэкэнд-сервере.

Это требование, которое я хочу

Адрес отправителя: lat1, lng1

Расположение круга сервера: latCenter, lngCenter, радиус

Мне нужно было проверить местоположение отправленного пользователя внутри круга карты Google. В Google я нашел эту ссылку [https://github.com/googlemaps/google-maps-services-java], но это не дает никакого решения моей проблемы. Я хочу знать, есть ли какие-либо стандартные API-интерфейсы, доступные для карт Google, или мне нужно создать функцию для проверки местоположения.

1 Ответ

0 голосов
/ 04 июля 2018

Есть несколько вариантов для этого. Один из них немного сложнее и включает в себя тот факт, что круг однозначно определяется 3 точками на его границе и вычислением определителя подходящей матрицы (включая координаты трех точек плюс ваша точка отсчета). Хотя это сложный подход, вы можете выйти намного проще:

Диск, окруженный кругом (с радиусом r и центром c_x, c_y), задается уравнением

{(p,q) | (p-c_x)^2 + (q-c_y)^2 < r^2}

(замените «меньше» на «меньше или равно», если вы тоже считаете границу внутри).

Это означает, что вы можете просто вычислить значение

(p-c_x)^2 + (q-c_y)^2

и сравните ее с r^2, чтобы получить информацию, если точка (p,q) находится внутри, снаружи или на окружности.

Обратите внимание, что из-за неточностей с плавающей запятой в компьютерных системах и в зависимости от вашего варианта использования вы можете не захотеть проверять точное равенство для границы, но проверить, близка ли разница обоих значений к 0.

редактировать: форматирование

...