java - 如何让整个折线在谷歌地图上可见
问题描述
我有一条从路线请求中获得的折线,我希望它显示所有可见点的谷歌地图,但我不知道如何让相机显示所有点。我像这样添加折线:
fun MapFragment.addPolyline(line: String) {
val decodedPath: List<LatLng> = PolyUtil.decode(line)
getMap()?.addPolyline(PolylineOptions().addAll(decodedPath))
}
然后我将相机放在这样的一个点上:
fun MapFragment.setCamera(latLng: LatLng) {
getMap()?.moveCamera(
CameraUpdateFactory.newLatLngZoom(
latLng, 20f
)
)
}
然而,这只显示了折线的一部分。我需要更改缩放比例,以便地图覆盖整个折线。我该如何做到这一点?
解决方案
您必须制作 latlngbound 。您可以使用此方法绘制整个点的折线。
fun drawPolyline(listlatlng: ArrayList<LatLng>) {
var latlngHistory: ArrayList<LatLng> = ArrayList()
val bc = LatLngBounds.Builder()
for (item in listlatlng) {
latlngHistory.add(item)
bc.include(item)
}
mMap?.clear()
var path: Polyline = mMap!!.addPolyline(
PolylineOptions().addAll(latlngHistory)
)
path.width = 10F
path.color = Color.parseColor("#A3258F")
if (latlngHistory != null && latlngHistory.size != 0) {
if (latlngHistory.size < 2) {
bc.include(latlngHistory.get(0))
bc.include(latlngHistory.get(latlngHistory.size - 1))
}
//cardll is a layout refernce on which map is displaying
val width = cardll?.width
val height = cardll?.height
if (width != null && height != null) {
mMap!!.moveCamera(
CameraUpdateFactory.newLatLngBounds(
bc.build(),
width!!,
height!!,
60
)
)
}
}
}
推荐阅读
- scala - 如何评估对链中最后一个成功步骤的理解?
- javascript - Dragover:无法向左和顶部移动
- r - R - dplyr mutate with function 只检查第一行
- javascript - 使用其上下文调用原始回调函数
- javascript - 在 Chrome 开发人员控制台中加载页面后 window.onload 不起作用
- python - 在 Python 中使用 æ、ø 和 å
- java - Java Selenium“findElement”找不到现有对象
- xml - 仅当存在这些元素时,如何在元素之间放置文本?
- swift - 在 0.667 和 3.833 Hz 范围内快速实现 IIR 滤波器
- linux - 如何在 linux makefile 中初始化然后迭代数组?