百度地图 定位加覆盖物(笔记,方便查阅)
来源:互联网 发布: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