先附上高德地图的文档链接:https://lbs.amap.com/api/android-sdk/summary/

方法1:通过拷贝集成SDK

1、拷贝 jar 文件至 libs 文件夹下

将下载的定位 SDK jar 文件复制到工程(此处截图以官方示例Demo为例子)的 libs 目录下,如果有老版本定位 jar 文件存在,请删除。定位 SDK 无需 so 库文件支持。如图所示:

2、配置 build.gradle 文件

在 build.gradle 文件的 dependencies 中配置 compile fileTree(include: ['*.jar'], dir: 'libs')。

方法2:通过Gradle集成SDK

1、在Project的build.gradle文件中配置repositories,添加maven或jcenter仓库地址

Android Studio默认会在Project的build.gradle为所有module自动添加jcenter的仓库地址,如果已存在,则不需要重复添加。Project的build.gradle文件在Project目录中位置如图所示:

配置如下:

allprojects { repositories { jcenter() // 或者 mavenCentral() } }

2、在主工程的build.gradle文件配置dependencies

根据项目需求添加SDK依赖。引入各个SDK功能最新版本, dependencies 配置方式如下:

SDK

引入代码

3D地图

compile 'com.amap.api:3dmap:latest.integration'

2D地图

compile 'com.amap.api:map2d:latest.integration'

导航

compile 'com.amap.api:navi-3dmap:latest.integration'

搜索

compile 'com.amap.api:search:latest.integration'

定位

compile 'com.amap.api:location:latest.integration'

接下来进行以下操作:

第 1 步,配置AndroidManifest.xml

首先,声明Service组件

请在application标签中声明service组件,每个app拥有自己单独的定位service。

<service android:name="com.amap.api.location.APSService"></service>

然后,声明权限

Android 6.0及以上系统可以参考Android 6.0权限说明章节。


<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!--用于写入缓存数据到扩展存储卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<!--用于申请获取蓝牙信息进行室内定位-->
<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>

最后,设置高德Key

在application标签中加入:

<meta-data android:name="com.amap.api.v2.apikey" android:value="key">//开发者申请的key       </meta-data>

下面是完整的代码:

public class MainActivity extends AppCompatActivity {private static final float ZOOM_VALUE = 16;private static final String TAG = "MainActivity";private MapView mMapView;private AMap mMap;private AMapLocationClient mLocationClient;private AMapLocationClientOption mLocationOption;private LocationSource.OnLocationChangedListener mListener;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mMapView = (MapView) findViewById(R.id.map_view);mMapView.onCreate(savedInstanceState);if (mMap == null) {mMap = mMapView.getMap();}mMap.getUiSettings().setZoomControlsEnabled(false);//设置地图的缩放级别mMap.moveCamera(CameraUpdateFactory.zoomTo(ZOOM_VALUE));//调用此方法定位setUpMap();}/*** 设置一些amap的属性*/private void setUpMap() {// 自定义系统定位小蓝点MyLocationStyle myLocationStyle = new MyLocationStyle();//  myLocationStyle.myLocationIcon(BitmapDescriptorFactory.fromResource(R.drawable.location_marker));// 设置小蓝点的图标myLocationStyle.strokeColor(Color.BLACK);// 设置圆形的边框颜色myLocationStyle.radiusFillColor(Color.argb(100, 0, 191, 255));// 设置圆形的填充颜色// myLocationStyle.anchor(int,int)//设置小蓝点的锚点myLocationStyle.strokeWidth(1.0f);// 设置圆形的边框粗细mMap.setMyLocationStyle(myLocationStyle);mMap.setLocationSource(mLocationSource);// 设置定位监听mMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示mMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false}public LocationSource mLocationSource = new LocationSource() {@Overridepublic void activate(OnLocationChangedListener onLocationChangedListener) {mListener = onLocationChangedListener;//初始化定位initAmapLocation();}@Overridepublic void deactivate() {mListener = null;if (mLocationClient != null) {mLocationClient.stopLocation();mLocationClient.onDestroy();}mLocationClient = null;}};/*** 初始化定位*/private void initAmapLocation() {//初始化定位mLocationClient = new AMapLocationClient(this);//设置定位回调监听mLocationClient.setLocationListener(mAMapLocationListener);//初始化AMapLocationClientOption对象mLocationOption = new AMapLocationClientOption();// 设置定位场景,目前支持三种场景(签到、出行、运动,默认无场景)mLocationOption.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.Transport);//设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);//设置定位间隔,单位毫秒,默认为2000ms,最低1000ms。mLocationOption.setInterval(5000);//设置是否返回地址信息(默认返回地址信息)mLocationOption.setNeedAddress(true);//单位是毫秒,默认30000毫秒,建议超时时间不要低于8000毫秒。mLocationOption.setHttpTimeOut(20000);if (null != mLocationClient) {mLocationClient.setLocationOption(mLocationOption);//设置场景模式后最好调用一次stop,再调用start以保证场景模式生效//  mLocationClient.stopLocation();mLocationClient.startLocation();}}/*** 定位*/public AMapLocationListener mAMapLocationListener = new AMapLocationListener() {@Overridepublic void onLocationChanged(AMapLocation amapLocation) {if (amapLocation != null) {if (amapLocation.getErrorCode() == 0) {//可在其中解析amapLocation获取相应内容。mListener.onLocationChanged(amapLocation);// 显示系统小蓝点,不写这一句无法显示到当前位置amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表amapLocation.getLatitude();//获取纬度amapLocation.getLongitude();//获取经度amapLocation.getAccuracy();//获取精度信息amapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。amapLocation.getCountry();//国家信息amapLocation.getProvince();//省信息amapLocation.getCity();//城市信息amapLocation.getDistrict();//城区信息amapLocation.getStreet();//街道信息amapLocation.getStreetNum();//街道门牌号信息amapLocation.getCityCode();//城市编码amapLocation.getAdCode();//地区编码amapLocation.getAoiName();//获取当前定位点的AOI信息amapLocation.getBuildingId();//获取当前室内定位的建筑物IdamapLocation.getFloor();//获取当前室内定位的楼层amapLocation.getGpsAccuracyStatus();//获取GPS的当前状态amapLocation.getLocationDetail();//定位信息描述amapLocation.getBearing();//获取方向角信息amapLocation.getSpeed();//获取速度信息  单位:米/秒amapLocation.getPoiName();//获取当前位置的POI名称//获取定位时间SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = new Date(amapLocation.getTime());sdf.format(date);Log.e(TAG, "获取当前定位结果来源:::" + amapLocation.getLocationType());Log.e(TAG, "获取纬度:::" + amapLocation.getLatitude());Log.e(TAG, "获取经度:::" + amapLocation.getLongitude());Log.e(TAG, "获取精度信息:::" + amapLocation.getAccuracy());Log.e(TAG, "获取地址:::" + amapLocation.getAddress());Log.e(TAG, "获取国家信息:::" + amapLocation.getCountry());Log.e(TAG, "获取省信息:::" + amapLocation.getProvince());Log.e(TAG, "获取城市信息:::" + amapLocation.getCity());Log.e(TAG, "获取城区信息:::" + amapLocation.getDistrict());Log.e(TAG, "获取街道信息:::" + amapLocation.getStreet());Log.e(TAG, "获取街道门牌号信息:::" + amapLocation.getStreetNum());Log.e(TAG, "获取城市编码:::" + amapLocation.getCityCode());Log.e(TAG, "获取地区编码:::" + amapLocation.getAdCode());Log.e(TAG, "获取当前定位点的AOI信息:::" + amapLocation.getAoiName());Log.e(TAG, "获取当前室内定位的建筑物Id:::" + amapLocation.getBuildingId());Log.e(TAG, "获取当前室内定位的楼层:::" + amapLocation.getFloor());Log.e(TAG, "获取GPS的当前状态:::" + amapLocation.getGpsAccuracyStatus());Log.e(TAG, "获取定位信息描述:::" + amapLocation.getLocationDetail());Log.e(TAG, "获取方向角信息:::" + amapLocation.getBearing());Log.e(TAG, "获取速度信息:::" + amapLocation.getSpeed() + "m/s");Log.e(TAG, "获取海拔高度信息:::" + amapLocation.getAltitude());Log.e(TAG, "获取当前位置的POI名称:::" + amapLocation.getPoiName());} else {//定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。Log.e("AmapError", "location Error, ErrCode:" + amapLocation.getErrorCode() + ", errInfo:" + amapLocation.getErrorInfo());}}}};
}

高德地图全面详细讲解使用相关推荐

  1. 高德地图很详细的用法 定位 搜索 添加小蓝点marker 移动地图实时定位

    最近项目中需要用到地图的功能,看了下需求后,不多想,直接锁定高德地图,为什么不选择百度地图呢,这里本人觉得高德地图的文档让我看起来更爽,哈哈哈,进入主题吧 前题的申请key这里我就不讲啦,很简单,直接 ...

  2. Android实现高德地图定位详细流程

     要实现高德地图定位呢,首先需要做好以下几步准备:  如果你嫌笔者写的不好或者懒得看,只需要代码的话,请选择: github:点击打开链接,此连接可能和文章内容有所出入,因为我可能会做后期的开发使用. ...

  3. 利用高德地图根据详细地址获取经纬度(工具类)

    废话不多说,直接上代码: package org.changneng.framework.frameworkweb.utils;import java.io.BufferedReader; impor ...

  4. 初识高德地图和百度地图

    高德地图 高德开放平台(http://lbs.amap.com/)做的还是蛮好的,至少源码下载后可以直接跑通. 要使用高德sdk,首先还是注册用户.申请key,这里只是提一下debug版本的sha1生 ...

  5. 高德地图api开发记录

    1.高德地图api使用讲解 https://blog.csdn.net/Augenstern_QXL/article/details/120488096 具体的使用可以参考高德官方提供的demo和参考 ...

  6. Android类似微信详细地址选择(高德地图)

    利用高德地图的API做了一个类似微信发送位置界面地址选择,界面就3个,一个选择地址(周边搜索),一个搜索界面(关键字搜索),最后将选择的地址信息返回主界面,效果图如下:     对于详细地址选择,在项 ...

  7. 高德地图我的队伍查岗_详细测试高德地图的家人地图后 我学会了画地为牢

    详细测试高德地图的家人地图后 我学会了画地为牢 2020-07-15 15:18:46 7点赞 33收藏 11评论 创作立场声明:感觉这个地图功能,能够帮到大家,尤其是家里老人和孩子,不迷路防走丢. ...

  8. 手机端获取用户详细地理位置(高德地图API)

    项目开发需要获取用户详细的地理位置信息,使用了高德地图API接口 1,注册高德地图开发者账号获取开发者Key 2,页面调用 1 <script type="text/javascrip ...

  9. 用高德地图实现点击地图添加标记点,获取该点的经纬度,详细地址,通过输入框进行地址搜索自动定位到输入框地址

    用高德地图实现点击地图添加标记点,获取该点的经纬度,详细地址,通过输入框进行地址搜索自动定位到输入框地址 <template><div class="wrap"& ...

最新文章

  1. NIPS 2018 迁移学习相关论文
  2. java process 重定向_java – 没有重定向StdOut的Processbuilder
  3. 为什么说“概率”带来一场现代革命?
  4. WINCE流驱动的自动加载
  5. JavaScript 中的事件设计
  6. c# 再次尝试 连接失败_修复破裂婚姻,如何重新建立情感连接
  7. 直播预告丨告别后知后觉的指标波动,神策智能预警分析直播来袭
  8. ARM 之四 各集成开发环境(IDE)说明(Keil、RVDS、ADS、DS-5、MDK)
  9. 解决eclipse中git插件中的cannot open git-upload-pack问题
  10. HttpServletRequest对象
  11. SxsTrace工具用法
  12. php可变方法,php 函数使用可变数量的参数方法
  13. putty怎么更改为中文_Putty怎么样设置显示中文 设置Putty显示中文
  14. Windows Server AppFabric分布式缓存详解
  15. HTML系列之多媒体视频标签 video
  16. C盘扩容(步骤记录)
  17. std::adjacent_find 用法
  18. 简单明了的普利姆算法
  19. 花季美少女和小米官网你选哪个?
  20. DStream转换操作

热门文章

  1. 中兴手机android版本升级包下载,刷机
  2. 服务器上传不了文件,云服务器上传不了文件
  3. SharePoint 轻量化应用之结果通知和入职通知三试通知
  4. 创意灯泡毕业答辩PPT模板
  5. 设计已死?Is Design Dead?
  6. java电商项目搭建-------商品详情页模块
  7. 华为交换机关闭网口_华为EPON-MA5626E-24交换机取消端口隔离改普通教程
  8. 雷电模拟器忘记锁屏密码了怎么办?
  9. 每个人背后都会有人在默默注视着你,所以很幸福
  10. 浅谈有赞搜索质量保障体系