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

      1 /*
      2  *1.定位
      3  *2.自定义图标
      4  *2.三种模式切换:普通模式,罗盘模式,跟随模式
      5  * 
      6  * */
      7 public class MainActivity extends Activity {
      8     MapView mapView;
      9     BaiduMap mBaiduMap;
     10     // 定位相关
     11     private LocationClient mLocationClient;
     12     private MyLocationListener mLocationListener;
     13     private boolean isFirst = true;
     14     // 记录经纬度
     15     private double mLatitude;
     16     private double mLongtitude;
     17     // 自定义位置图标
     18     private BitmapDescriptor mIconLocation;
     19     
     20     private float mCurrentX;
     21     private com.baidu.mapapi.map.MyLocationConfiguration.LocationMode mLocationMode;
     22 
     23     @Override
     24     protected void onCreate(Bundle savedInstanceState) {
     25         super.onCreate(savedInstanceState);
     26         SDKInitializer.initialize(getApplicationContext());
     27         requestWindowFeature(Window.FEATURE_NO_TITLE);
     28         setContentView(R.layout.fragment_main);
     29         mapView = (MapView) findViewById(R.id.bmapView);
     30         mBaiduMap = mapView.getMap();
     31         // 设置地图标尺500m
     32         MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);
     33         mBaiduMap.setMapStatus(msu);
     34 
     35         // 初始化定位
     36         mLocationMode = com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.NORMAL;
     37         mLocationClient = new LocationClient(this);
     38         mLocationListener = new MyLocationListener();
     39         mLocationClient.registerLocationListener(mLocationListener);
     40         LocationClientOption option = new LocationClientOption();
     41         option.setCoorType("bd09ll");// 坐标类型
     42         option.setIsNeedAddress(true);
     43         option.setOpenGps(true);
     44         option.setScanSpan(1000);// 每隔1秒请求
     45         mLocationClient.setLocOption(option);
     46 
     47         // 初始化图标
     48         mIconLocation = BitmapDescriptorFactory
     49                 .fromResource(R.drawable.navi_map_gps_locked);
     50         
     51 
     52     }
     53 
     54     public void click(View view) {
     55         switch (view.getId()) {
     56         case R.id.mode_common:
     57             mLocationMode = com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.NORMAL;
     58             break;
     59 
     60         case R.id.mode_follow:
     61             mLocationMode = com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.FOLLOWING;
     62             break;
     63         case R.id.mode_compass:
     64             mLocationMode = com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.COMPASS;
     65             break;
     66 
     67         }
     68     }
     69 
     70     public void but(View view) {
     71         switch (view.getId()) {
     72 
     73         // 定位到我的位置
     74         case R.id.back:
     75             LatLng latLng = new LatLng(mLatitude, mLongtitude);
     76             MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
     77             mBaiduMap.animateMapStatus(msu);
     78 
     79             break;
     80 
     81         }
     82 
     83     }
     84 
     85     @Override
     86     protected void onResume() {
     87 
     88         super.onResume();
     89         mapView.onResume();
     90     }
     91 
     92     @Override
     93     protected void onStart() {
     94 
     95         super.onStart();
     96         // 开启定位
     97         mBaiduMap.setMyLocationEnabled(true);
     98         if (!mLocationClient.isStarted()) {
     99             mLocationClient.start();
    100         }
    101         
    102 
    103     }
    104 
    105     @Override
    106     protected void onStop() {
    107         // TODO Auto-generated method stub
    108         super.onStop();
    109         // 停止定位
    110         mBaiduMap.setMyLocationEnabled(false);
    111         mLocationClient.stop();
    112         
    113 
    114     }
    115 
    116     @Override
    117     protected void onPause() {
    118         // TODO Auto-generated method stub
    119         super.onPause();
    120         mapView.onPause();
    121     }
    122 
    123     @Override
    124     protected void onDestroy() {
    125         // TODO Auto-generated method stub
    126         super.onDestroy();
    127         mapView.onDestroy();
    128     }
    129 
    130     private class MyLocationListener implements BDLocationListener {
    131 
    132         @Override
    133         public void onReceiveLocation(BDLocation arg0) {
    134             // 精度、纬度
    135             MyLocationData data = new MyLocationData.Builder()
    136                     .direction(mCurrentX).accuracy(arg0.getRadius())
    137                     .latitude(arg0.getLatitude())
    138                     .longitude(arg0.getLongitude()).build();
    139 
    140             mBaiduMap.setMyLocationData(data);
    141             // 设置自定义图标
    142             MyLocationConfiguration config = new MyLocationConfiguration(
    143                     mLocationMode, true, mIconLocation);
    144             mBaiduMap.setMyLocationConfigeration(config);
    145             // 更新经纬度
    146             mLatitude = arg0.getLatitude();
    147             mLongtitude = arg0.getLongitude();
    148             // 第一次进入,设置用户当前位置
    149             if (isFirst) {
    150                 LatLng latLng = new LatLng(arg0.getLatitude(),
    151                         arg0.getLongitude());
    152                 MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
    153                 mBaiduMap.animateMapStatus(msu);
    154                 isFirst = false;
    155                 // 显示地址
    156                 Toast.makeText(MainActivity.this, arg0.getAddrStr(), 0).show();
    157 
    158             }
    159 
    160         }
    161 
    162         @Override
    163         public void onConnectHotSpotMessage(String arg0, int arg1) {
    164             // TODO Auto-generated method stub
    165 
    166         }
    167 
    168     }
    169 
    170 }
  • 相关阅读:
    第二十次codeforces竞技结束 #276 Div 2
    POJ 3414 Pots 记录路径的广搜
    C++primer原书中的一个错误(派生类using声明对基类权限的影响)
    leetcode day6 -- String to Integer (atoi) && Best Time to Buy and Sell Stock I II III
    Android仿iOS7的UISegmentedControl 分段
    SICP 习题 (2.6) 解题总结:丘奇计数
    java中super()和this()浅析
    学习日记之命令模式和Effective C++
    因特网的IP协议是不可靠无连接的,那为什么当初不直接把它设计为可靠的?
    OpenCV HaarTraining代码解析(二)cvCreateMTStumpClassifier(建立决策树)
  • 原文地址:https://www.cnblogs.com/my334420/p/7112333.html
Copyright © 2011-2022 走看看