百度地图和定位

  1 package com.example.administrator.yunstore;
  2 
  3 import android.app.Activity;
  4 import android.os.Bundle;
  5 import android.util.Log;
  6 import android.widget.TextView;
  7 
  8 import com.baidu.location.BDLocation;
  9 import com.baidu.location.BDLocationListener;
 10 import com.baidu.location.LocationClient;
 11 import com.baidu.location.LocationClientOption;
 12 import com.baidu.mapapi.SDKInitializer;
 13 import com.baidu.mapapi.map.BaiduMap;
 14 import com.baidu.mapapi.map.MapStatusUpdate;
 15 import com.baidu.mapapi.map.MapStatusUpdateFactory;
 16 import com.baidu.mapapi.map.MapView;
 17 import com.baidu.mapapi.map.MyLocationData;
 18 import com.baidu.mapapi.model.LatLng;
 19 
 20 public class MapActivity extends Activity {
 21 
 22     private MapView mapView;
 23     private BaiduMap myMap;
 24     private TextView addressView;
 25     //定位相关
 26     private LocationClient mLocationClient;
 27     private myLocationListener mLocationLisener;
 28     private float mCurrentX=0.0f;
 29     private boolean isFirstIn = true;
 30 
 31     @Override
 32     protected void onCreate(Bundle savedInstanceState) {
 33         super.onCreate(savedInstanceState);
 34         SDKInitializer.initialize(getApplicationContext());
 35         setContentView(R.layout.activity_map);
 36 
 37         initView();
 38         //初始化定位
 39         initLocation();
 40 
 41     }
 42 
 43     private void initLocation() {
 44         mLocationClient = new LocationClient(this);
 45         mLocationLisener = new myLocationListener();
 46         mLocationClient.registerLocationListener(mLocationLisener);
 47         LocationClientOption option = new LocationClientOption();
 48         //设置坐标类型
 49         option.setCoorType("bd09ll");
 50         //设置打开gps
 51         option.setOpenGps(true);
 52         //设置获取地址
 53         option.setIsNeedAddress(true);
 54         //请求时间
 55         option.setScanSpan(1000);
 56         //执行操作
 57         mLocationClient.setLocOption(option);
 58     }
 59 
 60     private void initView() {
 61         mapView = (MapView) findViewById(R.id.mapView);
 62         addressView= (TextView) findViewById(R.id.address);
 63         myMap = mapView.getMap();
 64         //设置地图的状态  15.0f显示距离为500m
 65         MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);
 66         myMap.setMapStatus(msu);
 67     }
 68 
 69 
 70     //定位监听
 71     private class myLocationListener implements BDLocationListener {
 72 
 73         @Override
 74         //定位成功以后的回调
 75         public void onReceiveLocation(BDLocation location) {
 76             MyLocationData data = new MyLocationData.Builder()//
 77                     .direction(mCurrentX)//
 78                     .accuracy(location.getRadius())//
 79                     .latitude(location.getLatitude())//
 80                     .longitude(location.getLongitude())//
 81                     .build();
 82             myMap.setMyLocationData(data);
 83 
 84             if (isFirstIn) {
 85                 LatLng latLng = new LatLng(location.getLatitude(),location.getLongitude());
 86                 Log.e("",location.getAddrStr()+"   "+location.getLatitude()+"  "+location.getLongitude());
 87                 MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
 88                 myMap.animateMapStatus(msu);
 89                 isFirstIn = false;
 90                 addressView.setText("你现在所在的位置是:"+location.getAddrStr());
 91             }
 92 
 93         }
 94     }
 95     @Override
 96     protected void onStart() {
 97         super.onStart();
 98         //开启定位
 99         myMap.setMyLocationEnabled(true);
100         if(!mLocationClient.isStarted()){
101             mLocationClient.start();
102 
103         }
104     }
105 
106     @Override
107     protected void onStop() {
108         super.onStop();
109         //停止定位
110         myMap.setMyLocationEnabled(false);
111         mLocationClient.stop();
112     }
113 
114     @Override
115     protected void onDestroy() {
116         super.onDestroy();
117         mapView.onDestroy();
118     }
119 
120     @Override
121     protected void onResume() {
122         super.onResume();
123         mapView.onResume();
124     }
125 
126     @Override
127     protected void onPause() {
128         super.onPause();
129         mapView.onPause();
130     }
131 }
 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     android:layout_width="match_parent"
 3     android:layout_height="match_parent"
 4     android:orientation="vertical">
 5 
 6     <com.baidu.mapapi.map.MapView
 7         android:id="@+id/mapView"
 8         android:layout_width="fill_parent"
 9         android:layout_height="300dp"
10         android:clickable="true" />
11     <TextView
12         android:id="@+id/address"
13         android:layout_width="match_parent"
14         android:layout_height="match_parent"
15         android:text="其他控件"
16         android:textSize="20sp"
17         android:background="#00ff00"/>
18 </LinearLayout>

 

posted @ 2016-10-11 17:33  点滴之水  阅读(726)  评论(0编辑  收藏  举报