本文主要内容讲述从申请天地图开发授权到AndroidStudio3.0加载天地图官网快速入门Demo的整个过程。对于刚出入AndroidStudio和天地图开发的小白有一定的帮助。

1.申请天地图密钥Key

天地图官网(http://lbs.tianditu.gov.cn/)注册,申请个人开发者,登录控制台,创建Android应用程序。

199574676_1_20200818124739271

1.1获取发布版SHA1

首先你要知道自己的AndroidStudio安装路径下的keytool.exe工具在哪,比如我的路径E:\Android\Android Studio\jre\bin\keytool.exe

之后Win+R  →cmd→打开控制台,进入到E:\Android\Android Studio\jre\bin路径下

199574676_2_20200818124739521.png

输入以下代码

keytool.exe -list -v -keystore [路径]

注意上述代码中间的空格,最后的路径是你的debug.keystore所在路径,windows系统,路径一般在

C:\Users\Administrator\.android\debug.keystore

完整代码:keytool.exe -list -v -keystore C:\Users\Administrator\.android\debug.keystore

回车

输入密钥:android

199574676_3_20200818124739693

把SHA1中的内容写进1.1中。

1.2获取开发版SHA1

首先你要有一个安卓软件签名文件,AndroidStudio如何生成签名文件自行百度(给个链接),将生成的*****.jks文件路径记录下来。

还在刚才的控制台窗口,写以下代码:

keytool.exe -list -v -keystore [.jks路径]

比如我的路径这样写:

keytool.exe -list -v -keystore C:\Users\Administrator\AndroidStudioProjects\bdhapk.jks

输入密钥:你设置签名文件时的密码

回车

199574676_4_20200818124739880

将此处的SHA1写在1.2处

1.3获取包名

这里指的是你用AndroidStudio创建的项目的包,可再项目配置文件AndroidManifest.xml中看到package="包名",复制过去写进1.3即可,比如package="com.example.administrator.tiandituaddmap1">,此处的包名为com.example.administrator.tiandituaddmap1

2.添加天地图API包

下载API

199574676_5_2020081812474068

解压以后,AndroidStudio切换Project目录,把.jar文件复制到项目的app\libs文件下,在app\src\main文件夹下新建jniLibs文件夹,必须是这个名字,要注意。将剩余的四个文件夹复制到jniLibs文件夹下,菜单栏-build-rebuild project。等待

如果你用的AndroidStudio编译版本在23以下,此时按照官网快速入门Demo即可实现天地图加载。

如果你的编译版本在23以上,需要再做一下处理。

3.动态获取权限

编译版本在23以上后,不仅要在AndroidManifest.xml文件中写入需要权限外,还需要再java代码中获取权限(敏感权限,在此不做区别,将权限在java中重新获取一遍),直接放代码,可对照自行修改。package com.example.administrator.tiandituaddmap1;

import android.Manifest;

import android.content.pm.PackageManager;

import android.support.v4.app.ActivityCompat;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import com.tianditu.android.maps.GeoPoint;

import com.tianditu.android.maps.MapController;

import com.tianditu.android.maps.MapView;

public class MainActivity extends AppCompatActivity {

private MapView mapView;

//在API23+以上,不仅要在AndroidManifest.xml里面添加权限 还要在JAVA代码中请求权限:

// Storage Permissions

private static final int REQUEST_EXTERNAL_STORAGE = 1;

private static String[] PERMISSIONS_STORAGE = {

Manifest.permission.ACCESS_NETWORK_STATE,

Manifest.permission.ACCESS_WIFI_STATE,

Manifest.permission.INTERNET,

Manifest.permission.CALL_PHONE,

Manifest.permission.ACCESS_COARSE_LOCATION,

Manifest.permission.READ_PHONE_STATE,

Manifest.permission.WRITE_EXTERNAL_STORAGE

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//在加载布局之前获取所需权限

addpermission();

setContentView(R.layout.activity_main);

init();

}

public void addpermission(){

int permission = ActivityCompat.checkSelfPermission(this,

Manifest.permission.WRITE_EXTERNAL_STORAGE);

if (permission != PackageManager.PERMISSION_GRANTED) {

ActivityCompat.requestPermissions(this, PERMISSIONS_STORAGE,

REQUEST_EXTERNAL_STORAGE);

}

}

public void init(){

new Thread(){

@Override

public void run() {

mapView=(MapView)findViewById(R.id.main_mapview);

//启用内置的地图缩放按钮

mapView.setBuiltInZoomControls(true);

//得到mapview的控制权,可以用它控制和驱动平移和缩放

MapController mapController=mapView.getController();

//用给定的经纬度构造一个GeoPoint,单位是微度(度*1E6)

GeoPoint point=new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));

//设置地图中心点

mapController.setCenter(point);

//设置地图等级

mapController.setZoom(12);;

}

}.start();

}

}

需要注意的一点是,权限的获取要放在加载布局文件之前。

至此,问题已被解决。可以运行程序,加载天地图。

结果如下图

199574676_6_20200818124740349

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐