1.访问高德官网
1.1 访问
1.2 注册登录进入控制台
1.3 添加应用
1.4 添加key(点击加号)
其中的SHA1请看第5个技巧
其中的PackageName请看第6个技巧
2. 环境配置
2.1 meta
进入Manifest.xml文件,配置meta-data
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="下图标红的key值"/>
2.2 权限
<!--允许程序打开网络套接字-->
<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" />
2.3 下载包
因为是国内的,所以就不用下jar包了,直接通过compile下载吧!
compile fileTree(dir: 'libs', include: ['*.jar'])
//3D地图so及jar
compile 'com.amap.api:3dmap:latest.integration'
//定位功能
compile 'com.amap.api:location:latest.integration'
//搜索功能
compile 'com.amap.api:search:latest.integration'
//2D地图
compile 'com.amap.api:map2d:latest.integration'
...
算了,我试了一下,别想了,直接下SDK吧
https://lbs.amap.com/api/android-sdk/download/
2.4 配置abi
splits {
abi {
enable true
reset()
//缺少什么CPU类型就添加对应的类型即可
include 'armeabi', 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a', 'mips', 'mips64'
universalApk true
}
}
3 前端
<?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.MapView
android:id="@+id/map"
android:layout_width="wrap_content"
android:layout_height="match_parent" />
<CheckBox
android:id="@+id/check_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
android:text="开启个性化地图"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:orientation="vertical">
<Button
android:id="@+id/basicmap"
android:layout_width="65dp"
android:layout_height="32dp"
android:gravity="center"
android:background="@color/colorWhite"
android:textColor="@color/colorBlack1"
android:textSize="12sp"
android:text="标准地图"/>
<Button
android:id="@+id/rsmap"
android:layout_width="65dp"
android:layout_height="32dp"
android:gravity="center"
android:background="@color/colorWhite"
android:textColor="@color/colorBlack1"
android:textSize="12sp"
android:text="卫星地图"/>
<Button
android:id="@+id/nightmap"
android:layout_width="65dp"
android:layout_height="32dp"
android:background="@color/colorWhite"
android:textColor="@color/colorBlack1"
android:gravity="center"
android:textSize="12sp"
android:text="夜间模式"/>
<Button
android:id="@+id/navimap"
android:layout_width="65dp"
android:layout_height="32dp"
android:background="@color/colorWhite"
android:textColor="@color/colorBlack1"
android:gravity="center"
android:textSize="12sp"
android:text="导航模式"/>
<Button
android:id="@+id/setLocation"
android:layout_width="65dp"
android:layout_height="32dp"
android:background="@color/colorWhite"
android:textColor="@color/colorBlack1"
android:gravity="center"
android:textSize="12sp"
android:text="定位"/>
</LinearLayout>
</RelativeLayout>
4 活动
package com.draw.depp.qkast;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.maps.AMap;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.CustomMapStyleOptions;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import custom_view.LSuperView;
public class GDMap extends AppCompatActivity implements View.OnClickListener {
private MapView mapView;
private AMap aMap;
private Button basicmap;
private Button rsmap;
private Button nightmap;
private Button navimap;
private CheckBox mStyleCheckbox;
private CustomMapStyleOptions mapStyleOptions = new CustomMapStyleOptions();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gdmap);
/*
* 设置离线地图存储目录,在下载离线地图或初始化地图设置;
* 使用过程中可自行设置, 若自行设置了离线地图存储的路径,
* 则需要在离线地图下载和使用地图页面都进行路径设置
* */
//Demo中为了其他界面可以使用下载的离线地图,使用默认位置存储,屏蔽了自定义设置
// MapsInitializer.sdcardDir =OffLineMapUtils.getSdCacheDir(this);
mapView = (MapView) findViewById(R.id.map);
mapView.onCreate(savedInstanceState);// 此方法必须重写
init();
}
/**
* 初始化AMap对象
*/
private void init() {
if (aMap == null) {
aMap = mapView.getMap();
}
setMapCustomStyleFile(this);
basicmap = (Button)findViewById(R.id.basicmap);
basicmap.setOnClickListener(this);
rsmap = (Button)findViewById(R.id.rsmap);
rsmap.setOnClickListener(this);
nightmap = (Button)findViewById(R.id.nightmap);
nightmap.setOnClickListener(this);
navimap = (Button)findViewById(R.id.navimap);
navimap.setOnClickListener(this);
mStyleCheckbox = (CheckBox) findViewById(R.id.check_style);
mStyleCheckbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(mapStyleOptions != null) {
// 设置自定义样式
mapStyleOptions.setEnable(b);
// mapStyleOptions.setStyleId("your id");
aMap.setCustomMapStyle(mapStyleOptions);
}
}
});
}
private void setMapCustomStyleFile(Context context) {
String styleName = "style_new.data";
InputStream inputStream = null;
try {
inputStream = context.getAssets().open(styleName);
byte[] b = new byte[inputStream.available()];
inputStream.read(b);
if(mapStyleOptions != null) {
// 设置自定义样式
mapStyleOptions.setStyleData(b);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 方法必须重写
*/
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
/**
* 方法必须重写
*/
@Override
protected void onPause() {
super.onPause();
mapView.onPause();
}
/**
* 方法必须重写
*/
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
/**
* 方法必须重写
*/
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.basicmap:
aMap.setMapType(AMap.MAP_TYPE_NORMAL);// 矢量地图模式
break;
case R.id.rsmap:
aMap.setMapType(AMap.MAP_TYPE_SATELLITE);// 卫星地图模式
break;
case R.id.nightmap:
aMap.setMapType(AMap.MAP_TYPE_NIGHT);//夜景地图模式
break;
case R.id.navimap:
aMap.setMapType(AMap.MAP_TYPE_NAVI);//导航地图模式
break;
}
mStyleCheckbox.setChecked(false);
}
}
(前后端来自于高德源码,仅做学习,别告我...)