【Android开发--新手必看篇】高德地图api

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" />
    
  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);
        }
    }
    
绘制标记点: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. Marker 点击事件

    //标记点单击事件
    aMap.setOnMarkerClickListener(new AMap.OnMarkerClickListener() {
        // 返回 true 则表示接口已响应事件,否则返回false 
        @Override
         public boolean onMarkerClick(Marker marker) {
              return false;
         }
    });
    
  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) {
    
         }
    });
    
两点测距:
float o=AMapUtils.calculateLineDistance(new LatLng(30.51619,114.318443),new LatLng(30.516215,114.318513));
地图画线: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);
切换图层
//导航视图
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. 参考高德官方指导完成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']
            }
        }
    }
    
  4. 在AndroidManifest.xml添加权限

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

    <meta-data
     	android:name="com.amap.api.v2.apikey"
        android:value="defa40a1358288697aaf9b99a1fbbadf"/>//需要从高德地图官方获取key
    
    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

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值