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>
时间: 2024-12-19 09:02:24