一个使用高德地图SDK进行逆地理编码的例子
2017-04-24 20:16
453 查看
在>官方文档<中其实已经写得很清楚了,不过我想如果是第一次碰这类东西还是容易出错的吧?而且也有一些易错点文档说得不是很清楚,那我再来简单归纳一下。
1.注册高德开发者的SDK
由于高德在阿里巴巴旗下,所以你用淘宝账号就能非常简单地获取这个身份,没啥好说的。
2.获取这个SDK的key
如果不知道为什么要这个key,可以这么理解吧,这个key是让你的app能够访问高德的地图数据库的密码。
进入高德的控制台,点击"创建应用"(这里你可以随便取名字,无所谓),然后在相应的应用下创建你的key库。
key的名称你可以随便写,只要以后看到这玩意能让你想到这是哪个app的key就好了。
服务平台咱们选安卓,其他平台同理。
下面有三个选项:
安全版的SHA1:对应你sign APK时用的keystore,至于什么是sign APK,你可以先不管
调试版安全码SHA1:对应debug.store库,也就是你在android studio连接手机直接真机debug时用的秘钥库
PackageName:包名
以上三项的获取看这里:
http://lbs.amap.com/faq/top/hot-questions/249
需要注意的是,输入keytool命令时,应该是这样的:
这里获取的是调试版安全码的SHA1。如果你只想先小小地测试一下这个SDK,那你不妨直接把这个SHA1填到安全版的SHA1那里,反正咱就这么一测试,等准备正式发布了,在认真搞一个秘钥库和高德SDK key。
3.创建你的应用,并设定权限等
这些直接看:http://lbs.amap.com/api/android-location-sdk/gettingstarted的3~5步。
如果你是第一次做这些添加权限啥的,不知道这些标签到底怎么放,参考见下方:
4.测试代码:你需要在布局文件里添加一个TextView id=tv
5.测试
如果测试码出现了12,那说明你手机没给权限。你可以到手机的权限设置里,手动把权限给上。
由于安卓6.0出现了动态权限的设置,简单来说就是app里设置的这些权限,你还得动态获取一遍,具体看这里:
http://lbs.amap.com/api/android-location-sdk/guide/utilities/permission
错误码对照表:
http://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode
1.注册高德开发者的SDK
由于高德在阿里巴巴旗下,所以你用淘宝账号就能非常简单地获取这个身份,没啥好说的。
2.获取这个SDK的key
如果不知道为什么要这个key,可以这么理解吧,这个key是让你的app能够访问高德的地图数据库的密码。
进入高德的控制台,点击"创建应用"(这里你可以随便取名字,无所谓),然后在相应的应用下创建你的key库。
key的名称你可以随便写,只要以后看到这玩意能让你想到这是哪个app的key就好了。
服务平台咱们选安卓,其他平台同理。
下面有三个选项:
安全版的SHA1:对应你sign APK时用的keystore,至于什么是sign APK,你可以先不管
调试版安全码SHA1:对应debug.store库,也就是你在android studio连接手机直接真机debug时用的秘钥库
PackageName:包名
以上三项的获取看这里:
http://lbs.amap.com/faq/top/hot-questions/249
需要注意的是,输入keytool命令时,应该是这样的:
D:\java\jdk1.8.xx_\bin\keytool -v -list -keystore C:\Users\系统用户名\.android\debug.keystore
这里获取的是调试版安全码的SHA1。如果你只想先小小地测试一下这个SDK,那你不妨直接把这个SHA1填到安全版的SHA1那里,反正咱就这么一测试,等准备正式发布了,在认真搞一个秘钥库和高德SDK key。
3.创建你的应用,并设定权限等
这些直接看:http://lbs.amap.com/api/android-location-sdk/gettingstarted的3~5步。
如果你是第一次做这些添加权限啥的,不知道这些标签到底怎么放,参考见下方:
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <!--需要添加这行--> <meta-data android:name="com.amap.api.v2.apikey" android:value="你的SDK-key"/> <!--需要添加这行--> <service android:name="com.amap.api.location.APSService"></service> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <!--需要添加下面这些权限--> <!--用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <!--用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <!--获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <!--用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <!--用于访问网络,网络定位需要上网--> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <!--用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <!--用于申请调用A-GPS模块--> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission> <!--用于申请获取蓝牙信息进行室内定位--> <uses-permission android:name="android.permission.BLUETOOTH"></uses-permission> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission> </manifest>
4.测试代码:你需要在布局文件里添加一个TextView id=tv
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; import com.amap.api.location.*; public class MainActivity extends AppCompatActivity { private TextView tv; public AMapLocationClient mLocationClient = null; //声明定位回调监听器 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv=(TextView) findViewById(R.id.tv); mLocationClient = new AMapLocationClient(getApplicationContext());//实例化客户端 //设置定位回调监听 mLocationClient.setLocationListener(mAMapLocationListener); //启动定位 mLocationClient.startLocation(); } //监听器 AMapLocationListener mAMapLocationListener = new AMapLocationListener() { @Override public void onLocationChanged(AMapLocation amapLocation) { if (amapLocation != null) { if (amapLocation.getErrorCode() == 0) { //解析定位结果 tv.setText(amapLocation.getCity());//获取当前你所在城市的信息 } else System.out.println("错误码"+amapLocation.getErrorCode()); } } }; }
5.测试
如果测试码出现了12,那说明你手机没给权限。你可以到手机的权限设置里,手动把权限给上。
由于安卓6.0出现了动态权限的设置,简单来说就是app里设置的这些权限,你还得动态获取一遍,具体看这里:
http://lbs.amap.com/api/android-location-sdk/guide/utilities/permission
错误码对照表:
http://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode
相关文章推荐
- 通过编码方式使用性能计数器来进行性能计数的一个简单例子 - ZT
- 【Windows核心编程】一个使用内存映射文件进行进程间通信的例子
- 发一个使用 GridView 对数据小类进行分别汇总的例子
- 发一个使用 GridView 对数据小类进行分别汇总的例子
- 使用jmeter进行接口压力测试的一个简单例子
- 在批处理中使用ping命令,一个小例子进行分析
- Qt使用一个事件队列对所有发出的事件进行维护(QObject的event()函数相当于dispatch函数),用EventLabel 继承QLabel作为例子(简单明了) good
- 【Windows核心编程】一个使用内存映射文件进行进程间通信的例子
- 一个使用 ANSI.SYS Escape Sequences 进行时间显示的例子
- lucene使用IKAnalyzer3.2.5中文分词器进行索引的一个小例子
- 一个使用 ANSI.SYS Escape Sequences 进行时间显示的例子
- 一个使用GridView显示数据,并且可以进行添加、修改、删除操作的例子
- 使用jdbc连接ORACLE数据库进行查询的一个例子
- Matlab定点化仿真的一个例子:使用CIC滤波器进行数字上变频的仿真
- 使用jmeter进行接口测试的一个简单例子。
- 一个WCF使用TCP协议进行通协的例子
- lucene使用IKAnalyzer3.2.8中文分词器进行索引的一个小例子
- 一个使用socket进行文件传输的例子
- 多个客户端使用Socket通过一个服务器进行交互的小例子
- 使用 Suricata 进行入侵监控(一个简单小例子访问百度)