Android 百度地图开发(二)

编程入门 行业动态 更新时间:2024-10-27 00:26:07

Android 百度<a href=https://www.elefans.com/category/jswz/34/1770718.html style=地图开发(二)"/>

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有点、线,弧线,各种面等,详情请看.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 百度地图开发(二)

本文发布于:2023-07-03 14:16:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1007550.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:地图   Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!