1. 程式人生 > >高德地圖小實現

高德地圖小實現

MainActivity 

package com.example.gaodeditu;

importandroid.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import 
com.amap.api.location.AMapLocationListener; import com.amap.api.maps2d.AMap; import com.amap.api.maps2d.MapView; public class MainActivity extends AppCompatActivity { public AMapLocationClient mapLocationClient = null; private AMapLocationClientOption aMapLocationClientOption; private
MapView mMapView; private AMap aMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //獲取到地圖控制元件 mMapView = (MapView) findViewById(R.id.map); //建立地圖 mMapView.onCreate(savedInstanceState); //顯示地圖
if(aMap == null){ //得到地圖 aMap = mMapView.getMap(); } //初始化定位 mapLocationClient = new AMapLocationClient(this); //初始化一個定位選項物件 aMapLocationClientOption = new AMapLocationClientOption(); //設定定位模式 aMapLocationClientOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Battery_Saving); //設立單詞定位 aMapLocationClientOption.setOnceLocation(true); //連續定位法 1000 歌100mills 定位一次 aMapLocationClientOption.setInterval(1000); //設定是否返回定位地址資訊 aMapLocationClientOption.setNeedAddress(true); mapLocationClient.setLocationListener(new AMapLocationListener() { @Override public void onLocationChanged(AMapLocation aMapLocation) { if (aMapLocation != null) { //等於0 定位成功 有資訊 if (aMapLocation.getErrorCode() == 0) { //解析定位結果 //得到國家 String country = aMapLocation.getCountry(); //得到省 String province = aMapLocation.getProvince(); //城市 String city = aMapLocation.getCity(); System.out.println("國家 : "+country+" 省/市 : "+province+" 市 : "+city); } } } }); } /** * 開啟定位方法 */ public void location() { //設定相關的定位資訊 mapLocationClient.setLocationOption(aMapLocationClientOption); //開啟定位 mapLocationClient.startLocation(); } public void btnStartLoCation(View view){ location(); } //生命週期 @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); } }

activity

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.gaodeditu.MainActivity">

    <Button
android:onClick="btnStartLoCation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="開始定位"/>


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

    </com.amap.api.maps2d.MapView>
</LinearLayout>

//配置檔案

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bwie.gaodemapdemo">




    <!--用於進行網路定位-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <!--用於訪問GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <!--獲取運營商資訊,用於支援提供運營商資訊相關的介面-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <!--用於訪問wifi網路資訊,wifi資訊會用於進行網路定位-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    <!--這個許可權用於獲取wifi的獲取許可權,wifi資訊會用來進行網路定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    <!--用於訪問網路,網路定位需要上網-->
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <!--用於讀取手機當前的狀態-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
    <!--寫入擴充套件儲存,向擴充套件卡寫入資料,用於寫入快取定位資料-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <!--用於申請呼叫A-GPS模組-->
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
    <!--用於申請獲取藍芽資訊進行室內定位-->
    <uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>


    //地圖SDK(包含其搜尋功能)需要的基礎許可權


    <!--允許程式訪問CellID或WiFi熱點來獲取粗略的位置-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">



        <meta-data android:name="com.amap.api.v2.apikey" android:value="88f64ea8f31020b436a615ea193527ec">
        </meta-data>

        <!-- 定位需要的服務 -->
        <service android:name="com.amap.api.location.APSService" >
        </service>

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

//要匯入兩個重要的包 ,是要自己去高德地圖介面api接口裡面去註冊個key值然後根據要求一步一步往下去做

github地址 

https://github.com/hongliang312/MyShareDemo/tree/master/gaodemap