大型情感類電視連續劇--Android高德之旅(1)基礎地圖

總要說幾句

兩年前只有少數o2o軟件、導航、交通軟件會集成LBS,而現在是個軟件都要集成LBS,所以作爲開發的我們終於不能忍了,最近稍微有一點時間,來搞搞LBS吧,目前用的最多的是百度地圖和高德地圖,我隨手擲了個骰子,就選高德地圖吧。

從今天開始,我們來一場說走就走的旅行,一場高德地圖的自駕遊。摸索基於高德SDK的LBS開發,筒子們,老司機要開車了,上車吧。

開車

1、AndroidStudio新建工程

這步就不說了,這個都不會的,請出門左轉。
不過我看到高德官網文檔上有這麼一段:
這裏寫圖片描述
哈哈,連新建工程都說的這麼詳細,真的要贊一下高德寫文檔的人,真是夠耐心的。

2、導入jar、so包

去官網下載最新的開發包,或者下載官方demo,把它們的包拷貝出來。
http://lbs.amap.com/api/android-sdk/download/

開發包分兩種,jar包和so庫,jar包直接全部拷貝到app/libs中,如下圖:
這裏寫圖片描述

so庫直接拷貝進去是不行的,官方提供了兩種方法:
方法一
使用默認配置,不需要修改build.gradle。在 main 目錄下創建文件夾 jniLibs,將下載文件的 armeabi 文件夾複製到這個目錄下即可,如下圖:
這裏寫圖片描述

方法二
使用自定義配置,將下載文件的 armeabi 文件夾複製到 libs 目錄,然後打開build.gradle,找到 asourceSets 標籤,在裏面增加一項配置,如下圖:
這裏寫圖片描述

3、編寫代碼

佈局文件中添加MapView

<com.amap.api.maps.MapView
        android:id="@+id/map_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

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();
    }
}

配置混淆

#3D 地圖
-keep   class com.amap.api.maps.**{*;}
-keep   class com.autonavi.amap.mapcore.*{*;}
-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.**{*;}

manifest文件的配置

<!--允許程序打開網絡套接字-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允許程序設置內置sd卡的寫權限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允許程序獲取網絡狀態-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允許程序訪問WiFi網絡信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允許程序讀寫手機狀態和身份-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--允許程序訪問CellID或WiFi熱點來獲取粗略的位置-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<meta-data android:name="com.amap.api.v2.apikey"
       android:value="62d228e5c266e3ebf2c27aa6262c1a31">
</meta-data>

value後面這串就是你在高德開發者平臺註冊的appKey,簡單講下這個註冊。

1、註冊高德開發者賬號

2、申請成爲開發者

3、進入後臺新建應用
這裏寫圖片描述

4、配置應用信息
這裏寫圖片描述

key名稱隨便寫,符合右側的命名規範就行
平臺選Android
發佈版安全碼SHA1的生成方法,請看我上一篇博客http://blog.csdn.net/u011002668/article/details/53335264
調試版安全碼SHA1就和發佈版寫一樣的也行
package就是app的包名,從manifest中copy

完成

至此,最簡單的界面已經完成,運行後可以看到手機展示一個地圖,有縮放等操作。
這裏寫圖片描述

小效果

最後我們來添加一個小效果,結束今天的高德之旅

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), //經緯度
                        18, //縮放級別 3 -19 3:最大,看到全中國,19:最小,看到細節
                        60, //傾斜
                        90) //旋轉軸
                ),
                1500,
                new AMap.CancelableCallback() {
                    @Override
                    public void onFinish() {
                        //TODO
                    }

                    @Override
                    public void onCancel() {
                        //TODO
                    }
                }
        );
}

給aMap地圖添加一個點擊事件,當點擊地圖時,展示一個縮放動畫,然後地圖旋轉90度,同時軸傾斜60度。
gif圖有點大,如果加載不出來就自己想象一下吧
這裏寫圖片描述

總結

好了,今天的高德之旅就到這了,雖然還沒什麼功能,但也總算是看到東西了。感謝大家收看本期節目,我們明天再見~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章