需要用到的东西请去高德地图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配置及简单使用详解相关推荐

  1. Android 高德地图so包太大,高德地图sdk配置心得(jar文件与so文件导入)

    最近在项目需要使用地图,学习了一下高德sdk的使用,在配置的过程中遇到了一些问题,记录下来. 遇到的问题 高德地图sdk配置的时候需要导入so文件,由于导入的时候一直没有导入成功,所以一直报No im ...

  2. Android调用高德地图直接导航的简单实例

    在学校最近做了一个小APP,脑子笨怕忘,写个博客记录一下. 简单来说就是保存地点,然后单击直接打开高德地图APP并从当前所在地导航到保存的地点.因为是小型学习用的,所以保存地点采用了Android本地 ...

  3. android 高德地图移动卡顿_Xamarin.Forms Android使用高德地图SDK

    Xamarin.Forms Android 高德演示https://www.zhihu.com/video/1243224001301958656 介绍 本编文章分为2节,第1节是介绍高德地图SDK与 ...

  4. android使用高德地图SDK获取定位信息

    注册账号.创建应用.获取API KEY等这些就不说了,按照官网来就行,我们来讲讲项目的配置及示例代码. 高德地图获取定位信息配置要比百度地图简单多了,这是我比较喜欢的一点,而且之前用百度地图嵌入一个应 ...

  5. Android接入高德地图SDK,Android高德SDK 地图篇一:集成高德SDK

    Android高德SDK 地图篇一:集成高德SDK 大家好,这是系列博文的第一篇: 系列博文会完成以下功能 一. 地图篇:利用高德SDK实现滴滴出行的效 二. 导航篇:利用高德SDK实现滴滴司机端的效 ...

  6. Android接入高德地图SDK 一引入高德sdk

    SHA1的获取: 然后输入cd .android 回车 在输入:keytool -list -v -keystore debug.keystore 在回车,密钥默认 android 添加 jar 文件 ...

  7. Android 集成高德地图SDK

    今天和大家分享一下如果在Android开发中引用高德地图的SDK以及实现定位,搜索,导航的功能 =-= 第一步:引入高德地图的SDK. 首先,进入高德地图开发平台,鼠标移至头像处,点击我的应用,然后新 ...

  8. Android 整合高德地图SDK实现 地图预览,定位,模拟导航

    一.准备工作 1. 到高德地图官方网申请key: 我的应用 | 高德控制台 2. 申请key方法请参考:获取Key-创建工程-开发指南-Android 地图SDK | 高德地图API 3. 出现的问题 ...

  9. Android高德地图线优化,Android 接入高德地图SDK模块的优化点点滴滴

    起因: 由于在最近接手了一个关于导航的App,发现地图页面跳来跳去实在是卡顿地不行(运行在车载设备上的APP,机器性能实在是有限). 初步判断: 应该是是关于地图等控件的反复创建和销毁,给内存GC带来 ...

最新文章

  1. 【Spring】新注解
  2. 利用gevent实现异步执行任务
  3. 基于SIP和RTP协议的开源VOIP之QuteCom简单介绍
  4. 关于java多态中覆盖的理解
  5. NVIDIA将全面支持笔记本混合显卡技术
  6. ps aux 命令分析
  7. 如何用计算机做出折线图,曲线图怎么做-怎样在电脑上做曲线图电脑上如何做曲线图 – 手机爱问...
  8. linux diff 补丁,Linux中diff、补丁的用法及介绍
  9. 如何配置和使用Tomcat访问日志
  10. redis之数据操作详解
  11. 蓝懿IOS实战音乐播放器
  12. linux df -hl 数据解释,linux磁盘空间查看命令(du,df)剩余空间查看详解
  13. 10进制颜色代码,十进制颜色查询对照表
  14. javaweb表格制作举例
  15. 阿里云国际版云计算应用在企业领域的优势有哪些
  16. 电巢:继腾讯与联通混改后,又有两家企业官宣,科技巨头与国企混改,意味着什么?
  17. 微信钱包里的钱居然不见了,微信支付绑卡的用户要注意这几点
  18. 学习笔记7--车辆控制平台
  19. 最短路 HDU - 2544 (最短路)
  20. nginx完全卸载删除

热门文章

  1. SrpingCloud微服务 服务调用逻辑图
  2. 352记--扬哥本纪
  3. python做动态表情包下载_用 Python 开发一个【GIF表情包制作神器】
  4. HDFS ACLs访问控制权限
  5. Java - JavaFx之fxml文件的编写及基本使用方式
  6. ffmpeg画中画效果
  7. java网课|Iterator接口
  8. 公众号和视频号互相绑定带来的功能
  9. 小程序前端view内容重叠问题
  10. python报错:index 1 is out of bounds for axis 0 with size 1