百度地图在合适视野范围内显示所有的点
来源:互联网 发布:java使用openoffice 编辑:程序博客网 时间:2024/05/20 17:59
通常地图会显示出多个点,如像行驶轨迹等,往往在屏幕上一次性就全部显示出来,那要怎么设置地图的显示宽高,才能将所有的点合理的显示出来呢。
看看以下的代码实现:
private void setMyLocation() { list = new ArrayList<>(); LatLng ll = new LatLng(24.475982, 118.093132); LatLng ll1 = new LatLng(24.477382, 118.093232); LatLng ll2 = new LatLng(24.478382, 118.093832); LatLng ll3 = new LatLng(24.487382, 118.094232); LatLng ll4 = new LatLng(24.497982, 118.099562); list.add(ll); list.add(ll1); list.add(ll2); list.add(ll3); list.add(ll4); MapStatus.Builder builder = new MapStatus.Builder(); builder.target(ll).zoom(18.0f);// mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); for (LatLng latLng : list) { mBaiduMap.addOverlay(new BaiduMapUtil().setMarker(latLng)); } mBaiduMap.addOverlay(new BaiduMapUtil().Polyline(list));//将所有的坐标显示出来的合理视图 if (isFrist) { mBaiduMap.setOnMapLoadedCallback(new BaiduMap.OnMapLoadedCallback() { @Override public void onMapLoaded() { isFrist=false; mBaiduMap.animateMapStatus(new BaiduMapUtil().setLatLngBounds(list, mMapView)); } }); }else{ mBaiduMap.animateMapStatus(new BaiduMapUtil().setLatLngBounds(list, mMapView)); } }
public class BaiduMapUtil { /** * 绘制Marker,地图上常见的类似气球形状的图层 */ public MarkerOptions setMarker(LatLng latLng) { return setMarker(latLng, R.drawable.icon_defult_marker); } public MarkerOptions setMarker(LatLng latLng, int drawableId) { MarkerOptions markerOptions = new MarkerOptions();//参数设置类 markerOptions.position(latLng);//marker坐标位置 markerOptions.icon(BitmapDescriptorFactory .fromResource(drawableId));//marker图标,可以自定义 markerOptions.draggable(false);//是否可拖拽,默认不可拖拽 markerOptions.anchor(0.5f, 1.0f);//设置 marker覆盖物与位置点的位置关系,默认(0.5f, 1.0f)水平居中,垂直下对齐 markerOptions.alpha(0.8f);//marker图标透明度,0~1.0,默认为1.0 markerOptions.animateType(MarkerOptions.MarkerAnimateType.none);//marker出现的方式,从天上掉下 markerOptions.flat(false);//marker突变是否平贴地面 markerOptions.zIndex(1);//index return markerOptions; } /** * 绘制折线 */ public PolylineOptions Polyline(List<LatLng> points) { PolylineOptions polylineOptions = new PolylineOptions();//参数设置类 polylineOptions.width(10);//宽度,单位:像素 polylineOptions.color(0xAAFF0000);//设置折线颜色 polylineOptions.points(points);//折线顶点坐标集 return polylineOptions; } /** * 多个点,在Android里面显示合理的缩放级 */ public MapStatusUpdate setLatLngBounds(List<LatLng> points, MapView mMapView) { LatLngBounds.Builder builder2 = new LatLngBounds.Builder(); for (LatLng p : points) { builder2 = builder2.include(p); } LatLngBounds latlngBounds = builder2.build(); MapStatusUpdate u = MapStatusUpdateFactory.newLatLngBounds(latlngBounds, mMapView.getWidth(), mMapView.getHeight()); return u; }}
//将所有的坐标显示出来的合理视图 if (isFrist) { mBaiduMap.setOnMapLoadedCallback(new BaiduMap.OnMapLoadedCallback() { @Override public void onMapLoaded() { isFrist=false; mBaiduMap.animateMapStatus(new BaiduMapUtil().setLatLngBounds(list, mMapView)); } }); }else{ mBaiduMap.animateMapStatus(new BaiduMapUtil().setLatLngBounds(list, mMapView)); }这段代码为显示合理范围的核心代码,加入是否为首次的判断,因为要在OnMapLoadedCallback中实现是关键,否则mapview的with和height取得是0,如果在其他视觉范围内,想恢复到这个合理的范围则经过首次加载后,就不会再执行OnMapLoadedCallback方法,所以要判断是否为第一次加载的状态。
阅读全文
0 0
- 百度地图在合适视野范围内显示所有的点
- 巧妙解决百度地图在合适视野范围内显示所有的点
- 百度地图在合适的视野显示所有标注
- 百度地图JS使所有标注都在视野范围内
- [Android]百度地图,使所有Overlay都在合适的视野内
- 百度地图显示一定范围内的点
- 百度地图查询视野范围内的建筑物
- Android 百度地图使几点始终在合适的屏幕范围内显示
- 百度地图api怎么判断点是否在当前视野范围内
- 百度地图查询视野范围内的建筑物(二)
- 动态将所有点放在最佳视野内-百度地图
- 关于百度地图 把所有覆盖物放在一个视野里的问题
- android 百度地图多个点显示在屏幕范围内的地图上
- 关于百度地图(四):点聚合及只显示屏幕范围内的marker
- 百度地图API:如何查询数自己的数据库标注地图并让标注显示在最佳视野内
- 百度地图API:如何查询数自己的数据库标注地图并让标注显示在最佳视野内
- 百度地图API:如何查询数自己的数据库标注地图并让标注显示在最佳视野内
- Android高德地图如何让所有的轨迹在屏幕范围内都显示出来.
- 【Python】面向对象class
- SequoiaDB巨杉数据库深度整合Spark 2.0,国内首家Spark认证数据库
- Asp.Net MVC4通过id更新表单
- 解决接串口设备后鼠标乱飘
- 【Redis源码剖析】
- 百度地图在合适视野范围内显示所有的点
- scala中的match详解
- 多线程基础四(三)、yield方法、线程优先级以及守护线程
- Oracle之SQL子查询
- 大公司里怎样开发和部署前端代码?
- Git详解之三 Git分支
- JSONObject的put方法覆盖已经添加过的数据,造成数据污染解决办法
- 使用React实现图片画廊(送女朋友必备)
- 股票买卖盘交易深度图