Xamarin Forms - библиотека геозон

Я создал мобильное приложение xamarin и хочу создать следующую функцию: Создать одну или несколько геозон. Когда пользователь с телефоном находится на месте, я хочу вызвать какой-то код. Существуют ли какие-либо библиотеки, которые я могу использовать для реализации этой кросс-платформы с формами xamarin?


person M Yil    schedule 11.03.2020    source источник


Ответы (1)


Если ваша геозона имеет круглую форму, вы можете использовать Xamarin.Essentials, чтобы получить расстояние между двумя точками, и если расстояние меньше расстояния геозоны, оно находится внутри геозоны.

long geofenceDistance = 2;
Location geofenceCentercordinate = new Location(centrerCoordinate.Latitude, centrerCoordinate.Longitude);
Location userLocation = new Location(position.Latitude, position.Longitude);
var distance = (long)Location.CalculateDistance(userLocation ,geofenceCentercordinate, DistanceUnits.Kilometers);
if(distance < geofenceDistance){
    //it's inside the Geofence
}

Кроме того, если вы хотите постоянно отслеживать свое местоположение, вы можете проверить мой другой ответ здесь.

person Ricardo Dias Morais    schedule 11.03.2020
comment
Спасибо за помощь. Вы знаете, какие xamarin.essentials мне нужны для этого? - person M Yil; 11.03.2020
comment
@MYil Если вы используете последнюю версию, у вас обязательно будет это, я рад, что смог помочь, если это решило вашу проблему, не забудьте отметить его как правильный ответ - person Ricardo Dias Morais; 11.03.2020
comment
@MYil также не забывайте, что вы можете изменить DistanceUnits.Kilometer на то, какая единица соответствует вашей цели, я также добавил ссылку на другой вопрос, где я могу узнать, как прослушивать изменения местоположения, но я думаю, вам не нужно изменение местоположения каждый раз - person Ricardo Dias Morais; 11.03.2020
comment
Благодарю за ваш ответ. Ваше решение - получить расстояние между двумя точками, но мне действительно нужно знать, как создать геозону, и я не смог найти этого в вашей реакции. Надеюсь, ты поможешь мне с этим. - person M Yil; 11.03.2020
comment
Хорошо, не могли бы вы уточнить тип геозоны, который вам нужен? - person Ricardo Dias Morais; 11.03.2020
comment
Это многоугольник на карте? это просто программно? - person Ricardo Dias Morais; 11.03.2020
comment
если это круглая - person Ricardo Dias Morais; 11.03.2020
comment
Можете ли вы сказать мне, какой тип геозон вы ищете? - person Ricardo Dias Morais; 11.03.2020
comment
Я ищу круговую геозону радиусом около 50 метров. Это просто программно, когда пользователь находится в регионе, я хочу только что-то напечатать. - person M Yil; 11.03.2020
comment
Позвольте нам продолжить это обсуждение в чате. - person Ricardo Dias Morais; 11.03.2020
comment
Вы, может быть, знаете, следует ли мне использовать таймер для получения местоположения каждые 10 секунд или мне следует использовать что-то еще для этого? - person M Yil; 12.03.2020