




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Android地图和定位实现 使用百度地图、定位SDK实现功能一、百度地图教程的问题在百度地图看了几个小时的教程,发现种种问题,很大部分是百度对于定位API 网页上的DEMO代码一大堆错误!这极可能是定位SDK升级后而网页上的DEMO部分代码沿用旧版导致的。错误1:在该示例中取了个变量叫mLocationClient,后面居然叫mLocClient,我找了半天,说这变量哪来的呢错误2:这个错误是最致命的,在网页上的DEMO(开发指南)里居然连开始定位这个函数至始至终都没调用过!新手咋看以为调用这个就可以定位了,其实还应该调用mLocClient.start(); 才行,否则压根就没启动定位。二、使用百度地图V2.2和定位V4.0实现地图和定位功能1、首先将必要的库文件导入到你的项目里,具体参看这里/map/sdkandev-2.htm/map/geosdk-android-developv4.0.htm2、创建布局文件layout/activity_main.xml 3、编写代码 (MainActivity.java)package com.android.test;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.BMapManager;import com.baidu.mapapi.map.LocationData;import com.baidu.mapapi.map.MapController;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MyLocationOverlay;import api.basestruct.GeoPoint;public class MainActivity extends Activity /百度Keyprivate static final String BD_KEY=请在这里输入你的百度地图Key,这里我删除了我自己的,你自己填; /地图管理器private BMapManager mBMapMan=null;/地图视图private MapView mMapView=null; private LocationClient mLocationClient=null; /我的位置覆盖物private MyLocationOverlay myOverlay;/位置在图层中的索引private int myOverlayIndex=0;/是否定位到我的位置private boolean bmyLocal=true;Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);/在setContentView之前必须先初始化百度地图!切记mBMapMan=new BMapManager(getApplication(); mBMapMan.init(BD_KEY, null); setContentView(R.layout.activity_main); /注意:请在试用setContentView前初始化BMapManager对象,否则会报错 setContentView(R.layout.activity_main); mMapView=(MapView)findViewById(R.id.bmapsView); mMapView.setBuiltInZoomControls(true); /设置启用内置的缩放控件 MapController mMapController=mMapView.getController(); / 得到mMapView的控制权,可以用它控制和驱动平移和缩放 GeoPoint point =new GeoPoint(int)(39.915* 1E6),(int)(116.404* 1E6); /用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6) mMapController.setCenter(point);/设置地图中心点 mMapController.setZoom(12);/设置地图zoom级别 /定位功能代码开始mLocationClient=new LocationClient(this);mLocationClient.setAK(BD_KEY);myOverlay=new MyLocationOverlay(mMapView);LocationClientOption option=new LocationClientOption();option.setOpenGps(true);option.setAddrType(all);/返回的定位结果包含地址信息option.setCoorType(bd09ll);/返回的定位结果是百度经纬度,默认值gcj02/当不设此项,或者所设的整数值小于1000(ms)时,采用一次定位模式。/option.setScanSpan(5000);/设置发起定位请求的间隔时间为5000msoption.disableCache(true);/禁止启用缓存定位option.setPoiNumber(5); /最多返回POI个数option.setPoiDistance(1000); /poi查询距离option.setPoiExtraInfo(true); /是否需要POI的电话和地址等详细信息 mLocationClient.setLocOption(option);/注册位置监听mLocationClient.registerLocationListener(locationListener);if(mLocationClient!=null&!mLocationClient.isStarted()mLocationClient.requestLocation();mLocationClient.start();elseLog.e(LocSDK3, locClient is null or not started);private BDLocationListener locationListener=new BDLocationListener()Overridepublic void onReceiveLocation(BDLocation arg0) Dispose(arg0);Overridepublic void onReceivePoi(BDLocation arg0) Dispose(arg0);private void Dispose(BDLocation location)if(location=null)return; StringBuffer sb = new StringBuffer(256); sb.append(time : ); sb.append(location.getTime(); sb.append(nerror code : ); sb.append(location.getLocType(); sb.append(nlatitude : ); sb.append(location.getLatitude(); sb.append(nlontitude : ); sb.append(location.getLongitude(); sb.append(nradius : ); sb.append(location.getRadius(); if (location.getLocType() = BDLocation.TypeGpsLocation) sb.append(nspeed : ); sb.append(location.getSpeed(); sb.append(nsatellite : ); sb.append(location.getSatelliteNumber(); else if (location.getLocType() = BDLocation.TypeNetWorkLocation) sb.append(naddr : ); sb.append(location.getAddrStr(); /poiLocation if(location.hasPoi() sb.append(nPoi:); sb.append(location.getPoi(); else sb.append(nnoPoi information); /需要定位到我的位置? if(bmyLocal) double lat=location.getLatitude(); double lon=location.getLongitude(); LocationData data=new LocationData(); data.latitude=lat; data.longitude=lon; data.direction=2.0f; myOverlay.setData(data); /检查覆盖物是否存在,存在则修改,否则则添加 if(mMapView.getOverlays().contains(myOverlay) mMapView.getOverlays().set(myOverlayIndex,myOverlay); else myOverlayIndex=mMapView.getOverlays().size(); mMapView.getOverlays().add(myOverlay); GeoPoint geoPoint=new GeoPoint(int)(lat* 1E6),(int)(lon* 1E6); mMapView.getController().setCenter(geoPoint); mMapView.refresh(); bmyLocal=false; Log.e(定位结果:,sb.toString();/创建菜单Overridepublic boolean onCreateOptionsMenu(Menu menu)/组、ID、排序、菜单名menu.add(0,1,1,我的位置).setIcon(R.drawable.root_icon);return true;/处理菜单Overridepublic boolean onOptionsItemSelected(MenuItem item)switch(item.getItemId()case 1: /我的位置bmyLocal=true;/如果客户端定位服务已经启动过了,则直接发起定位请求if(mLocationClient!=null&mLocationClient.isStarted()mLocationClient.requestLocation();else/启动定位服务,启动的时候会自动发起定位请求,默认为requestLocationmLocationClient.start(); break;return true; Override protected void onDestroy() if(mLocationClient!=null&mLocationClient.isStarted() mLocationClient.stop(); mMapView.destroy(); if(mBMapMan!=null) mBMapMan.destroy(); mBMapMan=null; super.onDestroy(); Override protected void onPause() mMapView.onPause(); if(mBMapMan!=null) mBMapMan.stop(); super.onPause(); Override protected void onResume() mMapView.onResume(); if(mBMapMan!=null) mBMapMan.start();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-湖南-湖南房管员四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖南-湖南医技工三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-湖南-湖南保安员三级(高级工)历年参考题库典型考点含答案解析
- 数字化会员服务在2025年零售行业的应用与发展研究报告
- 2025-2030中国纺纱纸锥行业应用潜力与投资盈利预测报告
- 2025年事业单位工勤技能-海南-海南铸造工一级(高级技师)历年参考题库含答案解析
- 2025年储能电池在储能电站储能系统智能化监控中的应用研究报告
- 金融行业审计智能化路径探析:2025年人工智能算法应用报告
- 2025-2030中国笔制造行业发展前景与趋势预测分析报告
- 2025-2030中国立体蓝牙耳塞市场供需现状与销售渠道规划报告
- 2025年发展对象考试题库附含答案
- 2025年兵团基层两委正职定向考录公务员试题(附答案)
- 2025年新专长针灸考试题及答案
- 高三生物一轮复习课件微专题5电子传递链化学渗透假说及逆境胁迫
- DBJ50-T-306-2024 建设工程档案编制验收标准
- 2025四川雅安荥经县国润排水有限责任公司招聘5人笔试历年参考题库附带答案详解
- 2025中国银行新疆区分行社会招聘笔试备考试题及答案解析
- 污水采样培训课件
- 药品医疗器械试题及答案
- 子宫内膜类器官构建与临床转化专家共识解读 2
- 幼师培训:如何上好一节课
评论
0/150
提交评论