Android 百度地图开发(二)
前面我们一起了解了百度地图的申请与集成Android 百度地图开发(一),今天我们接着来学习百度地图。
今天主要来了解如下问题:
1.百度地图的生命周期控制
上一篇张我们已经在布局文件里增加了mapView对象,现在我们通过findViewById拿到mapView对象,可以控制mapView的生命周期,然后又可以通过mapView的getmap方法获取到BaiduMap对象,可以对地图进行设置。
mapView = findViewById(R.id.mapView);mBaiduMap = mapView.getMap();
在onResume ,onPause,onDestroy中分别设置MapView的生命周期
@Overrideprotected void onResume() {mapView.onResume();super.onResume();}@Overrideprotected void onPause() {mapView.onPause();super.onPause();}@Overrideprotected void onDestroy() {mLocationClient.stop();mBaiduMap.setMyLocationEnabled(false);mapView.onDestroy();mapView = null;super.onDestroy();}
2.百度地图的一些属性设置
交通图,热力图,图层定位等,具体可看官方文档
//开启交通图,可看路况情况mBaiduMap.setTrafficEnabled(true);//开启热力图
// mBaiduMap.setBaiduHeatMapEnabled(true);//开启图层定位mBaiduMap.setMyLocationEnabled(true);mBaiduMap.setIndoorEnable(true);//打开室内图,默认为关闭状态mUisettings = mBaiduMap.getUiSettings();mUisettings.setCompassEnabled(true);//显示指南针mBaiduMap.setOnMapClickListener(onMapClickListener);mBaiduMap.setOnMarkerClickListener(onMarkerClickListener);
3.百度地图定位以及中心位置控制
定位需要开启GPS,打开app的位置权限,然后借助百度的BDAbstractLocationListener监听定位的信息,听歌对LocationClient设置监听接收每次定位的位置
public class MylocationListener extends BDAbstractLocationListener {@Overridepublic void onReceiveLocation(BDLocation bdLocation) {//mapView 销毁后不在处理新接收的位置if (bdLocation == null || mapView == null) {return;}if (isFirst) {isFirst = false;SetCenter(bdLocation.getLatitude(), bdLocation.getLongitude());}MyLocationData locData = new MyLocationData.Builder()
// .accuracy(bdLocation.getRadius())
// // 此处设置获取到的方向信息,顺时针0-360
// .direction(bdLocation.getDirection()).latitude(bdLocation.getLatitude()).longitude(bdLocation.getLongitude()).build();mBaiduMap.setMyLocationData(locData);}}//初始化中心位置private void SetCenter(double lat, double lon) {LatLng cenpt = new LatLng(lat, lon); //设定中心点坐标//图标 设置中心覆盖物
// BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.mipmap.man);
// // 构建MarkerOption,用于在地图上添加
// OverlayOptions option = new MarkerOptions().position(cenpt).icon(bitmap).draggable(true);
// // 在地图上添加Marker,并显示
// mBaiduMap.addOverlay(option);//移动到中心点MapStatus mMapStatus = new MapStatus.Builder()//定义地图状态.target(cenpt).zoom(16).build(); //定义Map对象StatusUpdate,以便描述地图状态将要发生的变化MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus);mBaiduMap.setMapStatus(mMapStatusUpdate);//改变地图状态AddOverLays();}//定位private void GetLocations() {mLocationClient = new LocationClient(this);LocationClientOption option = new LocationClientOption();//开启gpsoption.setOpenGps(true);//设置坐标类型option.setCoorType("bd0911");//设置刷新时间option.setScanSpan(1000);mLocationClient.setLocOption(option);//注册位置信息监听MylocationListener mylocationListener = new MylocationListener();mLocationClient.registerLocationListener(mylocationListener);mLocationClient.start();}
4.百度地图overlays
地图的marker有点、线,弧线,各种面等,详情请看http://lbsyun.baidu.com/index.php?title=androidsdk/guide/render-map/point
下面简单的绘制一下点、线
private void AddOverLays() {//绘制点MapUtils.getInstance().DrawMarkersPoint(R.mipmap.ic_bjsj,22.532d,114.0088d,mBaiduMap);List<LatLng> points=new ArrayList<>();points.add(new LatLng(22.530d,114.0007d));points.add(new LatLng(22.551d,114.01101d));points.add(new LatLng(22.541d,114.00087d));
// 绘制线MapUtils.getInstance().DrawMarkerLine(points, Color.parseColor("#0000ff"),12,mBaiduMap);}
MapUtils代码:
package com.kty.inspection.Utils;import android.graphics.Point;
import android.os.Bundle;import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.map.OverlayOptions;
import com.baidu.mapapi.map.PolygonOptions;
import com.baidu.mapapi.map.PolylineOptions;
import com.baidu.mapapi.model.LatLng;import java.util.List;/*** author : 肖波* e-mail : xiaoboabc168@163.com* date : 2019/2/22.*/public class MapUtils {private MapUtils() {}public static MapUtils getInstance() {return MapUtilsManager.instance;}public static class MapUtilsManager {private static final MapUtils instance = new MapUtils();}/*** 地图上添加标记点** @param drawableId 要描绘的图片资源id* @param latitude 纬度* @param longitude 经度* @param baiduMap 百度地图对象*/public void DrawMarkersPoint(int drawableId, double latitude, double longitude, BaiduMap baiduMap) {if (baiduMap == null) {return;}//定义Maker坐标点LatLng latLng = new LatLng(latitude, longitude);//构建Marker图标BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(drawableId);//构建MarkerOption,用于在地图上添加MarkerOverlayOptions options = new MarkerOptions().position(latLng).icon(bitmap).animateType(MarkerOptions.MarkerAnimateType.jump).visible(true);//在地图上添加Marker,并显示baiduMap.addOverlay(options);}/*** 画marker点* @param options OverlayOptions* @param baiduMap 地图对象*/public void DrawMarkerPoint(OverlayOptions options,BaiduMap baiduMap){if (baiduMap==null || options==null){return;}
// OverlayOptions op=new MarkerOptions().position()//位置坐标,latLng对象
// .alpha(0.8f)//透明度0-1
// .anchor(0.8f,1)//描点比例
// .animateType(MarkerOptions.MarkerAnimateType.jump)//动画类型,none drop grow jump
// .draggable(true)//是否可拖拽
// .extraInfo(new Bundle())//额外信息
// .fixedScreenPosition(new Point(40,80))//位于屏幕位置,参数坐标点point
// .flat(true)//是否平贴地图
// .icon(BitmapDescriptorFactory.fromResource(0))//ico,BitmapDescriptor对象.icons()//
// .perspective(true)//是否开启近大远小效果
// .rotate(270)//旋转角度
// .title("maker1")//标题
// .visible(true);//是否显示baiduMap.addOverlay(options);}/*** 地图marker画线* @param points* @param color* @param width* @param baiduMap*/public void DrawMarkerLine(List<LatLng> points,int color,int width,BaiduMap baiduMap){OverlayOptions options=new PolylineOptions().width(12).points(points).color(color);baiduMap.addOverlay(options);}}
以上为今天的内容,感谢阅读!
Android 百度地图开发(二)相关推荐
- [android] 百度地图开发 (二).定位城市位置和城市POI搜索
一. 百度地图城市定位和POI搜索知识 上一篇文章"百度地图开发(一)"中讲述了如何申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述如何定位城市位置.定位 ...
- [android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题
前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索",主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Intere ...
- Android百度地图开发(二)定位之自动定位及标注(及定位几日内瓦或坐标4.9E-324问题)
接上篇Android百度地图开发(一)之Hello BaiduMap 1.环境配置: 新增权限如下 <!-- 这个权限用于进行网络定位--> <uses-permission and ...
- Android studio百度地图SDK开发 2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划
2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划 开发前配置,显示基本地图,实时定位等查看之前代码,此博客紧接上一博客:https://blog.csdn.ne ...
- 超详细的Android百度地图开发:在APP上定位并显示出来
超详细的Android百度地图开发:在APP上定位并显示出来 一 写在前面 二 注册百度开发者账户.申请API KEY 三.代码实现 四.问题 五.总结 一 写在前面 由于项目所需,我需要在手机APP ...
- Android百度地图开发入门教程
Android百度地图开发入门教程 1.平台注册登录 2.创建应用 3.Android studio配置 4.代码编写 5.最终效果(建议真机) 1.平台注册登录 登录百度地图开放平台网站注册并登录 ...
- Android百度地图(二)结合方向传感器我们自己定位哪里走
Android百度地图(二)结合方向传感器我们自己定位哪里走 本文代码在http://blog.csdn.net/xyzz609/article/details/51943556的基础上进一步修改,有 ...
- android百度地图开发
android百度地图开发 使用android开发百度地图需要事先在百度地图开发者平台上注册账号并下载百度地图相关的工具包,之后配置到自己的程序中,具体可参考https://lbsyun.baidu. ...
- android 百度地图开发 别人用不了,Android百度地图开发的那些不足之处
Android百度地图开发的那些不足之处,最近做的项目中百度地图是很重要的一个模块,其中实现了定位.自定义Marker图标.线路规划.SuggestionSearch检索.地图截图以及导航等功能.因为 ...
最新文章
- 鼠标终将消失,未来我们有哪些人机交互方式?
- 为何不采用“两次握手”建立连接?
- muse ui tabs背景颜色字体颜色
- 【Programming Clip】06、07年清华计算机考研上机试题解答(个别测试用例无法通过)...
- TODO:Laravel增加验证码
- dubbo中使用kryo进行对象序列化,反序列化时报错
- 我遇到了Hibernate异常
- 特斯拉股价周一大跌8.55% 市值缩水640亿美元
- 垂直搜索引擎完整实现
- main函数的argc和argv
- 基于STM32和ESP8266的智能灌溉系统【土壤湿度监测继电器OLED显示WIFI控制器APP水泵】
- MathType 7试用版写论文科研必备神器
- Android设置图标背景透明
- 当前安全设置不允许下载该文件的解决办法
- 转 vo、po、dto、bo、pojo、entity、mode如何区分
- Linux中参数命令有的是一个横杠有的是两个横杠的区别
- OpenGL中PBR着色器的实现
- lpp降维算法matlab,dimension-reduct method 多种降维算法,包括lle,lpp,ltsa matlab 238万源代码下载- www.pudn.com...
- HTML入门笔记12-HTML中备注写法
- 非常实用的开发小工具