У меня есть вопрос передового опыта о том, как управлять добавлением пути полилинии к 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
}
}
}
, которое позволяет карте иметь дело только с одной линией за раз. Мой главный вопрос: хуже ли это из-за необходимости каждый раз воссоздавать все точки на новой линии? Запуск в моем эмуляторе, и мое реальное устройство, кажется, хорошо. Нет мерцания (это имеет смысл, это добавление новой строки перед удалением старой), и, как представляется, никакого отставания нет.
Мой текущий план - продолжать, как есть, потому что это просто и, кажется, работает. Но я хотел бы убедиться, что я не вызываю больше работы, чем мне нужно. Кажется, что в любом случае нужно проделать определенную работу, но этот путь показался мне лучшим путем.