高德地图功能点使用整理

1.设置多个marker,并给多个marker设置点击事件。(如果想设置单个的话,可以用marker.showinfowindow)

for (i in 0..2) {
    val latitude = 0.0
    val longitude = 0.0
    val latLng = LatLng(latitude, longitude)
    val view = LayoutInflater.from(context).inflate(
        R.layout.mapfrag_marker, null
    )
    val tv = view?.findViewById<View>(R.id.tv_name) as TextView
    tv.text = "我是marker"
    val bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(convertViewToBitmap(view))
    val markerOption = MarkerOptions()
    markerOption.position(latLng)
    markerOption.draggable(true)//设置Marker可拖动
    markerOption.isFlat = true//设置marker平贴地图效果
    markerOption.title(i.toString())
    markerOption.snippet(i.toString())
    markerOption.icon(bitmapDescriptor)
    aMap?.addMarker(markerOption)
} 

//如果marker只是一个图片
Glide.with(this)
        .load(bean.getResult()?.profilePhoto.toString())
        .asBitmap()
        .skipMemoryCache(true)
        .into(object : SimpleTarget<Bitmap>() {
            override fun onResourceReady(resource: Bitmap?, glideAnimation: GlideAnimation<in Bitmap>?) {
                //待图片加载完毕后再设置bitmapDes
                iv.setImageBitmap(resource)
                val bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(convertViewToBitmap(view))
                val markerOption_ = MarkerOptions()
                markerOption_.position(latLng)
                // 将Marker设置为贴地显示,可以双指下拉地图查看效果
                markerOption_.isFlat = true//设置marker平贴地图效果
                markerOption.anchor(0f, 0f)
                markerOption_.icon(bitmapDescriptor)
                maker_ = aMap_.addMarker(markerOption_)
         
            }

        })

//将view转换为bitmap
private fun convertViewToBitmap(view: View): Bitmap {
     view.measure(
         View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
         View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)
     )
     view.layout(0, 0, view.measuredWidth, view.measuredHeight)
     view.buildDrawingCache()
     return view.drawingCache
 }

//设置点击事件
val markerClickListener = AMap.
    // 返回 true 则表示接口已响应事件,否则返回false
    OnMarkerClickListener {
        Log.e("snippet", it.snippet)
        //可以根据snippet来区分是哪个marker
        true //点击 marker 是否移动到中心
    }
// 绑定 Marker 被点击事件
aMap?.setOnMarkerClickListener(markerClickListener)

2.设置定位中心点。

val latLng = LatLng(latitude, longitude)
aMap?.moveCamera(CameraUpdateFactory.changeLatLng(latLng))//定位中心点

3.划轨迹。主要看大致地理位置。

 // 绘制一条直线
                aMap.addPolyline(
                    PolylineOptions()
//                        .add(
//                            LatLng(40.086796, 116.397266),
//                            LatLng(41.995827, 116.480393),
//                            LatLng(39.996057, 116.480003),
//                            LatLng(42.995921, 116.480096)
//                        )
                        //集合数据
                        .addAll(listTrack)
                        //线的宽度
                        .width(20f).setDottedLine(false).geodesic(true)
                        //颜色
                        .color(Color.argb(255, 255, 0, 0))
                )

4.搜索地点。

private fun searchPoint(key: String) {
    val query = PoiSearch.Query(key, "", "")
    //keyWord表示搜索字符串,
    //第二个参数表示POI搜索类型,二者选填其一,选用POI搜索类型时建议填写类型代码,码表可以参考下方(而非文字)
    //cityCode表示POI搜索区域,可以是城市编码也可以是城市名称,也可以传空字符串,空字符串代表全国在全国范围内进行搜索
    query.pageSize = 100// 设置每页最多返回多少条poiitem
    query.pageNum = 1 //设置查询页码

    val poiSearch = PoiSearch(this, query)
    poiSearch.setOnPoiSearchListener(object : PoiSearch.OnPoiSearchListener {
        override fun onPoiItemSearched(p0: PoiItem?, p1: Int) {
        }

        override fun onPoiSearched(p0: PoiResult?, p1: Int) {
          // 处理列表数据
        }

    })
    poiSearch.searchPOIAsyn()
}

5.定位。

val locationStyle = MyLocationStyle()
locationStyle.interval(2000)//设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。
locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE)//连续定位、蓝点不会移动到地图中心点,定位点依照设备方向旋转,并且蓝点会跟随设备移动。
locationStyle.showMyLocation(true)//设置是否显示定位小蓝点,用于满足只想使用定位,不想使用定位小蓝点的场景,设置false以后图面上不再有定位蓝点的概念,但是会持续回调位置信息。
locationStyle.radiusFillColor(resources.getColor(R.color.map_radius_color))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值