本文接本人上一篇文章:Android APP接入高德SDK问题与记录,如果还不熟悉高德地图接入,可以先阅读这篇文章。
1 切换图层及显示路况
通过设置mapType,可以切换地图的类型:
aMap.mapType = MAP_TYPE_NORMAL //普通地图,默认
aMap.mapType = MAP_TYPE_SATELLITE //卫星地图
aMap.mapType = MAP_TYPE_NIGHT //夜景地图
设置是否显示路况信息:
aMap.isTrafficEnabled = true
2 离线地图
高德地图SDK提供了下载离线地图的界面,如需使用,需要先在AndroidManifest.xml当中加入Activity:
<activity android:name="com.amap.api.maps.offlinemap.OfflineMapActivity"
android:screenOrientation="portrait" />
然后在项目代码中跳转至该Activity:
startActivity(Intent(this.applicationContext, OfflineMapActivity::class.java))
如果有自定义的需求,还可以自定义离线地图的功能。项目暂时没有这部分需求,如果需要了,会再完善这部分内容。
3 标绘
3.1 绘制点
在地图中心点位置添加标记点:
var latLng: LatLng?
//以下代码可以在一个按钮点击事件当中实现
latLng = aMap.cameraPosition.target //aMap.cameraPosition.target获取到高德地图当前屏幕中心点的位置
//添加标记点样式,包括图标等。
markerOption = MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.marker))
.position(latLng)
.draggable(true)
marker = aMap.addMarker(markerOption) //后续如果需要删除掉这个标记点,可以调用marker.remove()
3.2 绘制点连线
按顺序添加点连线:
var passingPoint: LatLng
//以下代码可以在一个按钮点击事件当中实现
passingPoint = aMap.cameraPosition.target
latLngs.add(passingPoint)
aMap.addPolyline(PolylineOptions()
.addAll(latLngs)
.width(10f).color(Color.argb(255, 1, 1, 1))
)
与绘制点相似,aMap.addPolyline也会返回一个Polyline对象,如果需要的话,可以调用remove()删除。
3.3 通过连接点绘制面(多边形)
var polygon: Polygon? = null
passingPoint = aMap.cameraPosition.target
latLngs.add(passingPoint)
val polygonOptions = PolygonOptions().apply {
addAll(latLngs)
strokeWidth(10f)
fillColor(Color.argb(40, 1, 150, 1))
strokeColor(Color.argb(100, 1, 1, 1))
}
if (polygon == null){
polygon = aMap.addPolygon(polygonOptions)
}else{
//去除掉之前画出来的,避免画出来的多边形层层覆盖
polygon!!.remove()
aMap.addPolygon(polygonOptions)
}
(未完待续)