Android---配置高德地圖

高德地圖配置

  • 第一步:需要用的jar包
  • 第二步:需要用的集類
  • 第三步:需要用到的權限
  • 第四步:嵌入代碼
  • 第五步:實現效果

第一步:需要用的jar包
這裏寫圖片描述

第二步:需要用的集類
這裏寫圖片描述

第三步:需要用到的權限
這裏寫圖片描述

<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>```

**第四步:嵌入代碼**
```public class MapActivity extends AppCompatActivity {

    private AMap aMap;
    private MapView mapView;
    private boolean isUpdate = false;
    private SingleOverlay mMyOverlay;//我的位置
    private SingleOverlay mPinOverlay;//大頭針
    private Marker mPinMarker;//大頭針對應的marker
    private Circle mCircle;//地圖上的圓
    private LatLng mStartPosition;

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

    /**
     * 初始化地圖
     */
    private void initMap(Bundle arg0) {
        mapView = (MapView) findViewById(R.id.mapView);
        mapView.onCreate(arg0);// 此方法必須重寫
        if (aMap == null) {
            aMap = mapView.getMap();
        }
//        aMap.getUiSettings().setZoomControlsEnabled(false);
        if (mMyOverlay == null)
            mMyOverlay = new SingleOverlay(this, aMap);
        mMyOverlay.setIcon(R.drawable.icon_map_current_location);

        if (mPinOverlay == null)
            mPinOverlay = new SingleOverlay(this, aMap);
        mPinOverlay.setIcon(R.drawable.icon_map_pin);
        //啓動定位
        Locate locate = new Locate(this);
        locate.start();
        locate.setOnLocationListener(new Locate.OnLocationListener() {
            @Override
            public void onReceiveLocation(AMapLocation location) {
                LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
                mStartPosition = latLng;
                addUserMarker(latLng);
                addPoiMrker(latLng);
                Toast.makeText(MapActivity.this, "000" + location, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onReceiveFail() {
                Toast.makeText(MapActivity.this, "0002222" , Toast.LENGTH_SHORT).show();
            }
        });
        //回到當前位置
        findViewById(R.id.current_local).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Marker marker = mMyOverlay.getMyMarker();
                if (marker != null) {
                    mPinOverlay.move(mMyOverlay.getMyMarker().getPosition());
                }
            }
        });
        //地圖移動事件
        aMap.setOnCameraChangeListener(new AMap.OnCameraChangeListener() {
            @Override
            public void onCameraChange(CameraPosition cameraPosition) {
                mCircle.setCenter(cameraPosition.target);
                mPinMarker.setPosition(cameraPosition.target);
                Locate locate = new Locate(MapActivity.this);
                //把經緯度轉換成地址信息
                locate.searchAddress(cameraPosition.target.latitude, cameraPosition.target.longitude);
                locate.setOnGeoSearchLintener(new Locate.OnGeoSearchLintener() {
                    @Override
                    public void onRegeocodeSearched(RegeocodeResult arg0, int arg1) {
                        if (arg0 != null) {
                            String address = arg0.getRegeocodeAddress().getFormatAddress();
                            Toast.makeText(MapActivity.this, "++" + address, Toast.LENGTH_SHORT).show();
                        }
                    }
                });
            }

            @Override
            public void onCameraChangeFinish(CameraPosition cameraPosition) {
            }
        });
        //地圖長按事件
        aMap.setOnMapLongClickListener(new AMap.OnMapLongClickListener() {
            @Override
            public void onMapLongClick(LatLng latLng) {
                mPinOverlay.move(latLng);//平移地圖,不縮放地圖
//                mPinOverlay.moveAndZoom(latLng);//平移地圖 ,縮放地圖
                Locate locate = new Locate(MapActivity.this);
                //把經緯度轉換成地址信息
                locate.searchAddress(latLng.latitude, latLng.longitude);
                locate.setOnGeoSearchLintener(new Locate.OnGeoSearchLintener() {
                    @Override
                    public void onRegeocodeSearched(RegeocodeResult arg0, int arg1) {
                        if (arg0 != null) {
                            String address = arg0.getRegeocodeAddress().getFormatAddress();
                            Toast.makeText(MapActivity.this, "--" + address, Toast.LENGTH_SHORT).show();
                        }
                    }
                });
            }
        });
    }

    /**
     * 地圖上顯示當前用戶的位置
     */
    private void addUserMarker(LatLng latLng) {
        PoiItem item = new PoiItem();
        item.setTitle("title");
        item.setSnippet("snippet");
        item.setLatLng(latLng);
        mMyOverlay.removeFromMap();
        mMyOverlay.setPoi(item);
        mMyOverlay.addToMap();//顯示我的位置
        mMyOverlay.zoomToSpan();
    }

    /**
     * 地圖上顯示大頭針的位置
     */
    private void addPoiMrker(LatLng latLng) {
        PoiItem item = new PoiItem();
        item.setTitle("title");//title 和 snippet必須添加否則氣泡不顯示
        item.setSnippet("snippet");
        item.setLatLng(latLng);
        mPinOverlay.setPoi(item);//顯示大頭針位置
        mPinOverlay.addToMap();
        mPinMarker = mPinOverlay.getMyMarker();
        mPinMarker.setAnchor(0.5f, 1.27f);
        mCircle = mPinOverlay.addCircle(item.getLatLng(), this);
    }
}

第五步:實現效果
這裏寫圖片描述

發佈了30 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章