我有一个关于如何管理在Android中向GoogleMap添加折线路径的最佳做法问题,该路径会随着用户的移动而增长。
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
}
}
}
这允许地图一次只处理一行。我的主要问题是,由于每次都必须在新行上重新创建所有点,因此情况是否更糟? 在我的模拟器和实际设备中运行,看起来还不错。没有闪烁(这很有意义,它是在删除旧行之前添加了新行),并且似乎没有任何滞后。
我当前的计划是继续保持现状,因为它很简单,而且似乎可以正常工作。但是我想确保我所做的工作不会超出我的需要。在这两种情况下,似乎都需要进行一些工作,但是在我看来,这种方式是更好的方法。