当前位置:   article > 正文

【Android开发--新手必看篇】高德地图api_高德地图gps定位开发

高德地图gps定位开发

Android笔记

​ ——高德地图
若对该知识点有更多想了解的,欢迎私信博主~~

高德地图:AMap
制作:
  1. 将jar包引入libs下,并加载(Add As Library)

  2. 在AndroidManifest.xml里添加权限

    	<!-- 用于进行网络定位 -->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <!-- 用于访问GPS定位 -->
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <!-- 用于获取运营商信息,用于支持提供运营商信息相关的接口 -->
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <!-- 用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
        <!-- 用于访问网络,网络定位需要上网 -->
        <uses-permission android:name="android.permission.INTERNET" />
        <!-- 用于读取手机当前的状态 -->
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <!-- 用于写入缓存数据到扩展存储卡 -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <!-- 用于申请调用A-GPS模块 -->
        <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
        <!-- 用于申请获取蓝牙信息进行室内定位 -->
        <uses-permission android:name="android.permission.BLUETOOTH" />
        <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  3. 生命周期及初始化地图

    package com.example.sirl.practice;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.Toast;
    
    import com.amap.api.maps2d.AMap;
    import com.amap.api.maps2d.CameraUpdateFactory;
    import com.amap.api.maps2d.MapView;
    import com.amap.api.maps2d.model.LatLng;
    
    public class MainActivity extends AppCompatActivity {
        MapView mapView;
        AMap aMap;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //绑定控件
            mapView=findViewById(R.id.map);
            //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
            mapView.onCreate(savedInstanceState);
            if (aMap==null){
                //创建空地图地图为地图控件获取的地图(aMap一张空地图)
                aMap=mapView.getMap();
                //为地图添加初始点(默认北京)
                LatLng latLng=new LatLng(30.484291,114.358571);
                aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng,14));
            }
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
            mapView.onDestroy();
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            //在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
            mapView.onResume();
        }
    
        @Override
        protected void onPause() {
            super.onPause();
            //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
            mapView.onPause();
        }
    
        @Override
        protected void onSaveInstanceState(Bundle outState) {
            super.onSaveInstanceState(outState);
            //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态
            mapView.onSaveInstanceState(outState);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
绘制标记点:markerOptions
属性说明
position在地图上标记位置的经纬度值
title点标记的标题
snippet点标记的内容
draggable点标记是否可拖拽
visible点标记是否可见
anchor点标记的锚点
alpha点的透明度
icon点图标
使用:
		//新建标记点
		MarkerOptions markerOptions=new MarkerOptions();
        //为标记点添加属性
		markerOptions.position(new LatLng(100,100));
        //向地图中添加标记点
		aMap.addMarker(markerOptions);
		//清空点标记
		aMap.clear();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
高级方法:
  1. Marker 点击事件

    //标记点单击事件
    aMap.setOnMarkerClickListener(new AMap.OnMarkerClickListener() {
        // 返回 true 则表示接口已响应事件,否则返回false 
        @Override
         public boolean onMarkerClick(Marker marker) {
              return false;
         }
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  2. Marker拖拽事件

    //标记点拖拽事件
    aMap.setOnMarkerDragListener(new AMap.OnMarkerDragListener() {
         // 当marker开始被拖动时回调此方法, 这个marker的位置可以通过getPosition()方法返回。
         // 这个位置可能与拖动的之前的marker位置不一样。
         // marker 被拖动的marker对象。
         @Override
         public void onMarkerDragStart(Marker marker) {
    
         }
         // 在marker拖动完成后回调此方法, 这个marker的位置可以通过getPosition()方法返回。
         // 这个位置可能与拖动的之前的marker位置不一样。
         // marker 被拖动的marker对象。
         @Override
         public void onMarkerDrag(Marker marker) {
    
         }
         // 在marker拖动过程中回调此方法, 这个marker的位置可以通过getPosition()方法返回。
         // 这个位置可能与拖动的之前的marker位置不一样。
         // marker 被拖动的marker对象。
         @Override
         public void onMarkerDragEnd(Marker marker) {
    
         }
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
两点测距:
float o=AMapUtils.calculateLineDistance(new LatLng(30.51619,114.318443),new LatLng(30.516215,114.318513));
  • 1
地图画线:PolylienOptions
//制作坐标数组
List<LatLng> list1=new ArrayList<>();
list1.add(new LatLng(30.51619,114.318443));
list1.add(new LatLng(30.516215,114.318513));
//新建线段
PolylineOptions polylineOptions=new PolylineOptions();
//为线段添加属性
polylineOptions.addAll(list1);
//将线段添加到地图中
aMap.addPolyline(polylineOptions);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
切换图层
//导航视图
aMap.setMapType(AMap.MAP_TYPE_NAVI);
//夜景地图
aMap.setMapType(AMap.MAP_TYPE_NIGHT);
//标准地图
aMap.setMapType(AMap.MAP_TYPE_NORMAL);
//卫星地图
aMap.setMapType(AMap.MAP_TYPE_SATELLITE);
//交通地图
aMap.setTrafficEnabled(true);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
注:
  1. 参考高德官方指导完成SDK的引用。 https://lbs.amap.com/api/android-sdk/guide/create-project/android-studio-create-project

  2. 高德Android SDK下载地址: https://lbs.amap.com/api/android-sdk/download/

Amap3D及更高版本
使用
  1. 下载官方SDK,引入libs下,并加载(Add As Library)

  2. 在main文件夹下创建jniLibs文件夹,将配置文件添加到jniLibs中

  3. 在app的build.gradle中

    android {
        defaultConfig {
            //添加ndk
            ndk { //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
                abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","arm64-v8a","x86_64"
            }
        }
        //添加sourceSets
        sourceSets {
            main {
                jniLibs.srcDirs = ['src/main/jniLibs']
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  4. 在AndroidManifest.xml添加权限

  5. 在AndroidManifest.xml的application中添加key

    <meta-data
     	android:name="com.amap.api.v2.apikey"
        android:value="defa40a1358288697aaf9b99a1fbbadf"/>//需要从高德地图官方获取key
    
    • 1
    • 2
    • 3
    key的获取方式:

    https://lbs.amap.com/api/android-sdk/guide/create-project/get-key

    1. 发布版安全码SHA1:项目做完发布到平台后,SHA1获取的key提供的服务将面向客户

      https://blog.csdn.net/xxdw1992/article/details/82527956

    2. 调试版安全码SHA1:项目测试阶段,SHA1获取的key提供的服务将面向开发者

      https://www.jianshu.com/p/dcfca6041154

离线地图

教程:https://lbs.amap.com/api/android-sdk/guide/create-map/offline-map

导入地图包:

  1. 将AMap文件夹放入SD卡目录下
  2. 将AMap文件夹放入SD卡目录下Android.data下
定位蓝点

教程https://lbs.amap.com/api/android-sdk/guide/create-map/mylocation

线路规划

教程https://lbs.amap.com/api/android-sdk/guide/route-plan/drive

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/844650?site
推荐阅读
相关标签
  

闽ICP备14008679号