百度地图java sdk_百度地图-地图SDK常用方法总结(一)

最近在做关于地图的项目,这里将用到的关于地图SDK的相关方法做一个总结归纳。

初始化

SDKInitializer.initialize(Context)

复制代码

MapView 与 BaiduMap

简单配置

mapView.showScaleControl(showScaleControl);//是否显示比例尺

mapView.showZoomControls(showZoomControl);//是否显示缩放按钮

baiduMap.setCompassEnable(compassEnable);//是否显示指南针

baiduMap.setTrafficEnabled(boolean enabled)//设置是否打开交通图层

baiduMap.showMapPoi(false);//是否显示地图标注(各种道路地点等)

//设置中心坐标与缩放比例

//地点坐标可以在以下网址获得http://api.map.baidu.com/lbsapi/getpoint/index.html

//默认北京天安门的坐标,缩放等级最大为4

LatLng center = new LatLng(latitude, longitude);

MapStatus.Builder builder = new MapStatus.Builder();

builder.target(center);

if (4 <= zoom && zoom <= 20) {

builder.zoom(zoom);

}

MapStatus mapStatus = builder.build();

baiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(mapStatus));

复制代码/**

* 地图显示区域

*

* @param latLng 判断改点是否在屏幕中,若不在则地图缩放至能包含该点

*/

public void setMapCenterBounds(LatLng latLng){

//当前地图区域不包含这个点,则需要缩放

boolean needZoom = !baiduMap.getMapStatus().bound.contains(latLng);

if (needZoom) {

LatLngBounds.Builder latLngBuilder = new LatLngBounds.Builder();

latLngBuilder.include(latLng);

//更新显示区域

baiduMap.setMapStatus(MapStatusUpdateFactory.newLatLngBounds(latLngBuilder.build()));

//缩放一倍,留出边界

MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.zoomBy(-1f);

baiduMap.setMapStatus(mapStatusUpdate);

}

}

//如果是需要显示一个集合中的所有坐标点,则只需遍历该集合并且连续调用include(Latlng latlng)即可

复制代码

MapView:

用来显示地图的控件,手势识别由该View处理,同时该View的生命周期应该与Activity或Fragment同步

android:id="@+id/mapView"

android:layout_width="match_parent"

android:layout_height="match_parent" />

复制代码

addView():

基于屏幕坐标或者经纬度添加一个View,这里的坐标指定的是View的左下角坐标

Point point = new Point(50,240);

ImageView imageView = new ImageView(this);

imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));

imageView.setImageDrawable(getResources().getDrawable(R.drawable.huaji));

imageView.setBackgroundColor(Color.BLACK);

MapViewLayoutParams params = new MapViewLayoutParams.Builder()

.layoutMode(MapViewLayoutParams.ELayoutMode.absoluteMode)//添加View以屏幕坐标为准

.point(point)//屏幕坐标

// .layoutMode(MapViewLayoutParams.ELayoutMode.mapMode) //添加View以经纬度坐标为准

// .position(new LatLng(31.1519, 121.555972))//经纬度坐标

.align(MapViewLayoutParams.ALIGN_LEFT,MapViewLayoutParams.ALIGN_BOTTOM)//对其方式,(x方向,y方向)

.height(300)//高

.width(200)//宽

.yOffset(0)//y方向偏移量

.build();

mMapView.addView(imageView,params);

复制代码

inRangeOfView(float x, float y)

判断当前触摸点是否在地图上,返回boolean

BaiduMap:

地图控制器-手势监听、添加覆盖物、控制地图各种相关参数

setMapType(int type)

设置地图模式

BaiduMap.MAP_TYPE_NORMAL 普通图

BaiduMap.MAP_TYPE_SATELLITE 卫星图

BaiduMap.MAP_TYPE_NONE 卫星图

addOverlay(OverlayOptions options)、addOverlays(java.util.List options)

添加覆盖物

//绘制多个点

List points = new ArrayList<>();

points.add(new LatLng(31.153517, 121.553807));

points.add(new LatLng(31.154073, 121.556924));

points.add(new LatLng(31.15123, 121.557688));

points.add(new LatLng(31.150727, 121.554571));

//点的纹理图片

BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.icon_mark1);

List markerOptions = new ArrayList<>();

//循环设置各个点的位置及纹理

for (int i = 0; i < points.size(); i++) {

markerOptions.add(new MarkerOptions()

.extraInfo(new Bundle())//传递相关数据,在点击事件OnMarkerClickListener回调中可以获取该信息

.position(points.get(i))

.icon(icon));

}

//添加所有的点

List overLays=mBaiduMap.addOverlays(markerOptions);

//若要移除这些点(不要和集合的remove()搞混了)

//for (Overlay overlay : overlays) {

//

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值