Android高德地图开发(3)——路况+定位
来源:互联网 发布:使命召唤5枪支数据 编辑:程序博客网 时间:2024/04/29 07:25
在上篇的基础上,我们继续添加路况和定位功能:
1.路况图层显示
高德地图封装了交通路况信息,通过调用AMap 类的方法setTrafficEnabled(),显示路况信息。
在fragment_map中添加路况图层控制按钮
<!--路况图层控制按钮--><CheckBox android:id="@+id/louk_btn" android:layout_margin="20dp" android:layout_alignParentRight="true" android:layout_width="52dp" android:button="@color/transparent" android:background="@drawable/map_traffic" android:layout_height="52dp" />
在initMap的setUpMap()方法中控制路况图层:
//路况图层触发事件mCBLouk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //判断路况图层是否显示 if (mCBLouk.isChecked()){ aMap.setTrafficEnabled(true); mCBLouk.setBackgroundColor(getResources().getColor(R.color.light_gery)); mCBLouk.setButtonDrawable(getResources().getDrawable(R.drawable.map_traffic_hl)); }else{ aMap.setTrafficEnabled(false); mCBLouk.setBackgroundColor(getResources().getColor(R.color.light_gery)); mCBLouk.setButtonDrawable(getResources().getDrawable(R.drawable.map_traffic)); } }});
2.定位
2.0以上版本的定位和百度定位类似,专门开启了一个服务去定位,下面主要介绍2.0以上版本的定位:
2.1 首先在manifest.xml文件中配置服务
<service android:name="com.amap.api.location.APSService"></service>
2.2 在setUpMap(参考上篇)函数中加载startPostion()方法,开始请求定位。
/** * 开始定位 */public void startPostion() { // 初始化定位, mlocationClient = new AMapLocationClient(getActivity().getApplicationContext()); // 初始化定位参数 mLocationOption = new AMapLocationClientOption(); //单次定位 mLocationOption.setOnceLocation(true); // 设置定位模式为高精度定位 mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); // 设置定位回调监听 mlocationClient.setLocationListener(this); // 设置定位参数 mlocationClient.setLocationOption(mLocationOption); //请求位置 mlocationClient.startLocation();}/** * long类型时间格式化 */public String convertToTime(long time) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(time); return df.format(date);}
2.2 在onLocationChanged中返回定位数据,然后在地图上标注定位图标。
/** * 混合定位回调函数 */@Overridepublic void onLocationChanged(AMapLocation location) { if (location != null && location.getErrorCode() == 0) { Double geoLat = location.getLatitude(); Double geoLng = location.getLongitude(); mMarkerA.setPosition(new LatLng(geoLat, geoLng)); u = CameraUpdateFactory.newLatLngZoom(new LatLng(geoLat, geoLng), 18); aMap.animateCamera(u); String cityCode = ""; String desc = ""; Bundle locBundle = location.getExtras(); if (locBundle != null) { cityCode = locBundle.getString("citycode"); desc = locBundle.getString("desc"); } String str = ("定位成功:(" + geoLng + "," + geoLat + ")" + "\n精 度 :" + location.getAccuracy() + "米" + "\n定位方式:" + location.getProvider() + "\n定位时间:" + convertToTime(location.getTime()) + "\n城市编码:" + cityCode + "\n位置描述:" + desc + "\n省:" + location.getProvince() + "\n市:" + location.getCity() + "\n区(县):" + location.getDistrict() + "\n区域编码:" + location .getAdCode()); } else { }}
2.3 退出时,停止定位服务。
@Overridepublic void onPause() { super.onPause(); // 停止定位 mlocationClient.stopLocation();}public void onDestroy() { mlocationClient.onDestroy(); super.onDestroy();}
0 0
- Android高德地图开发(3)——路况+定位
- Android开发笔记----高德地图定位
- android开发二--------高德地图定位
- Android学习历程——高德地图学习开发之显示地图,定位
- 最新基于高德地图的android进阶开发(3)GPS地图定位
- Android 高德地图——地图定位
- Android 高德地图SDK(定位)
- Android 高德地图定位
- android高德地图定位
- 高德地图LBS开发定位--android客户端
- Android开发实现高德地图定位详解
- Android开发实现高德地图定位详解
- Android开发之高德地图实现定位
- Android开发之高德地图实现定位
- (转)Android开发实现高德地图定位详解
- Android 高德地图2.80新版地图开发详解(本地定位/地图显示/Mark标记/camera移动和缩放)
- iOS开发——高德地图调研之显示地图、定位与地理编码等
- mapabc地图开发之定位篇(GPS+谷歌基站定位+高德基站定位)
- ${pageContext.request.contextPath} JSP取得绝对路径
- C++引用&和指针在作为形参时的区别
- redis队列及多线程应用
- sqlite3数据库的使用
- springmvc学习3:处理器映射器和适配器
- Android高德地图开发(3)——路况+定位
- Hibernate常见的Exception
- iOS 关于屏幕旋转shouldAutorotate
- 基于Spring框架的Shiro配置
- UVALive 7338 C - Toll Management IV
- 8 种 NoSQL 数据库系统对比
- Caffe学习系列(19): 绘制loss和accuracy曲线
- 设计模式之生成器模式
- Unity3D MonoBehaviour 的简单翻译和理解(不定时更新)