天天看點

Android地圖開發:高德地圖SDK內建使用記錄

首先是添加依賴或者導入jar包:

以jar包使用,3d地圖為例:

Android_Map3D_SDK_V6.6.0_20181221.jar    3.14MB

因為是3d地圖,是以還要導入相關的jni庫:(和jar同目錄下armeabi檔案夾裡)

libAMapSDK_MAP_v6_6_0.so    2.80MB

--------------------------------------------------------------------------------

然後在清單檔案裡面的代碼:

首先權限:

<!--地圖包、搜尋包需要的基礎權限-->
    <!--允許程式打開網絡套接字-->
    <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" />
           

然後是高德地圖開發者建立應用時的key的配置:注意your key替換成你的key

 <application>
        <!-- 高德地圖key配置 -->
        <meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="your key"/>
 </application>
           

--------------------------------------------------------------------------------

然後開始搞地圖布局檔案,直接把這個MapView當做view來使用:

<com.amap.api.maps.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1">
   </com.amap.api.maps.MapView>
           

--------------------------------------------------------------------------------

然後是activity主要代碼:   

MapView mMapView;
    AMap aMap;
    MyLocationStyle myLocationStyle;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO 自動生成的方法存根
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gaode3dmap_layout);
    mMapView = findViewById(R.id.map);
        
        //在activity執行onCreate時執行mMapView.onCreate(savedInstanceState),建立地圖
        mMapView.onCreate(savedInstanceState);
        
      //初始化地圖控制器對象
        if (aMap == null) {
            aMap = mMapView.getMap();        
        }  
        initLocation();    
    }
    private void initLocation() {
        // TODO 自動生成的方法存根
        if(myLocationStyle == null){
            //初始化定位藍點樣式類 myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);//連續定位、且将視角移動到地圖中心點,定位點依照裝置方向旋轉,并且會跟随裝置移動。(1秒1次定位)如果不設定myLocationType,預設也會執行此種模式。
            myLocationStyle = new MyLocationStyle();
            myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_MAP_ROTATE_NO_CENTER);//連續定位、藍點不會移動到地圖中心點,地圖依照裝置方向旋轉,并且藍點會跟随裝置移動。
        }
            
        myLocationStyle.interval(2000); //設定連續定位模式下的定位間隔,隻在連續定位模式下生效,單次定位模式下不會生效。機關為毫秒。
        aMap.setMyLocationStyle(myLocationStyle);//設定定位藍點的Style
        aMap.setTrafficEnabled(true);// 顯示實時交通狀況
        aMap.getUiSettings().setMyLocationButtonEnabled(true);//設定預設定位按鈕是否顯示,非必需設定。
        aMap.setMyLocationEnabled(true);// 設定為true表示啟動顯示定位藍點,false表示隐藏定位藍點并不進行定位,預設是false。
    }
    
     @Override
      protected void onDestroy() {
        super.onDestroy();
        //在activity執行onDestroy時執行mMapView.onDestroy(),銷毀地圖
        mMapView.onDestroy();
      }
     
     @Override
     protected void onResume() {
        super.onResume();
        //在activity執行onResume時執行mMapView.onResume (),重新繪制加載地圖
        mMapView.onResume();
      }
     
     @Override
     protected void onPause() {
        super.onPause();
        //在activity執行onPause時執行mMapView.onPause (),暫停地圖的繪制
        mMapView.onPause();
     }
     
     @Override
     protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        //在activity執行onSaveInstanceState時執行mMapView.onSaveInstanceState (outState),儲存地圖目前的狀态
        mMapView.onSaveInstanceState(outState);
     }
             
     @HSFClick(R.id.btn_map1)
     public void map1click(View v){
         //地圖模式可選類型:MAP_TYPE_NORMAL,MAP_TYPE_SATELLITE,MAP_TYPE_NIGHT
         aMap.setMapType(AMap.MAP_TYPE_NORMAL);// 标準地圖模式
     }
     
     @HSFClick(R.id.btn_map2)
     public void map2click(View v){
         //地圖模式可選類型:MAP_TYPE_NORMAL,MAP_TYPE_SATELLITE,MAP_TYPE_NIGHT
         aMap.setMapType(AMap.MAP_TYPE_SATELLITE);// 衛星地圖模式
     }
     
     @HSFClick(R.id.btn_map3)
     public void map3click(View v){
         //地圖模式可選類型:MAP_TYPE_NORMAL,MAP_TYPE_SATELLITE,MAP_TYPE_NIGHT
         aMap.setMapType(AMap.MAP_TYPE_NIGHT);// 夜間地圖模式
     }
           

--------------------------------------------------------------------------------

具體配置和其他參考高德地圖開發平台