本文介绍高德地图入门第一步,从申请高德开发者到显示地图。
首先,注册申请开发者。高德地图开发者平台的邮件系统好像不太稳定,邮件验证经常有问题,网上也有比较多的人反应这个问题。解决方法:高德的FAQ常见问题中有如下问题“注册时收不到邮箱验证码怎么办?”,按照提供的几个方法操作便可以申请好开发账号。
第二步,下载、搭建环境,按照开发者指南中的配置工程操作即可。在这个步骤中需要使用到高德地图的KEY,在高德地图开放平台的Console中有申请KEY的页面。申请KEY的时候需要使用Android应用发布版和调试版本的安全码SHA1。安全码的获取需要用到java中的keytool。
调试版本的SHA1获取很方便,在cmd中切换到用户目录下的.android目录中,运行命令:
keytool -list -v -keystore debug.keystore
即可获得调试版本的SHA1码。
发布版的SHA1需要用自己的keystore。如果有现有的keystore,利用如下命令获取SHA1码即可:
keytool -list -v -keystore 现有的keystore
如果没有现有的keystore,就需要自己生成keystore,利用如下命令:
keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore
其中-alias android.keystore为生成keystore的别名;-keyalg RSA是加密和数字签名的算法;-validity 20000是有效天数。此命令还有其他选项可选,具体参考keytool的用法。
在生成自己的keystore之后利用调试版的SHA1获取方式获取自己的keystore的SHA1码即可。
然后就可以在Console中申请到自己的KEY了。最后将key插入到工程中的Manifest中即可。
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" android:hardwareAccelerated="false" > <meta-data android:name="com.amap.api.v2.apikey" android:value="你的KEY" /> <activity android:name=".MainActivity">
最后,参考地图显示加入相应代码,在使用高德地图Android SDK的时候需要注意文档中的一句话:
使用 MapView 类,必须重载 Activity 生命周期的所有方法,有 onCreate(),onDestroy(),onResume(),onPause(),onSaveInstanceState()。
如果不继承这些生命周期,地图显示不出来。
最后给出相应代码仅供参考:
首先是activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="com.ibike.ibike.MainActivity"> <com.amap.api.maps.MapView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
MainActivity.java:
public class MainActivity extends AppCompatActivity { private MapView mapView; private AMap aMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mapView = (MapView) findViewById(R.id.map); mapView.onCreate(savedInstanceState); init(); } private void init(){ if(aMap == null){ aMap = mapView.getMap(); } } /** * 方法必须重写 */ @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); mapView.onResume(); } /** * 方法必须重写 */ @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); mapView.onPause(); } /** * 方法必须重写 */ @Override protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } /** * 方法必须重写 */ @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); mapView.onDestroy(); } }
原文:http://www.cnblogs.com/lafido/p/5134488.html