Android高德之旅(1)基礎地圖

廢話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é)目,我們下期再見~

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,283評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,680評論 19 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,283評論 6 342
  • 時間過的真快,魔力感恩即將進入尾聲,我由開始的興奮,到慢慢的冷靜,身邊的磁場感受到了柔和,再到現(xiàn)在又覺得以前的習慣...
    霖霄霦閱讀 775評論 0 1

友情鏈接更多精彩內(nèi)容