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

    xiaoxiao2021-03-25  52

    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 @Override public boolean onMarkerClick(Marker marker) { boolean flag = list.contains(marker); if (flag) { int index = list.indexOf(marker); Log.e("mark", "点击的位置是" + index); showPopupWindow(index); } return true; } }

    转载请注明原文地址: https://ju.6miu.com/read-40910.html

    最新回复(0)