Android开发:集成高德地图实现定位、检索周边地址 您所在的位置:网站首页 高德地图添加定位地址在哪里 Android开发:集成高德地图实现定位、检索周边地址

Android开发:集成高德地图实现定位、检索周边地址

2024-07-10 15:48| 来源: 网络整理| 查看: 265

需求

1.后台传给我们一个经纬度,然后需要我们在地图上显示出来 2.当我们点击地图的时候进入到第二个界面,实现当前位置的定位,并且检索周边的商家地址,点击后将选中的地址回传,并显示,而我们上传给后台的是经纬度。同时当我们平移地图时我们的列表也会同步刷新(其实就是监听地图滑动,获取中心点的经纬度,再检索周边)

谷歌搜索高德SDK,进入官网选择开发支持,点击Android地图SDK 在这里插入图片描述 接着就是按着官方的接入流程集成SDK,需要认证开发者(免费的,支付宝认证就可以),申请应用获取key,注意了:申请的时候包名要和你app项目的包名一样,也就是你的applicationId,拿到key之后就可以开始集成了 1.依赖 在Project的build.gradle文件中配置repositories,添加maven或jcenter仓库地址 Android Studio默认会在Project的build.gradle为所有module自动添加jcenter的仓库地址,如果已存在,则不需要重复添加。Project的build.gradle文件在Project目录中位置如图所示:

配置如下: Java allprojects { repositories { jcenter() // 或者 mavenCentral() } }

在主工程的build.gradle文件配置dependencies,这种方式不需要会给你自动依赖最新版本的SDK

android { defaultConfig { ndk { //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so) abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64" } } } dependencies { implementationfileTree(dir: 'libs', include: ['*.jar']) //3D地图so及jar implementation'com.amap.api:3dmap:latest.integration' //定位功能 implementation'com.amap.api:location:latest.integration' //搜索功能 implementation'com.amap.api:search:latest.integration' }

然后下个官方demo把demo中的libs下的so库复制到你的项目libs目录下(官方文档好像说通过Gradle集成SDK不需要引入so库的,但是我集成的时候不行,看到demo也是Gradle集成SDK,并且也引了so库,后来我复制过来就可以了)最后再build.grale下引入libs

defaultConfig { sourceSets { main { jniLibs.srcDir 'libs' } }

在androidManifest.xml中加入各种权限,与及你在官网申请得到的key

完成这一步之后你的SDK就已经集成完毕

接下来就是实现我们的功能: 1.我们从后台拿到经纬度,需要显示在地图上,并标记该位置 首先在xml中添加MapView

在java文件中获取该控件,并初始化地图控制器对象,并将地图移动到指定经纬度,并标记出该点

//获取地图控件引用 @BindView(R.id.map) MapView mMapView; private AMap aMap = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图 mMapView.onCreate(savedInstanceState); //初始化地图控制器对象 if (aMap == null) { aMap = mMapView.getMap(); } initAMap(); } /** * 移动到指定经纬度 * @para i 经度 * @param y 维度 * @param zoo 缩放倍数 */ private void initAMap(double i, double y, float zoo) { //22.83542400, 108.35450500 AMap mAMap = mMapView.getMap(); CameraPosition cameraPosition = new CameraPosition(new LatLng(i, y), zoo, 0, 30); CameraUpdate cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition); mAMap.moveCamera(cameraUpdate); drawMarkers(i, y); } /** * 画定位标记图 * @para i 经度 * @param y 维度 */ public void drawMarkers(double i, double y) { aMap.clear(true); MarkerOptions markerOptions = new MarkerOptions() .position(new LatLng(i, y)) .draggable(true); Marker marker = aMap.addMarker(markerOptions); marker.showInfoWindow(); }

2.修改定位地址,就是启动一个新的activity,首先我们需要启动定位获取当前的位置,并且标记出当前的位置(记得android6.0以上要动态申请权限),同时检索周边的地址(返回的是一个地址对象集合,我们用recyclerview把数据展示出来即可),同时要对地图滑动进行监听,当地图移动的时候拿到中心点的位置,然后重新搜索附近地址,刷新列表。当点击列表item的时候就把你点击的地址对象返回上一个activity即可,里面包含了经纬度等信息。 所以第一步:定位,并显示当前的位置

//获取地图控件引用 @BindView(R.id.map) MapView mMapView; private AMap aMap = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //获取地图控件引用 //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图 mMapView.onCreate(savedInstanceState); //初始化地图控制器对象 if (aMap == null) { aMap = mMapView.getMap()


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有