2014-01-22 2 views
1

Я пишу приложение на стороне сервера java, относящееся к Geo-fencing.Гео-фехтование в веб-приложении Java

  • У меня есть магазин со своей широты, долготы и радиуса
  • У меня также есть текущее положение человека (с точки зрения широты & долготы).

Если он прибывает в пределах географа, то есть в радиусе хранения я должен дать предупреждение. Я googled для решения & есть некоторые методы, чтобы идентифицировать человека внутри забора (круга) или за пределами забора.

  1. Вычислить расстояние между магазина широты, долготы и широты текущей долготы & человека и если Distance < radius то человек находится внутри забора еще за забором.
  2. Использование Polygon Geofencing

Может кто-нибудь предложить мне, какой метод лучше всего из вышеперечисленного.

Заранее благодарен

ответ

1

Это зависит от ваших потребностей. Если вы хотите узнать, находится ли Человек в радиусе хранения в 1 км, вам нужен поиск по кругу. Здесь расположение магазина является стержнем. Вы можете изменить радиус, исходя из ваших потребностей.

Поиск в полигоне используется, когда вам нужно искать людей в определенной области, независимо от расстояния, которое находится далеко от любого места. Люди в Париже, Нью-Йорке или районе Стамбула, а не люди в радиусе 1 км от магазина.

1

В вашем случае, где требуется только радиус (то есть расстояние до магазина), я бы определенно выбрал поиск радиуса (ваше первое предложение).

Полигон Geofencing, я думаю, использует Ray-Casting Algrithm, который выполняет итерацию по каждому сегменту многоугольника. Это займет больше времени и может привести к некоторому приближению в случае круга (в зависимости от того, как применяется алгоритм).

0

Я бы подумал, что лучшим методом для использования здесь будет расчет расстояний радиуса, предполагающий, что вам нужно знать расстояние «как ворона», так сказать. Так географическое расстояние, а не расстояние передвижения. Это будет наиболее эффективным и простым в реализации. Имеются примеры here и here.

Если последнее имеет значение (на что я надеюсь, что это не так), то я бы предположил, что вам нужно будет использовать геогонирование полигона или, возможно, Google distance Matrix API.

0

Спасибо за все ваши ответы. В моем проекте я интегрировал оба метода (Polygon & Distance). Если пользователь входит в полигон, он получит уведомление и тот же самый радиус. Я сохранил координаты и радиус многоугольника в моей базе данных.