zoukankan      html  css  js  c++  java
  • Android_百度地图基本用法3

      1 /*
      2  *1.实现定位
      3  *2.引入方向传感器
      4  *3.自定义位置图标
      5  * */
      6 public class MainActivity extends Activity {
      7     MapView mapView;
      8     BaiduMap mBaiduMap;
      9     // 定位相关
     10     private LocationClient mLocationClient;
     11     private MyLocationListener mLocationListener;
     12     private boolean isFirst = true;
     13     // 记录经纬度
     14     private double mLatitude;
     15     private double mLongtitude;
     16     // 自定义位置图标
     17     private BitmapDescriptor mIconLocation;
     18     private MyOrientationListener myOrientationListener;
     19     private float mCurrentX;
     20 
     21     @Override
     22     protected void onCreate(Bundle savedInstanceState) {
     23         super.onCreate(savedInstanceState);
     24         SDKInitializer.initialize(getApplicationContext());
     25         requestWindowFeature(Window.FEATURE_NO_TITLE);
     26         setContentView(R.layout.fragment_main);
     27         mapView = (MapView) findViewById(R.id.bmapView);
     28         mBaiduMap = mapView.getMap();
     29         // 设置地图标尺500m
     30         MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);
     31         mBaiduMap.setMapStatus(msu);
     32 
     33         // 初始化定位
     34 
     35         mLocationClient = new LocationClient(this);
     36         mLocationListener = new MyLocationListener();
     37         mLocationClient.registerLocationListener(mLocationListener);
     38         LocationClientOption option = new LocationClientOption();
     39         option.setCoorType("bd09ll");// 坐标类型
     40         option.setIsNeedAddress(true);
     41         option.setOpenGps(true);
     42         option.setScanSpan(1000);// 每隔1秒请求
     43         mLocationClient.setLocOption(option);
     44 
     45         // 初始化图标
     46         mIconLocation = BitmapDescriptorFactory
     47                 .fromResource(R.drawable.navi_map_gps_locked);
     48         myOrientationListener = new MyOrientationListener(this);
     49         myOrientationListener
     50                 .setOnOrientationListener(new OnOrientationListener() {
     51 
     52                     @Override
     53                     public void onOrientationChanged(float X) {
     54                         // TODO Auto-generated method stub
     55                         mCurrentX = X;
     56                     }
     57                 });
     58 
     59     }
     60 
     61     public void but(View view) {
     62         switch (view.getId()) {
     63 
     64         // 定位到我的位置
     65         case R.id.back:
     66             LatLng latLng = new LatLng(mLatitude, mLongtitude);
     67             MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
     68             mBaiduMap.animateMapStatus(msu);
     69 
     70             break;
     71 
     72         }
     73 
     74     }
     75 
     76     @Override
     77     protected void onResume() {
     78 
     79         super.onResume();
     80         mapView.onResume();
     81     }
     82 
     83     @Override
     84     protected void onStart() {
     85 
     86         super.onStart();
     87         // 开启定位
     88         mBaiduMap.setMyLocationEnabled(true);
     89         if (!mLocationClient.isStarted()) {
     90             mLocationClient.start();
     91         }
     92         // 开启方向传感器
     93         myOrientationListener.start();
     94 
     95     }
     96 
     97     @Override
     98     protected void onStop() {
     99         // TODO Auto-generated method stub
    100         super.onStop();
    101         // 停止定位
    102         mBaiduMap.setMyLocationEnabled(false);
    103         mLocationClient.stop();
    104         // 停止方向传感器
    105         myOrientationListener.stop();
    106 
    107     }
    108 
    109     @Override
    110     protected void onPause() {
    111         // TODO Auto-generated method stub
    112         super.onPause();
    113         mapView.onPause();
    114     }
    115 
    116     @Override
    117     protected void onDestroy() {
    118         // TODO Auto-generated method stub
    119         super.onDestroy();
    120         mapView.onDestroy();
    121     }
    122 
    123     private class MyLocationListener implements BDLocationListener {
    124 
    125         @Override
    126         public void onReceiveLocation(BDLocation arg0) {
    127             // 精度、纬度
    128             MyLocationData data = new MyLocationData.Builder()
    129                     .direction(mCurrentX).accuracy(arg0.getRadius())
    130                     .latitude(arg0.getLatitude())
    131                     .longitude(arg0.getLongitude()).build();
    132             mBaiduMap.setMyLocationData(data);
    133 
    134             // 设置自定义图标
    135             MyLocationConfiguration config = new MyLocationConfiguration(
    136                     com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.NORMAL,
    137                     true, mIconLocation);
    138             mBaiduMap.setMyLocationConfigeration(config);
    139 
    140             // 更新经纬度
    141             mLatitude = arg0.getLatitude();
    142             mLongtitude = arg0.getLongitude();
    143             // 第一次进入,设置用户当前位置
    144             if (isFirst) {
    145                 LatLng latLng = new LatLng(arg0.getLatitude(),
    146                         arg0.getLongitude());
    147                 MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
    148                 mBaiduMap.animateMapStatus(msu);
    149                 isFirst = false;
    150                 // 显示地址
    151                 Toast.makeText(MainActivity.this, arg0.getAddrStr(), 0).show();
    152 
    153             }
    154 
    155         }
    156 
    157         @Override
    158         public void onConnectHotSpotMessage(String arg0, int arg1) {
    159             // TODO Auto-generated method stub
    160 
    161         }
    162 
    163     }
    164 
    165 }
     1 public class MyOrientationListener implements SensorEventListener {
     2     private SensorManager mSensorManager;
     3     private Context mContext;
     4     private Sensor mSensor;
     5 
     6     private float lastX;
     7 
     8     public MyOrientationListener(Context Context) {
     9         this.mContext = Context;
    10     }
    11   //开始监听
    12     public void start() {
    13         mSensorManager = (SensorManager) mContext
    14                 .getSystemService(Context.SENSOR_SERVICE);
    15         if (mSensorManager != null) {
    16             // 获得方向传感器
    17             mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
    18 
    19         }
    20         if (mSensor != null) {
    21             mSensorManager.registerListener(this, mSensor,
    22                     SensorManager.SENSOR_DELAY_UI);
    23         }
    24         else {
    25             Toast.makeText(mContext, "没有方向传感器", 1).show();
    26         }
    27 
    28     }
    29 
    30     public void stop() {
    31         mSensorManager.unregisterListener(this);
    32 
    33     }
    34 
    35     @Override
    36     public void onSensorChanged(SensorEvent event) {
    37 
    38         if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {
    39             float x = event.values[SensorManager.DATA_X];
    40             if (Math.abs(x - lastX) > 1.0) {
    41                 if (mOnOrientationListener != null) {
    42                     mOnOrientationListener.onOrientationChanged(x);
    43                 }
    44             }
    45             lastX = x;
    46         }
    47     }
    48 
    49     @Override
    50     public void onAccuracyChanged(Sensor sensor, int accuracy) {
    51 
    52     }
    53 
    54     private OnOrientationListener mOnOrientationListener;
    55 
    56     public void setOnOrientationListener(
    57             OnOrientationListener mOnOrientationListener) {
    58         this.mOnOrientationListener = mOnOrientationListener;
    59     }
    60 
    61     public interface OnOrientationListener {
    62         void onOrientationChanged(float X);
    63     }
    64 }
  • 相关阅读:
    ABBYY Cup 3.0G3. Good Substrings
    Codeforces Beta Round #94 (Div. 1 Only)B. String sam
    hdu5421Victor and String 两端加点的pam
    loj#2059. 「TJOI / HEOI2016」字符串 sam+线段树合并+倍增
    Codeforces Round #349 (Div. 1)E. Forensic Examination
    ACM-ICPC World Finals 2019 G.First of Her Name
    51nod1647 小Z的trie
    LOJ #10222. 「一本通 6.5 例 4」佳佳的 Fibonacci 题解
    POJ 2443 Set Operation 题解
    CSP-J 2019游记
  • 原文地址:https://www.cnblogs.com/my334420/p/7112249.html
Copyright © 2011-2022 走看看