Android Google Map одиночной полилинии или нескольких - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть вопрос передового опыта о том, как управлять добавлением пути полилинии к GoogleMap в android, который растет по мере перемещения пользователя.

Версия TLDR : это лучше? продолжать заменять ломаную на новую, то есть все предыдущие точки плюс новую, или продолжать добавлять тонну 2-х точечных полилиний?

В предыдущих итерациях я создал новую 2-точечную полилинию для каждого нового местоположения, где его начало находится в конце предыдущей строки, а конец - в текущем.

Я понял, что могу создать МНОГИЕ ресурсы для карты. чтобы отслеживать вместо одного. Из-за этого я изучил, как сделать одну линию и просто добавить к ней точки (это, кажется, не работает), и я не могу найти никакой документации, в которой говорится, как мне этого добиться.

В настоящее время я нашел это решение:

private lateinit var polyLine: Polyline
fun updateLocation(location: Location?) {
    location?.let {
        val latLng = LatLng(location!!.latitude, location!!.longitude)
        if (firstLoc) {
            polyLine = googleMap.addPolyline(PolylineOptions().add(latLng))
            googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16F))
            firstLoc = false;
        } else {
            googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16F))
            val newLine = googleMap.addPolyline(PolylineOptions().addAll(polyLine.points).add(latLng).width(10f))
            polyLine.remove()
            polyLine = newLine
        }
    }
}

, которое позволяет карте иметь дело только с одной линией за раз. Мой главный вопрос: хуже ли это из-за необходимости каждый раз воссоздавать все точки на новой линии? Запуск в моем эмуляторе, и мое реальное устройство, кажется, хорошо. Нет мерцания (это имеет смысл, это добавление новой строки перед удалением старой), и, как представляется, никакого отставания нет.

Мой текущий план - продолжать, как есть, потому что это просто и, кажется, работает. Но я хотел бы убедиться, что я не вызываю больше работы, чем мне нужно. Кажется, что в любом случае нужно проделать определенную работу, но этот путь показался мне лучшим путем.

...