(一)高德地图之基本属性以及显示模式
我们在开发中常常会用到地图功能,那么我们最常用的就是百度地图和高德地图了,今天我们就来看一下高德地图怎么用,我个人认为高德地图封装的还是比较好的,使用起来方便快捷。
首先我们需要到高德开发者平台注册账号,根据API进行操作即可,高德开放平台链接我放在下面:
https://lbs.amap.com/api/android-sdk/summary/
下面主要介绍我个人开发使习惯用的步骤,仅供参考
一、首先是开发前的准备工作,配置工程
1、在高德开放平台下载SDK;
2、添加jar文件:将下载的SDK的jar包复制到工程的libs目录下;
3、添加so库:在main目录下创建文件夹jniLibs(如果有就不需要创建了),将下载的so库复制到这个目录即可;
4、在Project的build.gradle文件中配置repositories,添加maven或jcenter仓库地址
Android Studio默认会在Project的build.gradle为所有module自动添加jcenter的仓库地址,如果已存在,则不需要重复添加。
配置如下:
allprojects {repositories {jcenter() // 或者 mavenCentral()}}
5、为了保证高德 Android SDK 的功能正常使用,您需要申请高德 Key 并且配置到项目中。
项目的 “AndroidManifest.xml” 文件中,添加如下代码:
<applicationandroid:icon="@drawable/icon"android:label="@string/app_name" ><meta-dataandroid:name="com.amap.api.v2.apikey"android:value="请输入您的用户Key"/>……
</application>
6、配置权限
在AndroidManifest.xml中配置权限:
//地图包、搜索包需要的基础权限
<!--允许程序打开网络套接字-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允许程序设置内置sd卡的写权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许程序获取网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允许程序访问WiFi网络信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允许程序读写手机状态和身份-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
二、工程配置完成,接下来我们进入开发阶段
1、建立.xml布局文件activity_showmap
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><com.amap.api.maps.MapViewandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent"/><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="20dp"android:orientation="vertical"><Buttonandroid:id="@+id/btn_NORMAL"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="标准地图"/><Buttonandroid:id="@+id/btn_SATELLITE"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="卫星地图"/><Buttonandroid:id="@+id/btn_NIGHT"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="夜景地图"/><Buttonandroid:id="@+id/btn_NAVI"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="导航地图"/><Buttonandroid:id="@+id/btn_BUS"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="车路线地图"/><CheckBoxandroid:id="@+id/cb_traffic"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="显示实时交通状况"/><CheckBoxandroid:id="@+id/cb_building"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="显示3D 楼块"/><CheckBoxandroid:id="@+id/cb_maptext"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="显示底图文字"/></LinearLayout></RelativeLayout>
2、创建显示地图的类文件ShowMapactivity
package com.junto.gdmaptest.activity;import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;import com.amap.api.maps.AMap;
import com.amap.api.maps.AMapOptions;
import com.amap.api.maps.MapView;
import com.amap.api.maps.UiSettings;
import com.junto.gdmaptest.R;/*** Created by WangJinyong on 2018/10/19.*/public class ShowMapActivity extends Activity implements View.OnClickListener {MapView mapView = null;AMap aMap;private UiSettings mUiSettings;Button btn_NORMAL, btn_SATELLITE, btn_NIGHT, btn_NAVI, btn_BUS;CheckBox cb_traffic,cb_building,cb_maptext;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_showmap);//获取地图控件引用mapView = findViewById(R.id.map);//在activity执行onCreat时执行mapView.onCreate(savedInstanceState),创建地图,必需要写的mapView.onCreate(savedInstanceState);initView();}private void initView() {//初始化AMap对象if (aMap == null) {aMap = mapView.getMap();mUiSettings = aMap.getUiSettings();}mUiSettings.setLogoBottomMargin(20);//设置LOGO图标距离页面底部的距离mUiSettings.setZoomControlsEnabled(true);//设置地图默认缩放控件是否显示mUiSettings.setZoomPosition(AMapOptions.ZOOM_POSITION_RIGHT_BUTTOM);//设置缩放控件位置mUiSettings.setScaleControlsEnabled(true);//设置地图默认的比例尺是否显示mUiSettings.setCompassEnabled(true);//设置地图默认的指南针是否显示mUiSettings.setTiltGesturesEnabled(true);// 设置地图是否可以倾斜mUiSettings.setMyLocationButtonEnabled(true);//设置地图默认的定位按钮是否显示aMap.setMyLocationEnabled(true);//是否可触发定位并显示定位层// mUiSettings.setLogoPosition(AMapOptions.LOGO_POSITION_BOTTOM_LEFT);// 设置地图logo显示在左下方
// mUiSettings.setLogoPosition(AMapOptions.LOGO_POSITION_BOTTOM_CENTER);// 设置地图logo显示在底部居中
// mUiSettings.setLogoPosition(AMapOptions.LOGO_POSITION_BOTTOM_RIGHT);// 设置地图logo显示在右下方btn_NORMAL = findViewById(R.id.btn_NORMAL);btn_NORMAL.setOnClickListener(this);btn_SATELLITE = findViewById(R.id.btn_SATELLITE);btn_SATELLITE.setOnClickListener(this);btn_NIGHT = findViewById(R.id.btn_NIGHT);btn_NIGHT.setOnClickListener(this);btn_NAVI = findViewById(R.id.btn_NAVI);btn_NAVI.setOnClickListener(this);btn_BUS = findViewById(R.id.btn_BUS);btn_BUS.setOnClickListener(this);cb_traffic = findViewById(R.id.cb_traffic);cb_traffic.setOnClickListener(this);cb_building = findViewById(R.id.cb_building);cb_building.setOnClickListener(this);cb_maptext = findViewById(R.id.cb_maptext);cb_maptext.setOnClickListener(this);}@Overrideprotected void onResume() {super.onResume();//在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图mapView.onResume();}@Overrideprotected void onPause() {super.onPause();//在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制mapView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();//在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图mapView.onDestroy();}@Overridepublic void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);//在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态mapView.onSaveInstanceState(outState);}@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.btn_NORMAL://标准地图aMap.setMapType(AMap.MAP_TYPE_NORMAL);break;case R.id.btn_SATELLITE://卫星地图aMap.setMapType(AMap.MAP_TYPE_SATELLITE);break;case R.id.btn_NIGHT://夜景地图aMap.setMapType(AMap.MAP_TYPE_NIGHT);break;case R.id.btn_NAVI://导航地图aMap.setMapType(AMap.MAP_TYPE_NAVI);break;case R.id.btn_BUS://车路线地图aMap.setMapType(AMap.MAP_TYPE_BUS);break;case R.id.cb_traffic://显示实时交通状况aMap.setTrafficEnabled(((CheckBox) view).isChecked());break;case R.id.cb_building://显示3D楼块aMap.showBuildings(((CheckBox) view).isChecked());break;case R.id.cb_maptext://显示底图文字aMap.showMapText(((CheckBox) view).isChecked());break;}}
}
在项目中使用地图的时候需要注意,需要合理的管理地图生命周期,这非常的重要。
这样一个基本地图就完成了。
下一节将介绍高德地图的手势交互功能。
(一)高德地图之基本属性以及显示模式相关推荐
- vue 高德地图 不同区域显示不同颜色_高德百度哪家强?苹果Carplay第三方分屏功能评测...
几天前,苹果公司正式更新了iOS13.4版本.一个小版本系统更新,却让车主群热闹了起来.在这个版本中,苹果正式开放了Carplay分屏显示模式下对第三方地图的支持. 车主们的热情,化为高德地图和百度地 ...
- iOS 高德地图(二)(进阶具体使用的细节)
2019独角兽企业重金招聘Python工程师标准>>> 前面我们配置好了SDK的环境,也在高德的官网中申请了AppKey:de5b39fb2b066ed80c51383bb3a1fe ...
- 项目 - Web地图开发【高德地图API】(一)
导航兔: Web地图开发 [高德地图API] 导航地址 Web地图开发[高德地图API](一) https://qianmoer.blog.csdn.net/article/details/12842 ...
- 高德地图Amap开发实践
一.简介: 高德开放平台是国内技术领先的LBS(Location Based Services,基于位置的服务)服务提供商,拥有先进的数据融合技术和海量的数据处理能力.高德开放平台向广大开发者提供覆盖 ...
- 【学习记录】使用高德地图API开发一个简单基础的WebGIS系统(GIS考研院校专题地图网站)
文章目录 0. 前言 1. 功能设计 2. 数据处理 3. 项目结构 4. 功能实现 4.1. 初始化 4.2. 地图基础功能模块 4.2.1. 放大缩小功能, 图层管理功能 4.2.2. 地图测量功 ...
- 使用高德地图展示点位和信息窗体展示数据及播放视频
使用高德地图做了一个在地图展示点位,并通过点击,显示直播的功能,这个任务是为了之后大屏做准备. 这是一个能展示多个点标记,并在点击的时候弹出信息窗体,并在信息窗体中播放视频,且展示相关信息以及操作事件 ...
- vue项目中高德地图的注册及使用
1.创建应用 点击进入高德地图个人开发的注册:https://lbs.amap.com/dev/id/personal 然后可以登录支付宝进行认证. 注册完毕之后,点击右上角的控制台 点击右上角的创建 ...
- Vue中如何使用高德地图
效果图: 这是高德地图API文档地址:地图的创建-生命周期-示例中心-JS API 示例 | 高德地图API 1.安装 vue-amap安装 1 npm i --save vue-amap@0.5.1 ...
- js如何同时打开多个信息窗口 高德地图_高德地图-展示多个信息窗口
1.问题背景 高德地图,设置小图标,并点击图标显示信息 2.实现源码 高德地图展示多个信息窗口 //初始化地图对象,加载地图 var map = new AMap.Map("containe ...
最新文章
- SpringBoot 发送邮件功能实现
- 如何让滚动条出现在左边
- 通过批处理文件自动安装apk到手机
- linux——NFS+AUTOFS服务的基本配置
- Qt界面开发(各种控件以及图表)
- iis下php 500错误
- 图书管理系统html_你的毕业设计是 XX 管理系统吗?
- Pandas period_range
- eclipse 导入maven项目_一文轻松学会:从GitHub下载项目到eclispe
- java 键盘钩子程序
- Honeywell全系列打印机驱动interdriver 2019.M-3
- PIL (Python Imaging Library) 教程
- python判断火车票座位是否靠窗_Python查询火车票(一)
- 一文了解AAAI国际会议–附: 各年论文连接
- STM32 调整重启电压阈值 BOR
- WordPress快速增加百度收录的方法
- 排队论,对策论,层次分析法
- 路由器芯片和服务器,软路由就是软路由,还是回归它本该有的身份吧。一个越折腾越迷茫者的经历...
- WSL是什么? Windows Subsystem for Linux (WSL)
- Python合并PDF