转载请注明!

前言

使用高德SDK实现定位及周边的搜索界面,先看效果图:

效果图看这,传不上

使用到了高德以下sdk:

com.amap.api:3dmap:latest.integration
com.amap.api:search:latest.integration

思路分析

本文不对高德sdk的集成做介绍,主要说说实现该页面的思路。

需求:

  • 进入页面自动定位,并且展示周边
  • 搜索地点,并且展示该地点周边
  • 周边列表的点击,然后切换地图的定位蓝点

具体实现

首先需要注意权限的获取。
初始化高德相关的东西:

    /*** 初始化定位相关*/private fun initLocationAbout() {val myLocationStyle = MyLocationStyle()myLocationStyle.showMyLocation(true)myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_SHOW)//设置默认定位按钮是否显示mMap.uiSettings.isMyLocationButtonEnabled = false//设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是falsemMap.isMyLocationEnabled = truemMap.myLocationStyle = myLocationStyle//第一次定位mMap.setOnMyLocationChangeListener {val latLng = LatLng(it.latitude, it.longitude)cameraMove(latLng)}mMap.setOnCameraChangeListener(object : AMap.OnCameraChangeListener {override fun onCameraChangeFinish(p0: CameraPosition) {cameraMarkers(p0.target)//判断是否需要搜索周边if (isSearchRound) {poiSearch(p0.target)}isSearchRound = true}override fun onCameraChange(p0: CameraPosition) {}})}

移动定位点的方法:

    /*** 移动地图* @param latLng 坐标*/private fun cameraMove(latLng: LatLng) {//其中的18f表示的是地图放大级别val camera = CameraUpdateFactory.newCameraPosition(CameraPosition(latLng, 18f, 0f, 0f))mMap.moveCamera(camera)}

周边搜索的方法:

/*** 周边搜索*/private fun poiSearch(latLng: LatLng) {val point = LatLonPoint(latLng.latitude, latLng.longitude)val geocodeSearch = GeocodeSearch(this)val regeocodeQuery = RegeocodeQuery(point, 200f, GeocodeSearch.AMAP)geocodeSearch.getFromLocationAsyn(regeocodeQuery)geocodeSearch.setOnGeocodeSearchListener(object : GeocodeSearch.OnGeocodeSearchListener {/*** 逆地理编码*/override fun onRegeocodeSearched(p0: RegeocodeResult, p1: Int) {if (p1 == AMapException.CODE_AMAP_SUCCESS) {//创建当前位置的poival nowPoiltem = PoiItem("111",p0.regeocodeQuery.point,"地图位置",p0.regeocodeAddress.formatAddress)nowPoiltem.adCode = p0.regeocodeAddress.adCodenowPoiltem.provinceName = p0.regeocodeAddress.provincenowPoiltem.cityName = p0.regeocodeAddress.citynowPoiltem.adName = p0.regeocodeAddress.districtval locationList = mutableListOf<PoiItem>()//因为搜索的周边列表并不包含当前搜索的位置,所以需要把当前位置插进去locationList.add(nowPoiltem)locationList.addAll(p0.regeocodeAddress.pois)//周边展示的AdaptermAdapter.setCityAbout(p0.regeocodeAddress.province,p0.regeocodeAddress.city,p0.regeocodeAddress.district)mAdapter.replaceData(locationList)mAdapter.setEmptyView(mNoData)} else {mAdapter.setEmptyView(mErrorLoad)}}/*** 地理编码*/override fun onGeocodeSearched(p0: GeocodeResult?, p1: Int) {hideLoading()}})}

关键字搜索:

    /*** 搜索关键字*/private fun doSearchQuery(keyWord: String) {val query = PoiSearch.Query(keyWord, "", mCity)query.pageSize = 50query.pageNum = 0//搜索val poiSearch = PoiSearch(this, query)poiSearch.setOnPoiSearchListener(this)poiSearch.searchPOIAsyn()showLoading()}/*** 可以在回调中解析result,获取POI信息* result.getPois()可以获取到PoiItem列表,Poi详细信息可参考PoiItem类* 返回结果成功或者失败的响应码。1000为成功,其他为失败(详细信息参见网站开发指南-实用工具-错误码对照表)*/override fun onPoiSearched(p0: PoiResult, p1: Int) {hideLoading()if (p1 == AMapException.CODE_AMAP_SUCCESS) {mPopupLocation.replaceData(p0.pois)//弹出框mXPopup?.show()} else {App.mApplication.toast("搜索地址错误!")}}

周边列表的点击:

    mAdapter.setOnItemClickListener { adapter, view, position ->val data: PoiItem = adapter.data[position] as PoiItemisSearchRound = falsemSelectLocation = positionmAdapter.selectLocation(position)//移动点val latLng = LatLng(data.latLonPoint.latitude, data.latLonPoint.longitude)//创建cameraMove(latLng)}

页面功能通过以上方法就能实现,如果发现某些监听不会回调,先看看引入的sdk。在编写时,我一开始引用的高德的2dmap,发现地图移动的监听不会回调,然后换到3dmap就好了。

Android 使用高德SDK编写周边搜索定位相关推荐

  1. android定位周边,Android 使用高德SDK编写周边搜索定位

    转载请注明! 前言 使用高德SDK实现定位及周边的搜索界面,先看效果图: 使用到了高德以下sdk: com.amap.api:3dmap:latest.integration com.amap.api ...

  2. 【Android笔记】Android 使用高德SDK获取定位

    Android 使用高德SDK获取定位 在Android开发过程中,经常需要获取手机的定位,这里记录一下使用搞的定位的过程.我选择使用高德的SDK,其实也有Web的API,但是API使用IP定位,An ...

  3. Android使用高德地图api实现基础定位

    Android使用高德地图api实现基础定位(一) 关于 会获取SHA1的可自行跳过这一步 第二步引用高德sdk 第三步修改MainActivity.java 关于 这篇主要讲如何使用高德sdk(不是 ...

  4. Android使用高德与和风天气实现定位实况数据显示 简易新闻(十)

    Android使用高德与和风天气实现定位实况数据显示 简易新闻(十) 关于 效果图 第一步,添加和风引用 第二步,修改AndroidManifest.xml 第三步,修改activity_main.x ...

  5. Android基于高德SDK的开发——自定义地图主题样式(悬浮按钮+底部弹窗)

    日常的地图使用中,平台一般只会给我们提供地图的标准样式,造成了一定程度上的审美疲劳,那么如何实现地图的自定义样式呢?本文使用Android Studio 4.1,给开发者提供了一个基于高德地图SDK进 ...

  6. android studio高德地图的显示于定位(附带逆地理编码围栏)

    首先注册高德成为开发者(打开高德地图,点击底部的开发者平台),创建应用,按照要求填写相应信息 网站:http://lbs.amap.com/api/android-sdk/guide/create-p ...

  7. android 高德地图sha1,Android调试高德SDK,如何获取SHA1?

    debug版本: 默认的debug签名是在放在C:\Users\主机名称\.android debug.keystore 在Android studio的Terminal里输入 C:\Users\pc ...

  8. Android调试高德SDK,如何获取SHA1?

    debug版本: 默认的debug签名是在放在C:\Users\主机名称\.android debug.keystore 在Android studio的Terminal里输入 C:\Users\pc ...

  9. Android - 集成高德地图API(搜索,地图,定位)

    前言: 今天重构公司app的地图功能,刚好做个教程出来方便大家. 第一步: 注册高德开发用户,并来到控制台,点击应用管理->我的应用,然后创建新应用 地址:高德开放平台 | 高德地图API 点击 ...

  10. Android 百度地图之全局搜索周边搜索全国搜索城市路线规划(升级版附源码)

    这个是今年3月份做的,拿出来分享哈,之前的一篇结构单一,现在这个新增路线规划: 路线1:无地铁 路线2:时间快 路线3:少换乘 路线4:少步行 如下图: 2.地点搜索(局部搜索)如下图: 3 定位功能 ...

最新文章

  1. Echarts读取本地json文件渲染轨迹,亲测ok
  2. 2018 icpc 徐州现场赛G-树上差分+组合数学-大佬的代码
  3. 寻找不合群的数据(异常值)
  4. Linux Capabilities 入门教程--概念篇
  5. C++基础学习一(基础之基础)
  6. [COCI 2018#5]Parametriziran
  7. promise的三种状态_一.Promise中核心逻辑的实现
  8. php 获取 table,php – 获取表对象(App_Model_TableName)作为获取结果(Zend Framework)
  9. 第三章计算机网络,第三章-计算机网络及应用.ppt
  10. android自定义样式大全:shape,selector,layer-list,style,动画全部内容
  11. Porteus 2.0 RC1 发布,轻量级 Linux 版本
  12. windows清除记住的密码
  13. C#格式化小数位的方法
  14. 找出数组中重复的值和所在位置
  15. 网络流量监控iptraf
  16. 家居3d网上展示_三维模型可视化展示
  17. C算法之一元二次方程组的解
  18. 2019第十届蓝桥杯JAVA G组题解
  19. 西门子PLC产生随机数
  20. android 来电显示号码,android监控来电显示

热门文章

  1. Pytorch学习——池化层
  2. ERP实施-有色金属-铜冶炼
  3. 免费离线语音识别sdk
  4. python调用按键精灵插件_Textobot-用交互式TB插件在iPhone上砸壳更美滋滋
  5. 不要猥琐就是浪,特斯拉这一季度又亏大发了
  6. c语言 code table,单片机C语言unsigned char code table是什么意思?
  7. 抽象代数之三次方程的求根公式和构造一类整系数三次方程
  8. 最新解决谷歌翻译无法使用的教程
  9. 教妹学 Java:晦涩难懂的泛型
  10. 使用手机模拟NFC加密门禁卡