关于百度地图的基础地图和定位功能
来源:互联网 发布:剑灵外形数据 编辑:程序博客网 时间:2024/04/29 05:04
在AndroidManifest.xml中写入密匙和权限:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.bwie.test" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > </uses-permission> <uses-permission android:name="android.permission.INTERNET" > </uses-permission> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.WAKE_LOCK" > </uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? --> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" > </uses-permission> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- 这个权限用于进行网络定位--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission><!-- 这个权限用于访问GPS定位--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission><!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位--><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><!-- 获取运营商信息,用于支持提供运营商信息相关的接口--><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><!-- 用于读取手机当前的状态--><uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission><!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><!-- 访问网络,网络定位需要上网--><uses-permission android:name="android.permission.INTERNET" /><!-- SD卡读取权限,用户写入离线定位数据--><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission><!--允许应用读取低级别的系统日志文件 --><uses-permission android:name="android.permission.READ_LOGS"></uses-permission> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="填写密匙" /> <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"></service> <activity android:name="com.bwie.test.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>在两个Fragment上写入,进行切换:
显示基础地图:
package com.bwie.fragments;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.MapView;import com.bwie.test.R;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class BasemapFragment extends Fragment{private MapView mMapView =null;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {//注意该方法要再setContentView方法之前实现 SDKInitializer.initialize(getActivity().getApplicationContext()); View view=inflater.inflate(R.layout.base_map_fragment_item, null);//获取地图控件引用 mMapView = (MapView) view.findViewById(R.id.bmapView); return view;}@Overridepublic void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 mMapView.onDestroy(); } @Overridepublic void onResume() { super.onResume(); //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 mMapView.onResume(); } @Overridepublic void onPause() { super.onPause(); //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mMapView.onPause(); }}
再是定位地图:
package com.bwie.fragments;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.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.map.MyLocationConfiguration.LocationMode;import com.baidu.mapapi.model.LatLng;import com.bwie.test.R;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.RadioGroup;import android.widget.RadioGroup.OnCheckedChangeListener;public class LocationFragment extends Fragment {// 定位相关 LocationClient mLocClient; public MyLocationListenner myListener = new MyLocationListenner(); private LocationMode mCurrentMode; BitmapDescriptor mCurrentMarker; MapView mMapView; BaiduMap mBaiduMap;//定义 BaiduMap 地图对象的操作方法与接口 private boolean isFirstLoc=true; private Button requestLocButton; // UI相关 OnCheckedChangeListener radioButtonListener; @Overridepublic View onCreateView(LayoutInflater inflater,@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {//注意该方法要再setContentView方法之前实现 SDKInitializer.initialize(getActivity().getApplicationContext()); View view=inflater.inflate(R.layout.fra2_location, null); /*requestLocButton = (Button) view.findViewById(R.id.button1); //定位图层显示方式 NORMAL:普通态: 更新定位数据时不对地图做任何操作 mCurrentMode = LocationMode.NORMAL; requestLocButton.setText("普通"); OnClickListener btnClickListener = new OnClickListener() { public void onClick(View v) { switch (mCurrentMode) { case NORMAL: requestLocButton.setText("跟随"); //FOLLOWING:跟随态,保持定位图标在地图中心 mCurrentMode = LocationMode.FOLLOWING; //参数:MyLocationConfiguration.LocationMode locationMode 定位图层显示方式 //参数:boolean enableDirection 是否允许显示方向信息 //参数:BitmapDescriptor customMarker 用户自定义定位图标 mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( mCurrentMode, true, mCurrentMarker)); break; case COMPASS: requestLocButton.setText("普通"); mCurrentMode = LocationMode.NORMAL; mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( mCurrentMode, true, mCurrentMarker)); break; case FOLLOWING: requestLocButton.setText("罗盘"); //COMPASS:罗盘态,显示定位方向圈,保持定位图标在地图中心 mCurrentMode = LocationMode.COMPASS; mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( mCurrentMode, true, mCurrentMarker)); break; default: break; } } }; requestLocButton.setOnClickListener(btnClickListener); RadioGroup group = (RadioGroup) view.findViewById(R.id.radioGroup); radioButtonListener = new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if (checkedId == R.id.defaulticon) { // 传入null则,恢复默认图标 mCurrentMarker = null; mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( mCurrentMode, true, null)); } if (checkedId == R.id.customicon) { // 修改为自定义marker mCurrentMarker = BitmapDescriptorFactory .fromResource(R.drawable.ic_launcher); mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( mCurrentMode, true, mCurrentMarker)); } } }; group.setOnCheckedChangeListener(radioButtonListener);*/ // 地图初始化 mMapView = (MapView) view.findViewById(R.id.bmapView); mBaiduMap = mMapView.getMap(); mCurrentMode = LocationMode.NORMAL;mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker));mCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker)); // 开启定位图层 mBaiduMap.setMyLocationEnabled(true); // 定位初始化 mLocClient = new LocationClient(getActivity()); //注册定位监听函数 mLocClient.registerLocationListener(myListener); //配置定位SDK各配置参数,比如定位模式、定位时间间隔、坐标系类型等 LocationClientOption option = new LocationClientOption(); option.setOpenGps(true);// 打开gps option.setCoorType("bd09ll"); // 设置坐标类型 option.setScanSpan(1000);//设置扫描间隔,单位是毫秒 当<1000(1s)时,定时定位无效 mLocClient.setLocOption(option);//设置 LocationClientOption mLocClient.start();//启动定位sdkreturn view;}/** * 定位SDK监听函数 */ public class MyLocationListenner implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) {//BDLocaiton - 定位结果 // map view 销毁后不在处理新接收的位置 if (location == null || mMapView == null) { return; } //定位数据 MyLocationData locData = new MyLocationData.Builder()//MyLocationData.Builder定位数据建造器 .accuracy(location.getRadius())//accuracy设置定位数据的精度信息,单位:米 // 此处设置开发者获取到的方向信息,顺时针0-360 .direction(100).latitude(location.getLatitude())//latitude 设置定位数据的纬度 .longitude(location.getLongitude()).build();//longitude 设置定位数据的经度 mBaiduMap.setMyLocationData(locData);//设置定位数据, 只有先允许定位图层后设置数据才会生效,参见 setMyLocationEnabled(boolean) if (isFirstLoc) { isFirstLoc = false; //LatLng 地理坐标基本数据结构 LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); //MapStatusUpdate 描述地图状态将要发生的变化 MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);//newLatLng(LatLng latLng) 设置地图新中心点 mBaiduMap.animateMapStatus(u);//以动画方式更新地图状态,动画耗时 300 ms } } public void onReceivePoi(BDLocation poiLocation) { } } @Override public void onDestroy() { // 退出时销毁定位 mLocClient.stop(); // 关闭定位图层 设置是否允许定位图层 mBaiduMap.setMyLocationEnabled(false); mMapView.onDestroy(); mMapView = null; super.onDestroy(); } @Override public void onResume() { super.onResume(); //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 mMapView.onResume(); } @Override public void onPause() { super.onPause(); //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mMapView.onPause(); } }
在Activity中进行切换:
package com.bwie.test;import com.bwie.fragments.BasemapFragment;import com.bwie.fragments.LocationUserFragment;import android.os.Bundle;import android.app.Activity;import android.graphics.Color;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.LinearLayout;public class MainActivity extends FragmentActivity implements OnClickListener{private LinearLayout ll;private Button base;private Button location;private FragmentManager fm;private BasemapFragment basemap;private LocationUserFragment locationuser;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);fm=getSupportFragmentManager();init();}private void init() {//找对象ll=(LinearLayout)findViewById(R.id.ll);base=(Button)findViewById(R.id.bt_base);location=(Button)findViewById(R.id.bt_location);//实例化basemap=new BasemapFragment();locationuser=new LocationUserFragment();//创建事务FragmentTransaction trac=fm.beginTransaction();trac.add(R.id.ll, basemap);trac.add(R.id.ll, locationuser);trac.replace(R.id.ll, basemap);trac.commit();//按钮的背景色base.setBackgroundColor(Color.BLUE);location.setBackgroundColor(Color.GRAY);//按钮的监听base.setOnClickListener(this);location.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.bt_base:base.setBackgroundColor(Color.BLUE);location.setBackgroundColor(Color.GRAY); FragmentTransaction trac=fm.beginTransaction();trac.replace(R.id.ll, basemap);trac.commit();break;case R.id.bt_location:base.setBackgroundColor(Color.GRAY);location.setBackgroundColor(Color.BLUE); FragmentTransaction trac1=fm.beginTransaction();trac1.replace(R.id.ll, locationuser);trac1.commit();break;default:break;}}}
另外百度地图的jar包也一定要添加进去。
0 0
- 关于百度地图的基础地图和定位功能
- 关于百度地图的一个定位功能
- 百度地图 之基础地图和定位
- 百度地图-定位功能
- 百度地图定位功能
- 百度地图定位功能
- 百度地图 定位功能
- 百度地图定位功能
- 百度地图v3.5 地图定位和封装定位功能
- 关于基础百度地图和地图导航的bug问题
- 百度地图定位基础
- 百度地图定位功能的实现
- 百度地图定位功能的简单应用
- AndroidStudio百度地图定位功能的集成
- 百度地图实现简单的定位功能
- 百度地图定位功能的使用
- Android之百度地图(二)基础地图和定位
- 百度地图基础功能
- 腾讯网迷你版如何关闭
- bzoj1023 仙人掌图 树形dp
- 2015福建省赛 Common Tangents 2213 (简单数学几何)
- 搭建Android开发环境
- Android线程间通信二主线程发消息给子线程
- 关于百度地图的基础地图和定位功能
- 字符串中统计单词个数
- DFS
- LTE信令
- uva714
- 水浒传之于公司治理
- 年终总结
- 获取Android设备的唯一识别码
- 起始