百度地图 定位加覆盖物(笔记,方便查阅)

来源:互联网 发布:shinydays知乎 编辑:程序博客网 时间:2024/05/16 14:35
package com.mymapmarker;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;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.BitmapDescriptorFactory;import com.baidu.mapapi.map.MapStatus;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MarkerOptions;import com.baidu.mapapi.map.MyLocationConfiguration;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.model.LatLng;import com.google.android.gms.appindexing.Action;import com.google.android.gms.appindexing.AppIndex;import com.google.android.gms.appindexing.Thing;import com.google.android.gms.common.api.GoogleApiClient;public class MainActivity extends AppCompatActivity {    MapView mMapView = null;    BaiduMap mBaiduMap;    boolean isFirstLoc = true; // 是否首次定位    MapStatus ms;//    private ClusterManager<MyItem> mClusterManager;    //    private LocationMode mCurrentMode;    MyLocationConfiguration.LocationMode mCurrentMode;    public LocationClient mLocationClient = null;    public BDLocationListener myListener = new MyLocationListener();    /**     * ATTENTION: This was auto-generated to implement the App Indexing API.     * See https://g.co/AppIndexing/AndroidStudio for more information.     */    private GoogleApiClient client;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        SDKInitializer.initialize(getApplicationContext());        setContentView(R.layout.activity_main);        mMapView = (MapView) findViewById(R.id.bmapView);        mBaiduMap = mMapView.getMap();//        // 开启定位图层        mBaiduMap.setMyLocationEnabled(true);//        // 定位初始化        mLocationClient = new LocationClient(this);        mLocationClient.registerLocationListener(myListener);        location();//        LocationClientOption option = new LocationClientOption();//        option.setOpenGps(true); // 打开gps//        option.setCoorType("bd09ll"); // 设置坐标类型//        option.setScanSpan(1000);//        mLocationClient.setLocOption(option);//        mLocationClient.start();        // ATTENTION: This was auto-generated to implement the App Indexing API.        // See https://g.co/AppIndexing/AndroidStudio for more information.        client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();    }    private void location() {        // 设置正常模式        mCurrentMode = MyLocationConfiguration.LocationMode.NORMAL;        // 地图初始化        mMapView = (MapView) findViewById(R.id.bmapView);        // mMapView.setVisibility(View.VISIBLE);        mBaiduMap = mMapView.getMap();        mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomTo(15));        /*** ? *************************/        // 设置默认图标        // // 开启定位图层        mBaiduMap.setMyLocationEnabled(true);        LocationClientOption option = new LocationClientOption();        option.setOpenGps(true);// 打开gps        option.setCoorType("bd09ll"); // 设置坐标类型        option.setScanSpan(0);// 一秒刷新一次        mLocationClient.setLocOption(option);        mLocationClient.start();    }    /**     * ATTENTION: This was auto-generated to implement the App Indexing API.     * See https://g.co/AppIndexing/AndroidStudio for more information.     */    public Action getIndexApiAction() {        Thing object = new Thing.Builder()                .setName("Main Page") // TODO: Define a title for the content shown.                // TODO: Make sure this auto-generated URL is correct.                .setUrl(Uri.parse("http://[ENTER-YOUR-URL-HERE]"))                .build();        return new Action.Builder(Action.TYPE_VIEW)                .setObject(object)                .setActionStatus(Action.STATUS_TYPE_COMPLETED)                .build();    }    @Override    public void onStart() {        super.onStart();        // ATTENTION: This was auto-generated to implement the App Indexing API.        // See https://g.co/AppIndexing/AndroidStudio for more information.        client.connect();        AppIndex.AppIndexApi.start(client, getIndexApiAction());    }    @Override    public void onStop() {        super.onStop();        // ATTENTION: This was auto-generated to implement the App Indexing API.        // See https://g.co/AppIndexing/AndroidStudio for more information.        AppIndex.AppIndexApi.end(client, getIndexApiAction());        client.disconnect();    }    public class MyLocationListener implements BDLocationListener {        @Override        public void onReceiveLocation(BDLocation location) {            // map view 销毁后不在处理新接收的位置            Log.e("songwinter", location + "");            if (location == null || mMapView == null) {                return;            }            MyLocationData locData = new MyLocationData.Builder()                    .accuracy(location.getRadius())                    // 此处设置开发者获取到的方向信息,顺时针0-360                    .direction(100).latitude(location.getLatitude())                    .longitude(location.getLongitude()).build();            mBaiduMap.setMyLocationData(locData);            if (isFirstLoc) {                isFirstLoc = false;                LatLng ll = new LatLng(location.getLatitude(),                        location.getLongitude());                LatLng ll2 = new LatLng(location.getLatitude()+0.00035,                        location.getLongitude()+0.00205);                LatLng ll3 = new LatLng(location.getLatitude()+0.0005,                        location.getLongitude()+0.0005);                MapStatus.Builder builder = new MapStatus.Builder();                builder.target(ll).zoom(18.0f);                mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));                MarkerOptions options=new MarkerOptions();                options.position(ll3).title("swt test").icon(BitmapDescriptorFactory.fromResource(R.drawable.common_plus_signin_btn_text_dark_focused));                options.animateType(MarkerOptions.MarkerAnimateType.drop);                mBaiduMap.addOverlay(new MarkerOptions().position(ll).icon(BitmapDescriptorFactory.fromResource(R.drawable.common_plus_signin_btn_text_dark_focused)).animateType(MarkerOptions.MarkerAnimateType.drop));                mBaiduMap.addOverlay(new MarkerOptions().position(ll2).icon(BitmapDescriptorFactory.fromResource(R.drawable.common_plus_signin_btn_text_dark_focused)).animateType(MarkerOptions.MarkerAnimateType.drop));                mBaiduMap.addOverlay(options);            }////            final Marker marker = mBaiduMap.addMarker(new MarkerOptions().position(latLng).title("北京").snippet("DefaultMarker"));        }        public void onReceivePoi(BDLocation poiLocation) {        }    }    @Override    protected void onPause() {        mMapView.onPause();        super.onPause();    }    @Override    protected void onResume() {        mMapView.onResume();        super.onResume();    }    @Override    protected void onDestroy() {        // 退出时销毁定位        mLocationClient.stop();        // 关闭定位图层        mBaiduMap.setMyLocationEnabled(false);        mMapView.onDestroy();        mMapView = null;        super.onDestroy();    }}
Marker的点击事件   
/** * 响应点击图标事件 *  * @author Administrator *  */public class MyOnMarkerClickListener implements OnMarkerClickListener {// TODO@Overridepublic boolean onMarkerClick(Marker marker) {boolean flag = list.contains(marker);if (flag) {int index = list.indexOf(marker);Log.e("mark", "点击的位置是" + index);showPopupWindow(index);}return true;}}



0 0