1.去申请app的Appkey,对百度sdk的引入和配置

2.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"><data><variablename="listener"type="android.view.View.OnClickListener" /></data><LinearLayouttools:context=".activity.MapNavigation"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><RelativeLayoutandroid:layout_width="match_parent"android:background="@drawable/home_top_gradient_bg"android:layout_height="48dp"><TextViewandroid:layout_width="match_parent"android:layout_height="@dimen/dp_48"android:gravity="center"android:text="选点定位"android:textColor="@color/white"android:textSize="18sp" /><TextViewandroid:id="@+id/tv_sure"android:layout_width="wrap_content"android:layout_height="@dimen/dp_48"android:layout_alignParentRight="true"android:layout_marginRight="20dp"android:gravity="center"android:onClick="@{listener}"android:text="确定选点"android:textColor="@color/white"android:textSize="12sp" /></RelativeLayout><com.baidu.mapapi.map.TextureMapViewandroid:id="@+id/bmapView"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_weight="1"/><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="@color/line" /><LinearLayoutandroid:id="@+id/ll_location"android:visibility="gone"android:layout_width="match_parent"android:layout_height="@dimen/dp_60"android:background="@color/white"android:layout_gravity="bottom"android:orientation="vertical"><com.hnwx.rhpk.view.MyValueTextViewandroid:id="@+id/tv_address"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:maxLines="1"android:ellipsize="end"android:paddingLeft="@dimen/dp_10"android:gravity="left|center_vertical"android:text=""android:textColor="#000"android:textSize="12sp" /><com.hnwx.rhpk.view.MyValueTextViewandroid:id="@+id/tv_latlng"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="left|center_vertical"android:maxLines="1"android:ellipsize="end"android:text="位置:"android:paddingLeft="@dimen/dp_10"android:textColor="#000"android:textSize="12sp" /></LinearLayout></LinearLayout>
</layout>

3Java代码


/*** 地图选点定位*/
open class MapNavigation : BaseActivity<ActivityMapNavigationBinding>(), BaiduMap.OnMapClickListener, OnGetGeoCoderResultListener {private lateinit var mBaiduMap: BaiduMapprivate var markList: ArrayList<MarkerOptions> = ArrayList()private var mClusterManager: ClusterManager<HomeFragmentMap.MyItem>? = nullprivate var zoomTo = 13.0fprivate var mMapStatus: MapStatus? = nullprivate lateinit var mSearch : GeoCoderprivate var lat = 28.234893private var lng = 112.94547private var viewId = 0private var position = -1companion object {@JvmStaticfun goMapNavigationActivity(context: Context, lon: Double, lat: Double,viewId: Int,position: Int) {val intent = Intent(context, MapNavigation().javaClass)intent.putExtra("lon", lon)intent.putExtra("lat", lat)intent.putExtra("viewId", viewId)intent.putExtra("position", position)ActivityUtils.startActivity(intent)}@JvmStaticfun goMapNavigationActivity(context: Context) {ActivityUtils.startActivity(Intent(context, MapNavigation().javaClass))}}override fun init() {mBaiduMap = getBinding().bmapView.map//设置不让手势旋转地图mBaiduMap.uiSettings.isRotateGesturesEnabled = false;mBaiduMap.uiSettings.isOverlookingGesturesEnabled = false;
//         设置地图监听,当地图状态发生改变时,进行点聚合运算mBaiduMap.setOnMapStatusChangeListener(mClusterManager)
//         设置maker点击时的响应mBaiduMap.setOnMarkerClickListener(mClusterManager)mSearch = GeoCoder.newInstance()mSearch.setOnGetGeoCodeResultListener(this)intent.getStringExtra("lat")lat = intent.getDoubleExtra("lat",28.234893)lng = intent.getDoubleExtra("lon",112.94547)viewId = intent.getIntExtra("viewId",0)position = intent.getIntExtra("position",-1)setMarks(lat,lng)getBinding().setListener {when (it.id) {R.id.tv_sure -> {initLocation()if(getBinding().tvLatlng.text.toString().isNotEmpty()){EventBusUtil.post(MapSelectLocationEvent(getBinding().tvLatlng.text.toString(),getBinding().tvAddress.text.toString(),viewId,position))}finish()}}}mBaiduMap.setOnMapClickListener(this)mBaiduMap.isMyLocationEnabled = true// 初始化定位//地图加载完成回调,(只在初始化调一次)mBaiduMap.setOnMapLoadedCallback {mBaiduMap.setMaxAndMinZoomLevel(18.toFloat(), 11.toFloat())// 初始化默认定位点mMapStatus =MapStatus.Builder().target(LatLng(lat, lng)).zoom(zoomTo).build()mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(mMapStatus))getBinding().bmapView.setMapCustomStyleEnable(true)}// 隐藏百度logoval child: View = getBinding().bmapView.getChildAt(1)if (child != null && (child is ImageView || child is ZoomControls)) {child.visibility = View.GONE}initListener()}/*** 设置mark点*/private fun setMarks(lat: Double, lon: Double) {mBaiduMap.clear()markList.clear()val markView =LayoutInflater.from(this).inflate(R.layout.layout_baidu_mark, null)
//        val markIndex = markView.findViewById<TextView>(R.id.iv_mark)
//                        val split = it.color.replace("rgb(", "").replace(")", "").split(",")val bundle = Bundle()val dataInfo = MapMarkBean.Data()dataInfo.site = "$lon,$lat"bundle.putSerializable("datainfo", dataInfo)val markerOptionsA = MarkerOptions().extraInfo(bundle)// 经纬度.position(LatLng(lat, lon))// 设置 Marker 覆盖物的图标.icon(BitmapDescriptorFactory.fromView(markView))
//            .icon(BitmapDescriptorFactory.fromResource(R.drawable.dwd))// 设置 marker 在地图的层级.zIndex(9)// 设置Marker是否可点击.clickable(false)// 设置 marker 是否允许拖拽,默认不可拖拽.draggable(false)// 设置是否开启 marker 覆盖物近大远小效果,默认开启.perspective(false)// 设置 marker 覆盖物的锚点比例,默认(0.5f, 1.0f)水平居中,垂直下对齐.anchor(0.5f, 1.0f)// 设置多少帧刷新一次图片资源,Marker动画的间隔时间,值越小动画越快 默认为20,最小为1.period(10)
//        // 掉下动画
//        markerOptionsA.animateType(MarkerOptions.MarkerAnimateType.drop)// 生长动画
//        markerOptionsC.animateType(MarkerOptions.MarkerAnimateType.grow)markList.add(markerOptionsA)mBaiduMap.addOverlay(markerOptionsA)}/*** 给marker点添加点击事件*/private fun initListener() {// 设置Marker 点击事件监听mBaiduMap.setOnMarkerClickListener { marker ->val dataInfo = marker.extraInfo.getSerializable("datainfo") as MapMarkBean.DatadataInfo.let {val list = ArrayList<MapMarkBean.Data>()list.add(dataInfo)
//                showMarkInfo(list)}true}// 设置地图监听,当地图状态发生改变时,进行点聚合运算mBaiduMap.setOnMapStatusChangeListener(object : BaiduMap.OnMapStatusChangeListener {/*** status - 地图状态改变开始时的地图状态*/override fun onMapStatusChangeStart(p0: MapStatus?) {// 手势操作地图,设置地图状态等操作导致地图状态开始改变。}/*** status - 地图状态改变开始时的地图状态* reason - 地图状态改变的原因*/override fun onMapStatusChangeStart(p0: MapStatus?, p1: Int) {// 手势操作地图,设置地图状态等操作导致地图状态开始改变。}/*** status - 当前地图状态*/override fun onMapStatusChange(p0: MapStatus?) {// 地图状态变化中}/*** status - 地图状态改变结束后的地图状态*/override fun onMapStatusChangeFinish(p0: MapStatus?) {// 地图状态改变结束//   p0.zoom 地图缩放级别 4~21,室内图支持到22LogUtil.d("zoom->", p0?.zoom.toString())}})}override fun onResume() {super.onResume()// MapView的生命周期与Activity同步,当activity onResume 时必须调用MapView.onResume()getBinding().bmapView.onResume()}override fun onPause() {super.onPause()// MapView的生命周期与Activity同步,当activity销毁时必须调用MapView.onPause()getBinding().bmapView.onPause()}override fun onDestroy() {super.onDestroy()//不允许图层定位mBaiduMap.isMyLocationEnabled = false// 清除所有图层mBaiduMap.clear()mSearch.destroy()getBinding().bmapView.setMapCustomStyleEnable(false)// MapView的生命周期与Activity同步,当activity销毁时必须调用MapView.destroy()getBinding().bmapView.onDestroy()}override fun isUserEventBus(): Boolean {return false}override fun onMapClick(p0: LatLng?) {if (p0 != null) {LogUtils.d("onMapClick"+p0.latitude+"lon"+p0.longitude)setMarks(p0.latitude, p0.longitude)mSearch.reverseGeoCode(ReverseGeoCodeOption().location(p0))}}override fun onMapPoiClick(p0: MapPoi?) {if (p0 != null) {LogUtils.d("onMapClick"+p0.position.latitude+"lon"+p0.position.longitude)setMarks(p0.position.latitude, p0.position.longitude)mSearch.reverseGeoCode(ReverseGeoCodeOption().location(p0.position))}}//正向编码,通过地址获得经纬度override fun onGetGeoCodeResult(result: GeoCodeResult?) {}//反向编码,通过经纬度获得地址override fun onGetReverseGeoCodeResult(result: ReverseGeoCodeResult?) {if (result == null || result.error !== SearchResult.ERRORNO.NO_ERROR) {Toast.makeText(this, "抱歉,未能找到结果", Toast.LENGTH_LONG).show()getBinding().tvLatlng.text = "位置:"getBinding().tvAddress.text = "未获取到位置"return}if(getBinding().llLocation.visibility == View.GONE){getBinding().llLocation.visibility = View.VISIBLE}
//        getBinding().tvLatlng.text = "位置:"+result.location.longitude+","+result.location.latitude
//        getBinding().tvLatlng.text = ""+result.location.longitude+","+result.location.latitudegetBinding().tvLatlng.text = ""+String.format("%.6f", result.location.longitude)+","+String.format("%.6f", result.location.latitude)getBinding().tvAddress.text = ""+result.address}
}

百度地图选点定位界面相关推荐

  1. 利用百度地图Android定位SDK获取经纬度

    环境的搭建(参考上一次的文章) 百度地图Android定位SDK的使用 2.在Android studio里设计程序来获取经纬度 界面布局activity_main.xml文件的源代码: <?x ...

  2. 地图选点 php,百度地图选点–Bootstrap模态框(Modal)插件

    在网站的开发过程中,例如商家的注册等,需要商家设定自己的经纬度进行对商家的精确定位,同时也方便用户查找到附近距离范围内的商家.这样更利于网站的用户和商家互动.商家设定自己的经纬度就需要使用到百度地图2 ...

  3. android百度地图更换定位图标,android百度地图定位,改变MyLocationOverlay默认图标(原始为蓝色点)(两种方法)...

    开放地图API无外乎google ,百度,高德等.其它的还有很多,不过比较好用的就这三种了,如果不需要出国(台湾例外),则最好使用百度地图,性能比高德好的多,无聊的时候自己可以测试测试.. 下面我简单 ...

  4. 在Fragment中实现百度地图,定位到当前位置(基于SDKv2.1.0)

    使用最新版本的百度地图需要注意的几个地方: 1.libs文件夹下要有android-support-v4.jar.baidumapapi_v2_1_0.jar.locSDK_3.1.jar三个jar包 ...

  5. android百度地图sdk定位权限,Android:使用百度地图SDK实现定位:下载SDK、申请密钥、动态获得Android权限...

    最近想实现一个打卡的功能,想到可以利用百度地图的SDK.网上有很多关于百度地图SDK定位.地图功能应用的demo,这部分倒不是很困难.但网上很多博客写的内容一般都着重于代码部分,很多下载配置和编译器设 ...

  6. Android百度地图之定位图层

    来自:http://blog.csdn.net/u010142437/article/details/11577077 在使用百度地图结合GPS进行定位一文中,我们已经介绍了利用GPS结合百度地图进行 ...

  7. python爬取百度地图_python 爬虫百度地图的信息界面的实现方法

    python 爬虫百度地图的信息界面的实现方法 发布时间:2020-09-23 00:02:08 来源:脚本之家 阅读:78 作者:猫苘 在爬虫百度地图的期间,就为它做了一个界面,运用的是PyQt5. ...

  8. AngularJS进阶(十九)在AngularJS应用中集成百度地图实现定位功能

    在AngularJS应用中集成百度地图实现定位功能 注:请点击此处进行充电! 前言 根据项目需求,需要实现手机定位功能,考虑到百度业务的强大能力,遂决定使用百度地图第三方服务. 添加第三方模块的步骤与 ...

  9. AngularJS进阶 十九 在AngularJS应用中集成百度地图实现定位功能

    在AngularJS应用中集成百度地图实现定位功能 注:请点击此处进行充电! 前言 根据项目需求,需要实现手机定位功能,考虑到百度业务的强大能力,遂决定使用百度地图第三方服务. 添加第三方模块的步骤与 ...

最新文章

  1. 设置tomcat服务为80端口,tomcat虚拟主机,tomcat日志
  2. 【Web安全】通过机器学习破解验证码图片
  3. 中介者模式(Mediator Pattern)
  4. 洛谷P1246C语言,codevs1246 丑数
  5. java点击关闭弹出窗口_java – JPopupMenu在子弹出窗口打开时关闭
  6. 线性回归的Spark实现 [Linear Regression / Machine Learning / Spark]
  7. python存文件代码_Python文件读写保存操作的示例代码
  8. 一个我自己建的程序员资料分享站
  9. 大学中计算机考查课不及格怎么办,大学体测不及格怎么办 有哪些补救方法
  10. vue项目 构建 打包 发布 三部曲
  11. 适配器自动分配的169开头的地址_代理ip地址怎么换
  12. 浅谈MyBatis源码工具类之——Reflector类
  13. 昨天去某大厂面试,居然让我做四则运算,还好我够机灵。
  14. 英特尔向第11代vPro芯片添加了启用硬件的勒索软件检测
  15. 医院预约挂号系统的设计
  16. 无悔入华夏怎么一直显示服务器,无悔入华夏快速通关攻略
  17. 计算机专业笔记本硬盘需要多少,笔记本电脑固态硬盘要多大的合适_教你购买适合的固态硬盘...
  18. 1.Diagno-基本概述
  19. brpc-client
  20. P2356 弹珠游戏

热门文章

  1. 6月9日语文作业答案
  2. select下拉框类型转变
  3. 高嘌呤食物搜索引擎_引发尿高酸常见原因
  4. 应用程序主题生成很简单!界面控件DevExtreme有现成的主题生成器
  5. ValueError: Worksheet named ‘sheet1‘ not found
  6. 安卓硬编音视频数据推送到rtmp服务器
  7. 怎样取消连续包月自动续费_大会员怎么取消自动续费
  8. mysql期中考试题及答案_MySQL数据库考试题与答案
  9. 吉普赛人祖传的神奇读心术.它能测算出你的内心感应_左亦然_新浪博客
  10. ArKTS的基本组件