热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android百度地图开发——学习历程(二)

步骤:1.注册百度地图开发者平台,申请API_KEY,下载定位SDK,2.把SDK中libs中的文件全部复制到项目中的li

步骤:

1.注册百度地图开发者平台,申请API_KEY,下载定位SDK,
2.把SDK中libs中的文件全部复制到项目中的libs文件夹下。。。。。(此步骤请参考我的上一个博客)。
3.在Androidmanifest 文件中加入一下代码, 要注意接入的位置,是在第一个Application中哦

<service
android:name&#61;"com.baidu.location.f"android:enabled&#61;"true"android:process&#61;":remote">
service>

这里写图片描述

然后我贴一个完整的代码和布局文件吧&#xff0c;


MainActivity:

public class MainActivity extends Activity implements OnClickListener{private TextView mText;private LocationClient mLocationClient &#61; null;private BDLocationListener myListener &#61; new MyLocationListener();private MapView mMapView;public BaiduMap mBaiduMap;&#64;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);mLocationClient &#61; new LocationClient(getApplicationContext()); // 声明LocationClient类mLocationClient.registerLocationListener(myListener); // 注册监听函数initWidgets();setLocationOption();mLocationClient.start();// 开始定位;mMapView &#61; (MapView) findViewById(R.id.bmapView);mBaiduMap &#61; mMapView.getMap();}private void initWidgets() {mText &#61; (TextView) findViewById(R.id.tv_text);Button btn &#61; (Button) findViewById(R.id.btn_request);btn.setOnClickListener(this);}&#64;Overrideprotected void onDestroy() {super.onDestroy();mLocationClient.stop();// 停止定位}private void setLocationOption() {LocationClientOption option &#61; new LocationClientOption();option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选&#xff0c;默认高精度&#xff0c;设置定位模式&#xff0c;高精度&#xff0c;低功耗&#xff0c;仅设备option.setCoorType("bd09ll");//可选&#xff0c;默认gcj02&#xff0c;设置返回的定位结果坐标系int span&#61;1000;option.setScanSpan(span);//可选&#xff0c;默认0&#xff0c;即仅定位一次&#xff0c;设置发起定位请求的间隔需要大于等于1000ms才是有效的option.setIsNeedAddress(true);//可选&#xff0c;设置是否需要地址信息&#xff0c;默认不需要option.setOpenGps(true);//可选&#xff0c;默认false,设置是否使用gpsoption.setLocationNotify(true);//可选&#xff0c;默认false&#xff0c;设置是否当GPS有效时按照1S/1次频率输出GPS结果option.setIsNeedLocationDescribe(true);//可选&#xff0c;默认false&#xff0c;设置是否需要位置语义化结果&#xff0c;可以在BDLocation.getLocationDescribe里得到&#xff0c;结果类似于“在北京天安门附近”option.setIsNeedLocationPoiList(true);//可选&#xff0c;默认false&#xff0c;设置是否需要POI结果&#xff0c;可以在BDLocation.getPoiList里得到option.setIgnoreKillProcess(false);//可选&#xff0c;默认true&#xff0c;定位SDK内部是一个SERVICE&#xff0c;并放到了独立进程&#xff0c;设置是否在stop的时候杀死这个进程&#xff0c;默认不杀死option.SetIgnoreCacheException(false);//可选&#xff0c;默认false&#xff0c;设置是否收集CRASH信息&#xff0c;默认收集option.setEnableSimulateGps(false);//可选&#xff0c;默认false&#xff0c;设置是否需要过滤GPS仿真结果&#xff0c;默认需要mLocationClient.setLocOption(option);}public class MyLocationListener implements BDLocationListener {&#64;Overridepublic void onReceiveLocation(BDLocation location) {if (location &#61;&#61; null)return;StringBuffer sb &#61; new StringBuffer(256);sb.append("当前时间 : ");sb.append(location.getTime());sb.append("\n错误码 : ");sb.append(location.getLocType());sb.append("\n纬度 : ");sb.append(location.getLatitude());sb.append("\n经度 : ");sb.append(location.getLongitude());sb.append("\n半径 : ");sb.append(location.getRadius());if (location.getLocType() &#61;&#61; BDLocation.TypeGpsLocation) {//GPSsb.append("\n速度 : ");sb.append(location.getSpeed());sb.append("\n卫星数 : ");sb.append(location.getSatelliteNumber());} else if (location.getLocType() &#61;&#61; BDLocation.TypeNetWorkLocation) {//网络定位sb.append("\n地址 : ");sb.append(location.getAddrStr());}mText.setText(sb.toString());//设置地图中心LatLng cenpt &#61; new LatLng(location.getLatitude(),location.getLongitude());//定义一个坐标点//定义地图状态MapStatus mMapStatus &#61; new MapStatus.Builder().target(cenpt).zoom(18).build();//定义MapStatusUpdate对象&#xff0c;以便描述地图状态将要发生的变化MapStatusUpdate mMapStatusUpdate &#61; MapStatusUpdateFactory.newMapStatus(mMapStatus);//改变地图状态mBaiduMap.setMapStatus(mMapStatusUpdate);//添加覆盖物LatLng point &#61; new LatLng(location.getLatitude(), location.getLongitude());//构建Marker图标BitmapDescriptor bitmap &#61; BitmapDescriptorFactory.fromResource(R.drawable.mark1);//构建MarkerOption&#xff0c;用于在地图上添加MarkerOverlayOptions option &#61; new MarkerOptions().position(point).icon(bitmap);//在地图上添加Marker&#xff0c;并显示mBaiduMap.addOverlay(option);}&#64;Overridepublic void onConnectHotSpotMessage(String s, int i) {//回调连接wifi是否是移动热点}}&#64;Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_request:if (mLocationClient !&#61; null ){mLocationClient.registerLocationListener(myListener);if(mLocationClient.isStarted()&#61;&#61;false){mLocationClient.start();}mLocationClient.requestLocation();}break;}}
}

布局文件&#xff1a;

<LinearLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"xmlns:tools&#61;"http://schemas.android.com/tools"android:layout_width&#61;"match_parent"android:layout_height&#61;"match_parent"android:orientation&#61;"vertical"tools:context&#61;"zsw.com.locationtest1.MainActivity" ><com.baidu.mapapi.map.MapView
android:layout_weight&#61;"1"android:id&#61;"&#64;&#43;id/bmapView"android:layout_width&#61;"fill_parent"android:layout_height&#61;"fill_parent"android:clickable&#61;"true" />
<Button
android:text&#61;"定位"android:layout_width&#61;"match_parent"android:layout_height&#61;"wrap_content"android:id&#61;"&#64;&#43;id/btn_request" />
<TextView android:layout_weight&#61;"3"android:text&#61;"TextView"android:layout_width&#61;"match_parent"android:layout_height&#61;"match_parent"android:id&#61;"&#64;&#43;id/tv_text" />
LinearLayout>

manifest文件


<manifest xmlns:android&#61;"http://schemas.android.com/apk/res/android"package&#61;"zsw.com.locationtest1"><application
android:allowBackup&#61;"true"android:icon&#61;"&#64;mipmap/ic_launcher"android:label&#61;"&#64;string/app_name"android:supportsRtl&#61;"true"android:theme&#61;"&#64;style/AppTheme">
<service
android:name&#61;"com.baidu.location.f"android:enabled&#61;"true"android:process&#61;":remote">
service><meta-data
android:name&#61;"com.baidu.lbsapi.API_KEY"android:value&#61;"G8CCDPLQTEEuOEMpO8Ru90HDowmNUXUP" />
//key:开发者申请的Key<activity android:name&#61;".MainActivity"><intent-filter><action android:name&#61;"android.intent.action.MAIN" /><category android:name&#61;"android.intent.category.LAUNCHER" />intent-filter>activity>application><uses-permission android:name&#61;"android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name&#61;"android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name&#61;"android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name&#61;"android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name&#61;"android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name&#61;"android.permission.READ_PHONE_STATE" /><uses-permission android:name&#61;"android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name&#61;"android.permission.INTERNET" /><uses-permission android:name&#61;"android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
manifest>

总结&#xff1a;如果发现自己定位到了非洲&#xff0c;如果Android版本是6.0以上&#xff0c;而因为定位权限是敏感权限&#xff0c;需要动态授权&#xff0c;如果过你用的是模拟器的话&#xff0c;也有可能会定位到非洲的&#xff0c;所以请用真机测试。


推荐阅读
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 入门指南:使用FastRPC技术连接Qualcomm Hexagon DSP
    本文旨在为初学者提供关于如何使用FastRPC技术连接Qualcomm Hexagon DSP的基础知识。FastRPC技术允许开发者在本地客户端实现远程调用,从而简化Hexagon DSP的开发和调试过程。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • 探讨低代码行业发展现状,分析其未能催生大型企业的原因,包括市场需求、技术局限及商业模型等方面。 ... [详细]
  • MetaTrads:重塑NFT交易生态的创新平台 | 龙葵社区AMA
    MetaTrads作为下一代NFT交易平台,引入了独特的交易挖矿机制,旨在解决现有NFT市场的流动性不足、进入门槛高及赋能有限等问题。本次龙葵社区AMA邀请了MetaTrads大中华区发展顾问Elliott LAU,深入探讨MetaTrads的创新之处及其对NFT未来的展望。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 探索百度WebFE团队打造的强大HTML5上传插件Web Uploader
    本文将详细介绍由百度WebFE团队开发的Web Uploader,这是一款集成了HTML5与Flash技术的上传组件,以其卓越的用户体验和强大的功能著称。 ... [详细]
  • 新浪微博热搜暂停更新;即刻APP回归;Android 11 Beta版发布 | 科技新闻速递
    为您带来最新的科技资讯,涵盖社交媒体动态、软件更新及行业重大事件。CSDN携手您共同关注科技前沿。 ... [详细]
  • 本文详细记录了腾讯ABS云平台的一次前端开发岗位面试经历,包括面试过程中遇到的JavaScript相关问题、Vue.js等框架的深入探讨以及算法挑战等内容。 ... [详细]
  • 本文提供了《汇编语言 第3版》中检测点11.2的详细参考答案,包括了各指令执行后的状态标志分析。 ... [详细]
author-avatar
此恨缠绵_793
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有