Отображение ближайших маркеров - PullRequest
0 голосов
/ 29 октября 2019

Я определил маркеры места на карте и хочу показать только ближайший маркер на моем введенном местоположении

    val nangka = LatLng(14.669100, 121.108140)
    val north_edsa = LatLng(14.596530, 121.059441)
    val mandaluyong = LatLng(14.590030, 121.034700)
    val payatas = LatLng(14.628710, 121.063900)
    val bay_area = LatLng(14.537208, 120.990720)
    val paranaque = LatLng(14.447820, 121.023040)
    val muntinlupa = LatLng(14.590030, 121.034700)
    val feliz = LatLng(14.628710, 121.063900)
    val manila = LatLng(14.577701, 120.983741)
    val makati = LatLng(14.551714, 121.027288)
    val las_pinas = LatLng(14.453614, 120.975966)
    val katipunan = LatLng(14.639077, 121.074214)
    val raymundo = LatLng(14.572139, 121.083775)
    val commonwealth = LatLng(14.663149, 121.068543)
    val alabang = LatLng(14.428302, 121.027184)
    val antipolo = LatLng(14.5884681, 121.1574247)
    val main = LatLng(14.5890657, 121.07890606)
    val fairview = LatLng(14.7363483, 121.06002163)
    val low_antipolo = LatLng(14.62467319, 121.12265825)
    val gateway = LatLng(14.6219187, 121.05293074)
    val angono = LatLng(14.53093443, 121.15457696)
    val tandang_sora = LatLng(14.67962335, 121.01988032)
    val valenzuela = LatLng(14.68605018, 120.97691678)

1 Ответ

1 голос
/ 29 октября 2019

Вы можете использовать Location::distanceBetween, чтобы получить расстояние от точки A (местоположение пользователя) и точки B (другое местоположение)

Вы должны добавить все маркеры на Google Map и сохранитьзатем на каждом маркере сравните расстояние от местоположения пользователя с каждым маркером и измените состояние видимости

    val result = FloatArray(1) // First element will contains the distance between the locations
    val currentUserLocation: Location = getCurrentUserLocation()
    aMarkerList.forEach {
        val currentLatLng = it.getPosition()
        // Calculates the distance between two points
        Location.distanceBetween(
            currentUserLocation.latitude,
            currentUserLocation.longitude,
            currentLatLng.latitude,
            currentLatLng.longitude,
            result
        )
        val distance = result[0] // You could use result[0] directly
        it.isVisible = distance <= YOUR_DISTANCE
    }

Обновление

Как только Карты Google будут готовыВы можете хранить маркеры для манипулирования ими после:

val nangka = LatLng(14.669100, 121.108140)
val northEdsa = LatLng(14.596530, 121.059441)

Marker nangkaMarker = mMap.addMarker(MarkerOptions().position(nangka));
Marker northEdsaMarker = mMap.addMarker(MarkerOptions().position(northEdsa));

aMarkerList.add(nangkaMarker)
aMarkerList.add(northEdsaMarker)
// And son on...

Я уверен, что следующая ссылка будет полезна https://developers.google.com/maps/documentation/android-sdk/marker#customize_a_marker

...