全面已经写了2篇的地图了,这篇将他们结合一下
地图展示
地图定位

效果:

上面两篇都有详细的介绍和官方文档
下面直接开始配环境
libs

在当前model下的build的android中添加

 android {.....//添加sourceSets {main {jni.srcDirs=[]jniLibs.srcDirs = ['libs']}}}

清单文件

 <!-- 这个权限用于进行网络定位--><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"tools:ignore="ProtectedPermissions"></uses-permission><application......<!--百度定位--><service android:name="com.baidu.location.f"android:enabled="true"android:process=":remote"></service><meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="百度官方AK" ></meta-data></application>

Application进行初始化

 SDKInitializer.initialize(this);//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.//包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。SDKInitializer.setCoordType(CoordType.BD09LL);

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"android:layout_width="match_parent"android:layout_height="match_parent"android:clickable="true"/><LinearLayoutandroid:id="@+id/ll"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:background="#666666"><Buttonandroid:id="@+id/bt"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="复位"android:background="#666666"/><Buttonandroid:id="@+id/button"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="卫星"android:background="#666666"/><Buttonandroid:id="@+id/buttons"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:text="普通"android:background="#666666"/></LinearLayout>
</RelativeLayout>

MainActivity代码:

 public class MainActivity extends AppCompatActivity implements View.OnClickListener {public LocationClient mLocationClient = null;private BaiduMap mBaiduMap;private MyLocationListener myListener = new MyLocationListener();private Button bt;private Button button;private Button buttons;private LatLng latLng;private boolean isFirstLoc = true; // 是否首次定位private MapView mMapView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();initMap();}private void initMap() {//获取地图控件引用mBaiduMap = mMapView.getMap();//普通地图mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);mBaiduMap.setMyLocationEnabled(true);//默认显示普通地图mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);//开启交通图//mBaiduMap.setTrafficEnabled(true);//开启热力图//mBaiduMap.setBaiduHeatMapEnabled(true);// 开启定位图层mBaiduMap.setMyLocationEnabled(true);mLocationClient = new LocationClient(getApplicationContext());     //声明LocationClient类//配置定位SDK参数initLocation();mLocationClient.registerLocationListener(myListener);    //注册监听函数//开启定位mLocationClient.start();//图片点击事件,回到定位点mLocationClient.requestLocation();}private void initView() {mMapView = (MapView) findViewById(R.id.bmapView);bt = (Button) findViewById(R.id.bt);bt.setOnClickListener(this);button = (Button) findViewById(R.id.button);button.setOnClickListener(this);buttons = (Button) findViewById(R.id.buttons);buttons.setOnClickListener(this);}//配置定位SDK参数private void initLocation() {LocationClientOption option = new LocationClientOption();//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选,默认gcj02,设置返回的定位结果坐标系option.setCoorType("bd09ll");//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的int span = 1000;option.setScanSpan(span);//可选,设置是否需要地址信息,默认不需要option.setIsNeedAddress(true);//可选,默认false,设置是否使用gpsoption.setOpenGps(true);//可选,默认false,设置是否当GPS有效时按照1S/1次频率输出GPS结果option.setLocationNotify(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocationoption.setIsNeedLocationDescribe(true);// .getLocationDescribe里得到,结果类似于“在北京天安门附近”//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到option.setIsNeedLocationPoiList(true);option.setIgnoreKillProcess(false);// 打开gpsoption.setOpenGps(true);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死//可选,默认false,设置是否收集CRASH信息,默认收集option.SetIgnoreCacheException(false);//可选,默认false,设置是否需要过滤GPS仿真结果,默认需要option.setEnableSimulateGps(false);mLocationClient.setLocOption(option);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.bt://把定位点再次显现出来MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLng(latLng);mBaiduMap.animateMapStatus(mapStatusUpdate);break;case R.id.button://卫星地图mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);break;case R.id.buttons://普通地图mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);break;}}//实现BDLocationListener接口,BDLocationListener为结果监听接口,异步获取定位结果public class MyLocationListener implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {latLng = new LatLng(location.getLatitude(), location.getLongitude());// 构造定位数据MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())// 此处设置开发者获取到的方向信息,顺时针0-360.direction(100).latitude(location.getLatitude()).longitude(location.getLongitude()).build();// 设置定位数据mBaiduMap.setMyLocationData(locData);// 当不需要定位图层时关闭定位图层//mBaiduMap.setMyLocationEnabled(false);if (isFirstLoc) {isFirstLoc = false;LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());MapStatus.Builder builder = new MapStatus.Builder();builder.target(ll).zoom(18.0f);mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));if (location.getLocType() == BDLocation.TypeGpsLocation) {// GPS定位结果Toast.makeText(MainActivity.this, location.getAddrStr(), Toast.LENGTH_SHORT).show();} else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 网络定位结果Toast.makeText(MainActivity.this, location.getAddrStr(), Toast.LENGTH_SHORT).show();} else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 离线定位结果Toast.makeText(MainActivity.this, location.getAddrStr(), Toast.LENGTH_SHORT).show();} else if (location.getLocType() == BDLocation.TypeServerError) {Toast.makeText(MainActivity.this, "服务器错误,请检查", Toast.LENGTH_SHORT).show();} else if (location.getLocType() == BDLocation.TypeNetWorkException) {Toast.makeText(MainActivity.this, "网络错误,请检查", Toast.LENGTH_SHORT).show();} else if (location.getLocType() == BDLocation.TypeCriteriaException) {Toast.makeText(MainActivity.this, "手机模式错误,请检查是否飞行", Toast.LENGTH_SHORT).show();}}}}@Overrideprotected void onDestroy() {super.onDestroy();//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理mMapView.onDestroy();}@Overrideprotected void onResume() {super.onResume();//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理mMapView.onPause();}
}

百度地图之地图切换及复位相关推荐

  1. 百度地图 控件——路网地图和影像地图切换

    百度地图  控件--路网地图和影像地图切换 <!DOCTYPE html> <html> <head> <meta http-equiv="Cont ...

  2. cesium模仿百度地图二三维切换

    百度地图二三维切换效果感觉比cesium自带的更平滑 不过百度地图的二三维切换只是简单的三维视角切换,二维是垂直视角 //传入viewer和要切换的维数 onChange2D3DClick(viewe ...

  3. Vue项目使用百度地图——经纬度地图组件的封装及使用

    1 前言 要在vue项目使用百度地图api,首先应做以下配置 (1)index.html index.html添加script <script src="http://api.map. ...

  4. vue 高德地图 不同区域显示不同颜色_老司机频繁掉沟里,高德百度腾讯地图导航到底该怎么选?...

    导航类app发展至今,基本形成了三分天下的局面:高德.百度.腾讯,然而事实真的是三家平分天下么?三款不同的地图导航软件各有优缺点,至于什么路况选择哪个软件导航似乎更是一门玄学? 很多人想知道高德地图. ...

  5. 不同分辨率加载不同js_OpenLayers加载百度离线瓦片地图(完美无偏移)

    本文使用OpenLayers最新版本V5.3.0演示:如何使用OpenLayer完美无偏移加载百度离线瓦片地图.OpenLayers 5.3.0下载地址为:https://github.com/ope ...

  6. 地图切换引擎(多种地图之间一键切换)

    业务场景 在工作中遇到的项目场景.由于项目有国内和国外用户,对地图的需求不同,国内人士倾向于使用百度,高德等地图:而国外用户则更多的使用Here地图.而很麻烦的是,百度,腾讯等地图对国外的支持并不友好 ...

  7. 微信公众号h5实现高德/百度/腾讯地图导航

    最近做了个微信公众号h5需求是这样的 1.点击地图进入地图详情 2.地图详情包括开始导航与地图(高德,百度,腾讯)选择,点击开始导航自动跳转该地图app 首先先理一下功能: 1:第一张图是直接显示坐标 ...

  8. 百度、GOOGLE地图纠偏及基站查询相关说明

    地图纠偏 基站查询相关说明 纠偏数据库分3个等级,0.1 大概500多米的偏差,0.01 保证10米内偏差,0.001 保证2米内偏差 本站有谷歌0.01和0.001纠偏数据库,百度0.01纠偏数据库 ...

  9. axtoolbarcontrol加载图层后还是灰的_OpenLayers加载百度离线瓦片地图(完美无偏移)...

    本文使用OpenLayers最新版本V5.3.0演示:如何使用OpenLayer完美无偏移加载百度离线瓦片地图.OpenLayers 5.3.0下载地址为:https://github.com/ope ...

最新文章

  1. codeforces数学1600day6[CodeForces - 1029C多区间交+枚举,CodeForces 992C[数学公式推导],CodeForces 992B[质因数分解+暴力枚举]]
  2. 人工智能带来的事业浪潮或将提前到来
  3. 把自己编写的python模块添加到PYTHONPATH上
  4. C语言中指针的使用方法
  5. VScode配置ESlint自动修复格式化
  6. 如何更新Win11系统网卡驱动
  7. pandas dataframe column_数据处理的瑞士军刀pandas | 火星技术帖
  8. android开发之AsyncTask的用法
  9. Qt4项目迁移到Qt5问题:greaterThan(QT_MAJOR_VERSION, 4): QT += widgets .
  10. DCGAN-深度卷积生成对抗网络-转置卷积
  11. 抓取腾讯校园招聘的第一页
  12. 虚拟机安装时黑屏的解决办法
  13. 磁盘阵列柜性能介绍(一)
  14. 06.实模式进入保护模式
  15. Pandas描述性统计
  16. unity 多个物体围绕一个点生成圆形状
  17. Wannafly挑战赛27 C 蓝魔法师(树上dp)
  18. V-REP 泡泡机器人教程
  19. ... MWMCR::EvaluateFunction error ...
  20. 实现IDApython自动化加载模块PDB

热门文章

  1. 深度学习模型的Android部署方法
  2. OSI七层网络模型 TCP五层网络模型
  3. 向量检索(一)Faiss 在工业界的应用和常见问题解决
  4. pyQt5 学习笔记(18)QLineEdit 单行文本输入
  5. px4+ros+gazebo+ORB_SLAM2室内视觉无人机导航
  6. 校园二手交易android软件 基于AndroidStudio
  7. 合肥工业大学宣城校区2020年-2021年第一(大四上)学期物联网工程专业资料汇总(含课件、个人实验报告、实验代码、课设报告等)
  8. oracle序列无缓存,oracle 序列跳号现象
  9. 均方根误差(RMSE)的含义是什么以及误差大小多少适合?
  10. 基础——VMware安装CentOS7并初始配置