廢話1
這個系列之前在CSDN上就發(fā)了,不過剛開始就因為公司項目忙擱置了,現(xiàn)在轉移陣地到簡書,希望這次能堅持把這個系列做完。
廢話2
兩三年前只有少數(shù)o2o軟件、導航、交通軟件會集成LBS,而現(xiàn)在是個軟件都要集成LBS,所以作為開發(fā)的我們終于不能忍了,來搞搞LBS吧,目前用的最多的是百度地圖和高德地圖,百度地圖定位精準、路線規(guī)劃科學、圖層顯示清晰,嗯,那就選高德地圖吧。
從今天開始,我們來一場說走就走的旅行,。探索基于高德SDK的LBS開發(fā),筒子們,老司機要開車了,上車吧。
1、AndroidStudio新建工程
這步就不說了,這個都不會的,請出門左轉,不過我看到高德官網(wǎng)文檔上有這么一段:

哈哈,連新建工程都說的這么詳細,真的要贊一下高德寫文檔的人,真是夠耐心的。
2、導入jar、so包
去官網(wǎng)下載最新的開發(fā)包,或者下載官方demo,把它們的包拷貝出來。
(http://lbs.amap.com/api/android-sdk/download/)
可以選擇一鍵下載或者開發(fā)包定制下載,我這里選擇的是定制下載,因為一鍵下載里面是沒有定位包的。

開發(fā)包分兩部分,jar包和so庫,jar包直接全部拷貝到app/libs中,如下圖:

(PS:因為我之前下載SDK選擇的定制包下載,把所有的jar包合并成一個jar包了,所以這里只有一個)
so庫直接拷貝進去是不行的,官方提供了兩種方法:
方法一
使用默認配置,不需要修改build.gradle。在 main 目錄下創(chuàng)建文件夾 jniLibs,將下載文件的 armeabi 文件夾復制到這個目錄下即可,如下圖:

方法二
使用自定義配置,將下載文件的 armeabi 文件夾復制到 libs 目錄,然后打開build.gradle,找到 asourceSets 標簽,在里面增加一項配置,如下圖:

3、基礎地圖
準備工作已經(jīng)做好了,下面就開始coding,寫一個最簡單的demo,展示最基本的地圖
(1)布局文件中添加MapView
<com.amap.api.maps.MapView
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
(2)Activity中使用MapView
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_view);
mapView.onCreate(savedInstanceState); //此方法必須重寫
init();
}
private void init() {
if (aMap == null) {
aMap = mapView.getMap();
}
// TODO
}
/**
* 方法必須重寫
*/
@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();
}
}
(3)配置混淆
#3D 地圖 V5.0.0之前:
-keep class com.amap.api.maps.**{*;}
-keep class com.autonavi.amap.mapcore.*{*;}
-keep class com.amap.api.trace.**{*;}
#3D 地圖 V5.0.0之后:
-keep class com.amap.api.maps.**{*;}
-keep class com.autonavi.**{*;}
-keep class com.amap.api.trace.**{*;}
#定位
-keep class com.amap.api.location.**{*;}
-keep class com.amap.api.fence.**{*;}
-keep class com.autonavi.aps.amapapi.model.**{*;}
#搜索
-keep class com.amap.api.services.**{*;}
#2D地圖
-keep class com.amap.api.maps2d.**{*;}
-keep class com.amap.api.mapcore2d.**{*;}
#導航
-keep class com.amap.api.navi.**{*;}
-keep class com.autonavi.**{*;}
(4)權限配置
<!--允許程序打開網(wǎng)絡套接字-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允許程序設置內(nèi)置sd卡的寫權限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允許程序獲取網(wǎng)絡狀態(tài)-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允許程序訪問WiFi網(wǎng)絡信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允許程序讀寫手機狀態(tài)和身份-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--允許程序訪問CellID或WiFi熱點來獲取粗略的位置-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
(5)apikey配置
<meta-data android:name="com.amap.api.v2.apikey"
android:value="62d228e5c2****************a6262c1a31">
</meta-data>
value后面這串就是你在高德開發(fā)者平臺注冊的appKey,簡單講下這個注冊。
(6)賬號注冊
a)、注冊高德開發(fā)者賬號
b)、申請成為開發(fā)者
c)、進入后臺新建應用:名稱需要符合命名規(guī)范,類型只能選已有類型

d)、配置應用信息

安全碼SHA1的生成方法,請看我CSDN博客
http://blog.csdn.net/u011002668/article/details/53335264
(7)展示
至此,最簡單的界面已經(jīng)完成,運行后可以看到手機展示一個地圖,有縮放、旋轉等操作。

(8)小效果
最后我們來添加一個小效果:點擊屏幕,地圖旋轉90度,同時視角傾斜60度
private void init() {
if (aMap == null) {
aMap = mapView.getMap();
}
aMap.setOnMapClickListener(this);
}
@Override
public void onMapClick(LatLng latLng) {
aMap.animateCamera(
CameraUpdateFactory.newCameraPosition(new CameraPosition(
new LatLng(39.92463, 116.389139), //經(jīng)緯度
16, //縮放級別 3 -19 3:最大,看到全中國,19:最小,看到細節(jié)
60, //視角從垂直于地面,向下傾斜60度,此時與地面夾角是30度
90) //地圖順時針旋轉90度
),
1500,
new AMap.CancelableCallback() {
@Override
public void onFinish() {
//TODO
}
@Override
public void onCancel() {
//TODO
}
}
);
}

總結
千里之行,始于足下,第一步終于邁出去了,下一篇來摸索下高德地圖中的地圖類型,感謝大家收看本期節(jié)目,我們下期再見~