今天我发的这个只是对于高德地图的入门开发,刚开始搞这个,发现出现了一系列的问题,首先要开发地图,需要用到第三方的知识,首先要申请一个自己在高德地图中的开发者账号,这是必须的,不然怎么可能让我们用,接下来我们要申请一个key,俗点就是自己的id。
![在这里获取key]()
然后我们创建新应用,
![然后这里就是写我们的程序要用到的key,是那个应用来用到,当然我只是个人的开发来说,自己的一个测试软件]()
其中有一个发布安全码,对于这个,我也不知道是干什么的,想知道可以具体去搜索,然后这里要有安全码,这是什么呢,用的androidstudio,搞了半天没有找到keystore在哪里,网上也看了很多,这里我总结一下:
要在环境变量中有一个ANDROID_SDK_HOME的变量名,然后把androidsdk的路径加进去,然后要在PATH中加入%ANDROID_SDK_HOME%\tools,显证下是否加入成功,在cmd的命令行中,输入android -h,出现一些关于android的东西,代表正确,当然准备工作好了,我们要有keystore的文件,这个我的方法是在我的电脑中直接搜索debug.keystore文件,就会有的,因为电脑放的地方不一定在sdk下,我的在c盘,我的sdk在d盘。
然后获取到key,要用地图,还要下载一些地图的sdk,就是一些动态库,
![在这里直接下载一键下载那个]()
然后解压,有三个压缩文件,我们用3d的,所以不用2d的那个压缩文件,将3d的解压,有两个jar包,放在android的app/libs下,切换到project下,通过add as library来加到应用中,然后再app/src/main/下建一个jniLibs的文件,将armeabi文件与arm64-v8a复制到文件下。
然后准备工作结束,可以开始编程了,我们的key还没用,用在这个位置。
![这里是一些权限,与key的使用。]()
最后我写一个问题,就是程序结束后在运行时,用genymotion的android5.1中会出现错误,install_failed_no_matching_abis,这个你换一个虚拟机就行了,不要纠结这个问题,在实体机上运行也行。
代码: `package com.example.dflenovo.map;
import android.app.Activity;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.ToggleButton;import com.amap.api.maps.AMap;
import com.amap.api.maps.MapView;public class MainActivity extends Activity {
private MapView mapView;
private AMap aMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.map);
mapView.onCreate(savedInstanceState);
init();
ToggleButton tb = (ToggleButton) findViewById(R.id.tb);
tb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
aMap.setMapType(AMap.MAP_TYPE_SATELLITE);
}
else
{
aMap.setMapType(AMap.MAP_TYPE_NORMAL);
}
}
});
}
private void init() {
if(aMap == null){
aMap = mapView.getMap();
}
}
@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();
}
}