Android之高德地图SDK配置及简单使用详解
需要用到的东西请去高德地图API官网下载
本次教程是对比着高德官网的demo一步步添加东西,所以需要有一份demo就够了。
1.打开高德地图的demo(AMap3DDemo),同时新建一个项目
2.将demo中的带Amap的三个jar包复制到新建项目的lib目录下,同时添加依赖项
3.在app下新建个directory—>jniLibs,然后在下面新建四个目录,如下:
4.然后拖到main方法中,在android下就可以看到
5.然后再demo下的so文件都放在四个目录下(四个目录放的东西一样)
6.将demo里面的权限复制到相应位置
7.将meta标签复制到相应位置同时去高德API官网申请个key填到相应位置
8.将下面服务那句也复制到相应位置
9.在布局中添加个MapView
10.将主函数中location文件夹下的LocationModeSourceActivity.java中有用的东西复制到主函数中
以上,就可以实现最简单的定位
附代码
- 清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.ygd.myamap"><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_CONFIGURATION" /><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><application
android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><meta-data
android:name="com.amap.api.v2.apikey"android:value="50b8319a5d03de4dbfa4ee6bd79756fc" /><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!-- 定位需要的服务 使用2.0的定位需要加上这个 --><service android:name="com.amap.api.location.APSService" ></service></application></manifest>
- 主函数:
public class MainActivity extends AppCompatActivity implements LocationSource,AMapLocationListener {private MapView mapView;private AMap aMap;private AMapLocationClient mlocationClient;private OnLocationChangedListener mListener;private AMapLocationClientOption mLocationOption;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mapView= (MapView) findViewById(R.id.map);mapView.onCreate(savedInstanceState);// 此方法必须重写init();}/*** 初始化*/private void init() {if (aMap == null) {aMap = mapView.getMap();setUpMap();}}/*** 设置一些amap的属性*/private void setUpMap() {aMap.setLocationSource(this);// 设置定位监听aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false// 设置定位的类型为定位模式 ,可以由定位、跟随或地图根据面向方向旋转3种//跟随:LOCATION_TYPE_MAP_FOLLOW//旋转:LOCATION_TYPE_MAP_ROTATE//定位:LOCATION_TYPE_LOCATEaMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);}/*** 定位成功后回调函数*/@Overridepublic void onLocationChanged(AMapLocation amapLocation) {if (mListener != null && amapLocation != null) {if (amapLocation != null&& amapLocation.getErrorCode() == 0) {Log.d("===经度:",""+amapLocation.getLongitude());Log.d("===纬度:",""+amapLocation.getLatitude());mListener.onLocationChanged(amapLocation);// 显示系统小蓝点} else {String errText = "定位失败," + amapLocation.getErrorCode()+ ": " + amapLocation.getErrorInfo();Log.e("AmapErr",errText);}}}/*** 激活定位*/@Overridepublic void activate(OnLocationChangedListener listener) {mListener = listener;if (mlocationClient == null) {mlocationClient = new AMapLocationClient(this);mLocationOption = new AMapLocationClientOption();//设置定位监听mlocationClient.setLocationListener(this);//设置为高精度定位模式mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);//设置定位参数mlocationClient.setLocationOption(mLocationOption);// 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,// 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求// 在定位结束后,在合适的生命周期调用onDestroy()方法// 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除mlocationClient.startLocation();}}/*** 停止定位*/@Overridepublic void deactivate() {mListener = null;if (mlocationClient != null) {mlocationClient.stopLocation();mlocationClient.onDestroy();}mlocationClient = null;}/*** 方法必须重写*/@Overrideprotected void onResume() {super.onResume();mapView.onResume();}/*** 方法必须重写*/@Overrideprotected void onPause() {super.onPause();mapView.onPause();deactivate();}/*** 方法必须重写*/@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);mapView.onSaveInstanceState(outState);}/*** 方法必须重写*/@Overrideprotected void onDestroy() {super.onDestroy();mapView.onDestroy();if(null != mlocationClient){mlocationClient.onDestroy();}}
}
- 布局文件中添加一个MapView即可
<com.amap.api.maps.MapViewandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent" ></com.amap.api.maps.MapView>
- 遇到的错误:(下面这句报错)
mapView.onCreate(savedInstanceState);
错误类型:java.lang.UnsatisfiedLinkError: Native method not found: com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lang/String;Ljava/lang/String;)J
解决方法:将主函数中继承的v7包的AppCompatActivity改为Activity即可。
Android之高德地图SDK配置及简单使用详解相关推荐
- Android 高德地图so包太大,高德地图sdk配置心得(jar文件与so文件导入)
最近在项目需要使用地图,学习了一下高德sdk的使用,在配置的过程中遇到了一些问题,记录下来. 遇到的问题 高德地图sdk配置的时候需要导入so文件,由于导入的时候一直没有导入成功,所以一直报No im ...
- Android调用高德地图直接导航的简单实例
在学校最近做了一个小APP,脑子笨怕忘,写个博客记录一下. 简单来说就是保存地点,然后单击直接打开高德地图APP并从当前所在地导航到保存的地点.因为是小型学习用的,所以保存地点采用了Android本地 ...
- android 高德地图移动卡顿_Xamarin.Forms Android使用高德地图SDK
Xamarin.Forms Android 高德演示https://www.zhihu.com/video/1243224001301958656 介绍 本编文章分为2节,第1节是介绍高德地图SDK与 ...
- android使用高德地图SDK获取定位信息
注册账号.创建应用.获取API KEY等这些就不说了,按照官网来就行,我们来讲讲项目的配置及示例代码. 高德地图获取定位信息配置要比百度地图简单多了,这是我比较喜欢的一点,而且之前用百度地图嵌入一个应 ...
- Android接入高德地图SDK,Android高德SDK 地图篇一:集成高德SDK
Android高德SDK 地图篇一:集成高德SDK 大家好,这是系列博文的第一篇: 系列博文会完成以下功能 一. 地图篇:利用高德SDK实现滴滴出行的效 二. 导航篇:利用高德SDK实现滴滴司机端的效 ...
- Android接入高德地图SDK 一引入高德sdk
SHA1的获取: 然后输入cd .android 回车 在输入:keytool -list -v -keystore debug.keystore 在回车,密钥默认 android 添加 jar 文件 ...
- Android 集成高德地图SDK
今天和大家分享一下如果在Android开发中引用高德地图的SDK以及实现定位,搜索,导航的功能 =-= 第一步:引入高德地图的SDK. 首先,进入高德地图开发平台,鼠标移至头像处,点击我的应用,然后新 ...
- Android 整合高德地图SDK实现 地图预览,定位,模拟导航
一.准备工作 1. 到高德地图官方网申请key: 我的应用 | 高德控制台 2. 申请key方法请参考:获取Key-创建工程-开发指南-Android 地图SDK | 高德地图API 3. 出现的问题 ...
- Android高德地图线优化,Android 接入高德地图SDK模块的优化点点滴滴
起因: 由于在最近接手了一个关于导航的App,发现地图页面跳来跳去实在是卡顿地不行(运行在车载设备上的APP,机器性能实在是有限). 初步判断: 应该是是关于地图等控件的反复创建和销毁,给内存GC带来 ...
最新文章
- 【Spring】新注解
- 利用gevent实现异步执行任务
- 基于SIP和RTP协议的开源VOIP之QuteCom简单介绍
- 关于java多态中覆盖的理解
- NVIDIA将全面支持笔记本混合显卡技术
- ps aux 命令分析
- 如何用计算机做出折线图,曲线图怎么做-怎样在电脑上做曲线图电脑上如何做曲线图 – 手机爱问...
- linux diff 补丁,Linux中diff、补丁的用法及介绍
- 如何配置和使用Tomcat访问日志
- redis之数据操作详解
- 蓝懿IOS实战音乐播放器
- linux df -hl 数据解释,linux磁盘空间查看命令(du,df)剩余空间查看详解
- 10进制颜色代码,十进制颜色查询对照表
- javaweb表格制作举例
- 阿里云国际版云计算应用在企业领域的优势有哪些
- 电巢:继腾讯与联通混改后,又有两家企业官宣,科技巨头与国企混改,意味着什么?
- 微信钱包里的钱居然不见了,微信支付绑卡的用户要注意这几点
- 学习笔记7--车辆控制平台
- 最短路 HDU - 2544 (最短路)
- nginx完全卸载删除