Android 使用高德SDK编写周边搜索定位
转载请注明!
前言
使用高德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编写周边搜索定位相关推荐
- android定位周边,Android 使用高德SDK编写周边搜索定位
转载请注明! 前言 使用高德SDK实现定位及周边的搜索界面,先看效果图: 使用到了高德以下sdk: com.amap.api:3dmap:latest.integration com.amap.api ...
- 【Android笔记】Android 使用高德SDK获取定位
Android 使用高德SDK获取定位 在Android开发过程中,经常需要获取手机的定位,这里记录一下使用搞的定位的过程.我选择使用高德的SDK,其实也有Web的API,但是API使用IP定位,An ...
- Android使用高德地图api实现基础定位
Android使用高德地图api实现基础定位(一) 关于 会获取SHA1的可自行跳过这一步 第二步引用高德sdk 第三步修改MainActivity.java 关于 这篇主要讲如何使用高德sdk(不是 ...
- Android使用高德与和风天气实现定位实况数据显示 简易新闻(十)
Android使用高德与和风天气实现定位实况数据显示 简易新闻(十) 关于 效果图 第一步,添加和风引用 第二步,修改AndroidManifest.xml 第三步,修改activity_main.x ...
- Android基于高德SDK的开发——自定义地图主题样式(悬浮按钮+底部弹窗)
日常的地图使用中,平台一般只会给我们提供地图的标准样式,造成了一定程度上的审美疲劳,那么如何实现地图的自定义样式呢?本文使用Android Studio 4.1,给开发者提供了一个基于高德地图SDK进 ...
- android studio高德地图的显示于定位(附带逆地理编码围栏)
首先注册高德成为开发者(打开高德地图,点击底部的开发者平台),创建应用,按照要求填写相应信息 网站:http://lbs.amap.com/api/android-sdk/guide/create-p ...
- android 高德地图sha1,Android调试高德SDK,如何获取SHA1?
debug版本: 默认的debug签名是在放在C:\Users\主机名称\.android debug.keystore 在Android studio的Terminal里输入 C:\Users\pc ...
- Android调试高德SDK,如何获取SHA1?
debug版本: 默认的debug签名是在放在C:\Users\主机名称\.android debug.keystore 在Android studio的Terminal里输入 C:\Users\pc ...
- Android - 集成高德地图API(搜索,地图,定位)
前言: 今天重构公司app的地图功能,刚好做个教程出来方便大家. 第一步: 注册高德开发用户,并来到控制台,点击应用管理->我的应用,然后创建新应用 地址:高德开放平台 | 高德地图API 点击 ...
- Android 百度地图之全局搜索周边搜索全国搜索城市路线规划(升级版附源码)
这个是今年3月份做的,拿出来分享哈,之前的一篇结构单一,现在这个新增路线规划: 路线1:无地铁 路线2:时间快 路线3:少换乘 路线4:少步行 如下图: 2.地点搜索(局部搜索)如下图: 3 定位功能 ...
最新文章
- Echarts读取本地json文件渲染轨迹,亲测ok
- 2018 icpc 徐州现场赛G-树上差分+组合数学-大佬的代码
- 寻找不合群的数据(异常值)
- Linux Capabilities 入门教程--概念篇
- C++基础学习一(基础之基础)
- [COCI 2018#5]Parametriziran
- promise的三种状态_一.Promise中核心逻辑的实现
- php 获取 table,php – 获取表对象(App_Model_TableName)作为获取结果(Zend Framework)
- 第三章计算机网络,第三章-计算机网络及应用.ppt
- android自定义样式大全:shape,selector,layer-list,style,动画全部内容
- Porteus 2.0 RC1 发布,轻量级 Linux 版本
- windows清除记住的密码
- C#格式化小数位的方法
- 找出数组中重复的值和所在位置
- 网络流量监控iptraf
- 家居3d网上展示_三维模型可视化展示
- C算法之一元二次方程组的解
- 2019第十届蓝桥杯JAVA G组题解
- 西门子PLC产生随机数
- android 来电显示号码,android监控来电显示