1. 程式人生 > >第三方整合高德地圖

第三方整合高德地圖

1.下載SDK
2.獲取key值
在這裡插入圖片描述

Android studio配置
將以下包匯入libs
在這裡插入圖片描述

在build.gradle 加入

sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
}

//新增網路許可權


<!--允許程式開啟網路套接字-->
<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="ef4b1b20260aca501ecb344d1884808c">    //這裡填自己建立應用的key值
</meta-data>

佈局檔案

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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"
   >
    <!--使用高德地圖提供的Map View-->
    <com.amap.api.maps.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    <ToggleButton
        android:id="@+id/tb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top|right"
        android:textOn="衛星地圖"
        android:textOff="普通地圖"
        android:checked="false"/>

</FrameLayout>



import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.CompoundButton;
import android.widget.ToggleButton;

import com.amap.api.maps.AMap;
import com.amap.api.maps.MapView;

public class MainActivity extends AppCompatActivity {

    private MapView mapView;
    private AMap aMap;
    MyLocationStyle myLocationStyle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mapView = (MapView) findViewById(R.id.map);
        mapView.onCreate(savedInstanceState);

        ToggleButton tb = (ToggleButton) findViewById(R.id.tb);
        tb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){
                if(isChecked){
                    aMap.setMapType(AMap.MAP_TYPE_SATELLITE);
                } else
                {
                    aMap.setMapType(AMap.MAP_TYPE_NORMAL);
                }
            }
        });


     //定位
      myLocationStyle = new MyLocationStyle();//初始化定位藍點樣式類myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);//連續定位、且將視角移動到地圖中心點,定位點依照裝置方向旋轉,並且會跟隨裝置移動。(1秒1次定位)如果不設定myLocationType,預設也會執行此種模式。
        myLocationStyle.interval(2000); //設定連續定位模式下的定位間隔,只在連續定位模式下生效,單次定位模式下不會生效。單位為毫秒。
        aMap.setMyLocationStyle(myLocationStyle);//設定定位藍點的Style
//aMap.getUiSettings().setMyLocationButtonEnabled(true);設定預設定位按鈕是否顯示,非必需設定。
        aMap.setMyLocationEnabled(true);// 設定為true表示啟動顯示定位藍點,false表示隱藏定位藍點並不進行定位,預設是false。
        myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_FOLLOW) ;//連續定位、且將視角移動到地圖中心點,定位藍點跟隨裝置移動。(1秒1次定位)

    }


    //初始化AMap物件
    private void init(){
        if(aMap ==null){
            aMap = mapView.getMap();
        }
    }
    @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();
    }
}