android 高德地图-1.创建基本地图
2019-10-31 本文已影响0人
KenChen_939
带领大家使用高德地图创建一个最基础的地图
1:注册高德地图开发者
进入高德开放平台官网,注册一个开发者帐号。
https://lbs.amap.com
进入控制台创建一个应用,创建应用时遇到的关于SHA1码等的问题请看我的另一篇文章:https://www.jianshu.com/p/cd08bf4a920d
创建好应用之后会返回给你一个Key,这个Key在开发之中会用到.
image.png
2:下载相关的jar包
到官网下载即可:https://lbs.amap.com/api/android-sdk/download/
在下载好的jar包里还有这样几个文件
要在你的android项目的main下创建一个jniLibs文件夹,把这些文件粘贴到里面去。
然后在配置文件里添加如下:
sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
}
}
配置文件如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
sourceSets { //引入so文件
main {
jniLibs.srcDirs = ['src/main/jniLibs']
}
}
defaultConfig {
applicationId "com.example.gaodemap"
minSdkVersion 15
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation files('libs/AMap3DMap_6.8.0.jar')
}
具体应用
在使用地图的时候我们首先需要在清单文件中声明许多权限和添加我们的Key
这是我的清单文件,可以参考
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.gaoderoad">
//这些都是权限
<!-- 允许程序设置内置sd卡的写权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 允许程序获取网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 允许程序访问WiFi网络信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 允许程序读写手机状态和身份 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="LOCAT" /> <!-- 允许程序访问CellID或WiFi热点来获取粗略的位置 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 用于访问网络,网络定位需要上网 -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- 用于申请调用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" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
//这个地方就是我们要添加的Key
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="06f3d8a59e968e4b3ce3807d029a1c2a" /> //将这一行换成自己的key即可
</application>
</manifest>
3: 接下来配置xml文件,添加地图控件
<com.amap.api.maps2d.MapView
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
4: 实现地图
public class MainActivity extends AppCompatActivity {
MapView mMapView = null;
private AMap aMap;
private UiSettings uiSettings;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMapView = (MapView) findViewById(R.id.mapView); //获取地图控件引用
mMapView.onCreate(savedInstanceState); //到这里已完成地图的创建
aMap = mMapView.getMap(); //获取AMap对象
uiSettings = aMap.getUiSettings();
uiSettings.setLogoBottomMargin(100);
uiSettings.setAllGesturesEnabled(true); //支持所有的手势
}
}
AMap 类是地图的控制器类,用来操作地图。它承载的工作包括:地图视图切换(如卫星图、黑夜地图)、改变地图状态(地图旋转角度、俯仰角、中心点坐标和缩放级别)、添加点标记(Marker),各类事件监听(点击、手势等)等,AMap 是地图 SDK 最重要的核心类,诸多操作都依赖它完成。