您的位置:首页 > 移动开发 > Android开发

一个使用高德地图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命令时,应该是这样的:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐