百度地圖基本使用

來源:互聯網
上載者:User

標籤:

package com.qg.lizhanqi.baidumapdemo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.Toast;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.LogoPosition;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MyLocationConfiguration;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.model.LatLng;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private MapView mMapView;    private MapView bmapView;    private Button btn_location;    private Button btn_traffic;    private Button btn_moon;    private Button btn_normal;    private Button btn_radar;    private Button btn_navigation;    private BaiduMap mBaiduMap;    private Button btn_gap;    private Button btn_Heat;    boolean isFirstIn = true;    private LocationClient mLocationClient;    private LatLng latLng;//經緯度資料    private BitmapDescriptor mIconLocation;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //在使用SDK各組件之前初始化context資訊,傳入ApplicationContext        //注意該方法要再setContentView方法之前實現        SDKInitializer.initialize(getApplicationContext());        setContentView(R.layout.activity_main);        initView();        //更改百度logo的位置        mMapView.setLogoPosition(LogoPosition.logoPostionRightBottom);        MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);        mBaiduMap.setMapStatus(msu);        //定位到當前        location();    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.btn_location://定位                MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);//更新我的狀態位置資料                mBaiduMap.animateMapStatus(msu);//動畫效果的回到當前位置,避免了效果過硬的看起來不太友好                break;            case R.id.btn_radar://雷達                break;            case R.id.btn_navigation://導航                break;            case R.id.btn_traffic:                //開啟即時交通圖                mBaiduMap.setTrafficEnabled(true);                Toast.makeText(MainActivity.this, "開啟了即時交通圖", Toast.LENGTH_SHORT).show();                break;            case R.id.btn_moon:                //衛星地圖                mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);                Toast.makeText(MainActivity.this, "開啟了衛星地圖", Toast.LENGTH_SHORT).show();                break;            case R.id.btn_normal:                //普通地圖                mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);                Toast.makeText(MainActivity.this, "開啟了普通地圖", Toast.LENGTH_SHORT).show();                break;            case R.id.btn_gap:                //空白地圖, 基礎地圖瓦片將不會被渲染。在地圖類型中設定為NONE,將不會使用流量下                // 載基礎地圖瓦片圖層。使用情境:與瓦片圖層一起使用,節省流量,提升自訂瓦片圖下載速度。                mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NONE);//空白地圖指的是只顯示道路而不顯示其他任何標誌與建築物                Toast.makeText(MainActivity.this, "開啟了空白地圖", Toast.LENGTH_SHORT).show();                break;            case R.id.btn_Heat:                if (mBaiduMap.isBaiduHeatMapEnabled()) {//如果開啟就關閉,如果關閉就開啟                    btn_Heat.setText("開啟熱力圖");                    mBaiduMap.setBaiduHeatMapEnabled(false);//關閉熱力圖                    Toast.makeText(MainActivity.this, "關閉熱力圖", Toast.LENGTH_SHORT).show();                } else {                    //開啟熱力圖                    mBaiduMap.setBaiduHeatMapEnabled(true);                    btn_Heat.setText("關閉熱力圖");                    Toast.makeText(MainActivity.this, "開啟熱力圖", Toast.LENGTH_SHORT).show();                }                break;        }    }    private void location() {        mLocationClient = new LocationClient(this);//建立定位端        MyLocationListener myLocationListener = new MyLocationListener();//建立實現BDLocationListener的類        //定位端的監聽器        mLocationClient.registerLocationListener(myLocationListener);        //通過LocationClientOption對象給mLocationClient定位設定重要設定        LocationClientOption mLocationClientOption = new LocationClientOption();        mLocationClientOption.setCoorType("bd09ll");//座標類型        mLocationClientOption.setIsNeedAddress(true);//返回當前的位置        mLocationClientOption.setOpenGps(true);//開啟GPS        mLocationClientOption.setScanSpan(1000);//每隔多少秒定位一次        mLocationClient.setLocOption(mLocationClientOption);    }    //定位成功的回調    private class MyLocationListener implements BDLocationListener {        @Override        public void onReceiveLocation(BDLocation bdLocation) {            MyLocationData locData = new MyLocationData.Builder()                    .accuracy(bdLocation.getRadius())//精度                    .direction((float) bdLocation.getLatitude())//方向                    .longitude(bdLocation.getLongitude())                    .build();//建立當前位置資料            mBaiduMap.setMyLocationData(locData);//設定當前位置            // 初始化表徵圖            BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.locationicon);            // 設定定位元影像層的配置(定位元模式,是否允許方向資訊,使用者自訂定位元影像標)            //MyLocationConfiguration.LocationMode.COMPASS//羅盤模式,FOLLOWING跟隨模式            MyLocationConfiguration config = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, mCurrentMarker);            mBaiduMap.setMyLocationConfigeration(config);            //獲得經緯度座標            latLng = new LatLng(bdLocation.getLatitude(), bdLocation.getLongitude());            if (isFirstIn) {//使用者第一次進來後定位到當前,因為會即時定位不需要每次定位都設定到當前位置,否則的話使用者拖拽到其他位置還會被拉回來,所以又一次就行了                MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);//更新我的狀態位置資料                mBaiduMap.animateMapStatus(msu);//動畫效果的回到當前位置,避免了效果過硬的看起來不太友好                Toast.makeText(MainActivity.this, "你當前在:" + bdLocation.getAddrStr(), Toast.LENGTH_SHORT).show();                isFirstIn = false;            }        }    }    @Override    protected void onStart() {        super.onStart();        // 開啟定位元影像層        mBaiduMap.setMyLocationEnabled(true);        if (!mLocationClient.isStarted()) {            mLocationClient.start();        }    }    @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();        if (mLocationClient.isStarted()) {            // 當不需要定位元影像層時關閉定位元影像層            mBaiduMap.setMyLocationEnabled(false);        }    }    private void initView() {        //擷取地圖控制項引用        mMapView = (MapView) findViewById(R.id.bmapView);        mBaiduMap = mMapView.getMap();        btn_location = (Button) findViewById(R.id.btn_location);        btn_traffic = (Button) findViewById(R.id.btn_traffic);        btn_moon = (Button) findViewById(R.id.btn_moon);        btn_normal = (Button) findViewById(R.id.btn_normal);        btn_radar = (Button) findViewById(R.id.btn_radar);        btn_navigation = (Button) findViewById(R.id.btn_navigation);        btn_location.setOnClickListener(this);        btn_traffic.setOnClickListener(this);        btn_moon.setOnClickListener(this);        btn_normal.setOnClickListener(this);        btn_radar.setOnClickListener(this);        btn_navigation.setOnClickListener(this);        btn_gap = (Button) findViewById(R.id.btn_gap);        btn_gap.setOnClickListener(this);        btn_Heat = (Button) findViewById(R.id.btn_Heat);        btn_Heat.setOnClickListener(this);    }}

 

百度地圖基本使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.