百度地图定位Demo补充
来源:互联网 发布:ios软件开发语言 编辑:程序博客网 时间:2024/05/17 04:26
package zjc.bwie.com.baidutext;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.Window;import android.widget.Toast;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.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.MapStatus;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MyLocationConfiguration;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.model.LatLng;public class MainActivity extends Activity { public MapView mMapView = null; public LocationClient mLocationClient = null; public MyLocationListenner myListener = new MyLocationListenner(); public BaiduMap mMapViewMap; boolean isFirstLoc = true; // 是否首次定位 //每次定位后,获取经纬度 private double X; private double Y; //自定义定位图标 private BitmapDescriptor myiconLoaction; //实例化传感器对象 private MyorientationListener myorientationListener; //记录传感器的x坐标 private float CurrentX; //模式变量 private MyLocationConfiguration.LocationMode locationmode = MyLocationConfiguration.LocationMode.NORMAL; ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); //在使用SDK各组件之前初始化context信息,传入ApplicationContext //注意该方法要再setContentView方法之前实现 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); //获取地图控件引用 mMapView = (MapView) findViewById(R.id.bmapView); mMapViewMap = mMapView.getMap(); //设置页面比例 MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.zoomTo(20.0f); mMapViewMap.setMapStatus(mapStatusUpdate); //定位功能 makePosition(); } @Override protected void onStart() { //设置定位允许 mMapViewMap.setMyLocationEnabled(true); //开启定位 if (!mLocationClient.isStarted()) { mLocationClient.start(); } //开启方向传感器 myorientationListener.start(); super.onStart(); } @Override protected void onStop() { //停止定位 mMapViewMap.setMyLocationEnabled(false); mLocationClient.stop(); //关闭方向传感器 myorientationListener.stop(); super.onStop(); } public void makePosition() { // 开启定位图层 mMapViewMap.setMyLocationEnabled(true); mMapViewMap .setMyLocationConfigeration(new MyLocationConfiguration( locationmode, true, null)); mLocationClient = new LocationClient(this); mLocationClient.registerLocationListener(myListener); LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); // 打开gps option.setIsNeedAddress(true);//可以帮助我们获取当前的地址 option.setCoorType("bd09ll"); // 设置坐标类型 option.setScanSpan(1000); mLocationClient.setLocOption(option); //初始化图标 myiconLoaction = BitmapDescriptorFactory.fromResource(R.mipmap.navi_map_gps_locked); //实例化传感器对象 myorientationListener = new MyorientationListener(this); myorientationListener.setOnorientationListener(new MyorientationListener.OnorientationListener() { @Override public void onOreationChanged(float x) { CurrentX = x; } }); } /** * 设置Menu菜单的布局 * * @param menu * @return */ @Override public boolean onCreateOptionsMenu(Menu menu) { //设定自定义布局 getMenuInflater().inflate(R.menu.menu_layout, menu); return true; } /** * Menu菜单按钮的点击事件 * * @param item * @return */ @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.comment://切换普通地图状态 mMapViewMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); break; case R.id.site://切换卫星地图 mMapViewMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE); break; case R.id.traffic://切换实时交通地图 if (mMapViewMap.isTrafficEnabled()) { mMapViewMap.setTrafficEnabled(false); } else { mMapViewMap.setTrafficEnabled(true); } break; case R.id.myPosition: //定位当前位置 madePosition(); break; case R.id.model_comment: locationmode = MyLocationConfiguration.LocationMode.NORMAL; break; case R.id.model_fllow://跟随模式 locationmode = MyLocationConfiguration.LocationMode.FOLLOWING; break; case R.id.model_luopan://罗盘模式 locationmode = MyLocationConfiguration.LocationMode.COMPASS; break; } return super.onOptionsItemSelected(item); } public void madePosition() { LatLng ll = new LatLng(X, Y); MapStatus.Builder builder = new MapStatus.Builder(); builder.target(ll).zoom(18.0f); mMapViewMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); } @Override protected void onDestroy() { // 退出时销毁定位 mLocationClient.stop(); // 关闭定位图层 mMapViewMap.setMyLocationEnabled(false); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mMapView.onDestroy(); mMapView = null; super.onDestroy(); } @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mMapView.onPause(); } /** * 定位SDK监听函数 */ public class MyLocationListenner implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { // map view 销毁后不在处理新接收的位置 if (location == null || mMapView == null) { return; } MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此处设置开发者获取到的方向信息 .direction(CurrentX) .latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); mMapViewMap.setMyLocationData(locData); //设置自定义的图标,这里使用的是自定义的图标 MyLocationConfiguration configuration = new MyLocationConfiguration(locationmode, true, myiconLoaction); mMapViewMap.setMyLocationConfigeration(configuration); //更新,并记录当前的经纬度 X = location.getLatitude(); Y = location.getLongitude(); if (isFirstLoc) { isFirstLoc = false; LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); MapStatus.Builder builder = new MapStatus.Builder(); builder.target(ll).zoom(18.0f); mMapViewMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); //吐司当前的位置信息 Toast.makeText(MainActivity.this, location.getAddrStr(), Toast.LENGTH_SHORT).show(); } } public void onReceivePoi(BDLocation poiLocation) { } }
<strong><span style="font-size:24px;">补充Demo下载地址 :http://download.csdn.net/detail/dm_jc/9585160</span></strong>
1 0
- 百度地图定位Demo补充
- 百度地图定位demo
- 百度地图定位demo
- Android百度地图定位demo
- 百度地图的定位demo
- 百度地图 定位 地图
- android 百度地图api demo 定位白屏
- 百度地图定位v6.1.3--1.官方demo实践分析
- 2016年最新百度地图开发demo,定位+导航
- 百度地图简要demo--关键字查询,点定位
- 百度地图,百度定位。
- 【经验小谈】百度定位api使用 百度定位demo 百度地图快速定位 百度地图获取当前位置 获取自己的位置 百度定位示例
- 腾讯地图定位demo
- 百度定位官方Demo
- 百度地图简单demo
- android 百度地图Demo
- 百度地图demo
- 百度地图二次开发Demo
- DBG、DMB、DSB 和 ISB
- hdu 5755 - Gambler Bo(Gauss消元)
- PullToRefresh框架源码分析(Ⅱ)下拉刷新的过程分析
- Hdu 5738 Eureka (组合数中档题)
- Android坐标系
- 百度地图定位Demo补充
- DB-Mysl-忘记root密码&解决
- Java版 原地二路归并排序
- iOS charles 如何抓取虚拟机内的网络数据
- Ubuntu下deepnet的配置
- Shadertoy-MagicSea
- 二叉树的基本知识以及各种遍历(Java)
- iOS之旅--获取字符长度
- iOS 国际化 没有国际化的语言显示默认语言