[3.2.0][opt]支持绘制独立站点轨迹
This commit is contained in:
@@ -99,6 +99,8 @@ class OverMapView @JvmOverloads constructor(
|
|||||||
private var mBottomPolyline: Polyline? = null
|
private var mBottomPolyline: Polyline? = null
|
||||||
private var mCoveredPolyline: Polyline? = null
|
private var mCoveredPolyline: Polyline? = null
|
||||||
|
|
||||||
|
private var mSitePolyline: Polyline? = null
|
||||||
|
|
||||||
// 计算索引并设置对应的Bitmap
|
// 计算索引并设置对应的Bitmap
|
||||||
var arrivedBitmap: BitmapDescriptor? = null
|
var arrivedBitmap: BitmapDescriptor? = null
|
||||||
var unArrivedBitmap: BitmapDescriptor? = null
|
var unArrivedBitmap: BitmapDescriptor? = null
|
||||||
@@ -752,6 +754,95 @@ class OverMapView @JvmOverloads constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 绘制站点轨迹线
|
||||||
|
*/
|
||||||
|
@MainThread
|
||||||
|
fun drawSitePolyline(coordinates: List<LatLng>?, bitmap: Bitmap) {
|
||||||
|
if (coordinates.isNullOrEmpty()) return
|
||||||
|
if (mSitePolyline != null) {
|
||||||
|
mSitePolyline!!.remove()
|
||||||
|
}
|
||||||
|
val textureList = arrayListOf<BitmapDescriptor>()
|
||||||
|
val texIndexList = arrayListOf<Int>()
|
||||||
|
for (i in coordinates.indices) {
|
||||||
|
// 线段数比点数少一个
|
||||||
|
if (i == 0) continue
|
||||||
|
textureList.add(BitmapDescriptorFactory.fromBitmap(bitmap))
|
||||||
|
texIndexList.add(i - 1)
|
||||||
|
}
|
||||||
|
if (mAMap != null) {
|
||||||
|
//设置线段纹理
|
||||||
|
val polylineOptions = PolylineOptions()
|
||||||
|
polylineOptions.addAll(coordinates)
|
||||||
|
polylineOptions.width(14f) //线段宽度
|
||||||
|
polylineOptions.lineCapType(PolylineOptions.LineCapType.LineCapRound)
|
||||||
|
polylineOptions.customTextureList = textureList
|
||||||
|
polylineOptions.customTextureIndex = texIndexList
|
||||||
|
// 绘制线
|
||||||
|
mSitePolyline = mAMap!!.addPolyline(polylineOptions)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清除已选站点的轨迹线
|
||||||
|
*/
|
||||||
|
fun clearSitePolyline() {
|
||||||
|
if (mSitePolyline != null) {
|
||||||
|
mSitePolyline!!.remove()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 站点轨迹集合被包含在地图显示范围内
|
||||||
|
*/
|
||||||
|
fun includeSitePointsAndUpdateCamera(coordinates: List<LatLng>?) {
|
||||||
|
val linePointsLatLng = planningPoints
|
||||||
|
val boundsBuilder = LatLngBounds.Builder()
|
||||||
|
var isOnlyCarLocation = true
|
||||||
|
|
||||||
|
if (linePointsLatLng.size > 1) {
|
||||||
|
// 圈定地图显示范围(自动驾驶轨迹)
|
||||||
|
for (i in linePointsLatLng.indices) {
|
||||||
|
boundsBuilder.include(linePointsLatLng[i])
|
||||||
|
}
|
||||||
|
isOnlyCarLocation = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mLocation != null) {
|
||||||
|
// 自车坐标
|
||||||
|
boundsBuilder.include(LatLng(mLocation!!.latitude, mLocation!!.longitude))
|
||||||
|
}
|
||||||
|
|
||||||
|
coordinates?.let {
|
||||||
|
// 站点轨迹被包含在地图显示范围内
|
||||||
|
for (i in it.indices) {
|
||||||
|
boundsBuilder.include(it[i])
|
||||||
|
}
|
||||||
|
isOnlyCarLocation = false
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isOnlyCarLocation) {
|
||||||
|
val cameraPosition = CameraPosition.Builder().tilt(mTilt).build()
|
||||||
|
//第二个参数为四周留空宽度
|
||||||
|
mAMap!!.moveCamera(
|
||||||
|
CameraUpdateFactory.newLatLngBoundsRect(
|
||||||
|
boundsBuilder.build(),
|
||||||
|
AutoSizeUtils.dp2px(context, leftPadding.toFloat()),
|
||||||
|
AutoSizeUtils.dp2px(context, rightPadding.toFloat()),
|
||||||
|
AutoSizeUtils.dp2px(context, topPadding.toFloat()),
|
||||||
|
AutoSizeUtils.dp2px(context, bottomPadding.toFloat())
|
||||||
|
)
|
||||||
|
)
|
||||||
|
mAMap!!.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition))
|
||||||
|
} else {
|
||||||
|
//设置希望展示的地图缩放级别
|
||||||
|
val cameraPosition = CameraPosition.Builder()
|
||||||
|
.target(mCarMarker!!.position).tilt(mTilt).zoom(zoomLevel.toFloat()).build()
|
||||||
|
mAMap!!.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onChassisLocationGCJ02(gnssInfo: MogoLocation?) {
|
override fun onChassisLocationGCJ02(gnssInfo: MogoLocation?) {
|
||||||
gnssInfo?.let {
|
gnssInfo?.let {
|
||||||
mLocation = it
|
mLocation = it
|
||||||
|
|||||||
Reference in New Issue
Block a user