Android 高德地图进阶功能

本文接本人上一篇文章: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)
}

(未完待续)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容