Проверка доступности доставки товара на основе геолокации пользователя?

Подскажите пожалуйста, как указать возможные места доставки(координаты) за которыми доставка товара недоступна, на основе геолокации пользователя. И за одно проверить находится он сейчас в доступной для доставки области.


Ответы (1 шт):

Автор решения: blind.falcon

Если вы знаете координаты пользователя и координаты магазина, откуда планируется доставка, а так же вам достаточно простого радиуса (без учёта длины реального маршрута) то можно воспользоваться методом класса Location - public float distanceTo(Location dest).

fun calculateDistance(
        userLat: Double,
        userLng: Double,
        shopLat: Double,
        shopLng: Double
    ): Double {
        val userLocation = Location("user").apply {
            latitude = userLat
            longitude = userLng
        }

        val shopLocation = Location("shop").apply {
            latitude = shopLat
            longitude = shopLng
        }

        return userLocation.distanceTo(shopLocation).toDouble()
    }

Далее остаётся только сравнить полученный результат с максимальным радиусом доставки и оповестить пользователя.

→ Ссылка