您的位置:首页 > 其它

百度地图绘制矩形区域

2017-04-24 10:38 375 查看
百度地图绘制多边形区域

/**
* 绘制矩形
*/
private void drawRec() {
double latitude=Double.parseDouble(coordinates.getLatitude());
double longitude= Double.parseDouble(coordinates.getLongitude());
LatLng pt1 = new LatLng(latitude + 0.02, longitude);
LatLng pt2 = new LatLng(latitude, longitude - 0.03);
LatLng pt4 = new LatLng(latitude - 0.02, longitude );
LatLng pt5 = new LatLng(latitude, longitude + 0.03);
List<LatLng> points = new ArrayList<>();
points.add(pt1);
points.add(pt2);
points.add(pt4);
points.add(pt5);
//多边形覆盖物
PolygonOptions polygonOptions = new PolygonOptions();
polygonOptions.points(points);
polygonOptions.fillColor(0xAAFFFF00);
polygonOptions.stroke(new Stroke(2, 0xAA00FF00));
mBaiduMap.addOverlay(polygonOptions);
}
添加文字遮盖物
LatLng latLng = new LatLng(latitude, longitude);
TextOptions textOptions = new TextOptions();
textOptions.bgColor(0xAAFFFF00)  //設置文字覆蓋物背景顏色
.fontSize(28)  //设置字体大小
.fontColor(0xFFFF00FF)// 设置字体颜色
.text("我在这里啊!!!!")  //文字内容
.rotate(-30)  //设置文字的旋转角度
.position(latLng);// 设置位置
bdMap.addOverlay(textOptions);
GroundOverlay(地形图图层覆盖物)
LatLng southwest = new LatLng(latitude - 0.01, longitude - 0.012);//西南
LatLng northeast = new LatLng(latitude + 0.01, longitude + 0.012);//东北
LatLngBounds bounds = new LatLngBounds.Builder().include(southwest)
.include(northeast).build();//得到一个地理范围对象
BitmapDescriptor bitmap2 = BitmapDescriptorFactory
.fromResource(R.drawable.csdn_blog);
GroundOverlayOptions groundOverlayOptions = new GroundOverlayOptions();
groundOverlayOptions.image(bitmap2);//显示的图片
groundOverlayOptions.positionFromBounds(bounds);//显示的位置
groundOverlayOptions.transparency(0.7f);//显示的透明度
bdMap.addOverlay(groundOverlayOptions);
PolylineOptions(折线覆盖物)
CircleOptions circleOptions = new CircleOptions();
circleOptions.center(new LatLng(latitude, longitude));//设置圆心坐标
circleOptions.fillColor(0XFFfaa755);//圆的填充颜色
circleOptions.radius(150);//设置半径
circleOptions.stroke(new Stroke(5, 0xAA00FF00));//设置边框
bdMap.addOverlay(circleOptions);
DotOptions(圆点覆盖物)
DotOptions dotOptions = new DotOptions();
dotOptions.center(new LatLng(latitude, longitude));//设置圆心坐标
dotOptions.color(0XFFfaa755);//颜色
dotOptions.radius(25);//设置半径
bdMap.addOverlay(dotOptions);
CircleOptions(圆形(空心)覆盖物)
CircleOptions circleOptions = new CircleOptions();
circleOptions.center(new LatLng(latitude, longitude));//设置圆心坐标
circleOptions.fillColor(0XFFfaa755);//圆的填充颜色
circleOptions.radius(150);//设置半径
circleOptions.stroke(new Stroke(5, 0xAA00FF00));//设置边框
bdMap.addOverlay(circleOptions);
ArcOptions(弧线覆盖物)
LatLng pt1 = new LatLng(latitude, longitude - 0.01);
LatLng pt2 = new LatLng(latitude - 0.01, longitude - 0.01);
LatLng pt3 = new LatLng(latitude, longitude + 0.01);
ArcOptions arcOptions = new ArcOptions();
arcOptions.points(pt1, pt2, pt3);//设置弧线的起点、中点、终点坐标
arcOptions.width(5);//线宽
arcOptions.color(0xFF000000);
bdMap.addOverlay(arcOptions);
弹出窗覆盖物
/**
* 显示弹出窗口覆盖物
*/
private void displayInfoWindow(final LatLng latLng) {
// 创建infowindow展示的view
Button btn = new Button(getApplicationContext());
btn.setBackgroundResource(R.drawable.popup);
btn.setText("点我点我~");
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory
.fromView(btn);
// infowindow点击事件
OnInfoWindowClickListener infoWindowClickListener = new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick() {
reverseGeoCode(latLng);
//隐藏InfoWindow
bdMap.hideInfoWindow();
}
};
// 创建infowindow
InfoWindow infoWindow = new InfoWindow(bitmapDescriptor, latLng, -47,
infoWindowClickListener);

// 显示InfoWindow
bdMap.showInfoWindow(infoWindow);
}
地理编码与反地理编码
// 创建地理编码检索实例
GeoCoder geoCoder = GeoCoder.newInstance();
//
OnGetGeoCoderResultListener listener = new OnGetGeoCoderResultListener() {
// 反地理编码查询结果回调函数
@Override
public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {
if (result == null
|| result.error != SearchResult.ERRORNO.NO_ERROR) {
// 没有检测到结果
Toast.makeText(MainActivity.this, "抱歉,未能找到结果",
Toast.LENGTH_LONG).show();
}
Toast.makeText(MainActivity.this,
"位置:" + result.getAddress(), Toast.LENGTH_LONG)
.show();
}

// 地理编码查询结果回调函数
@Override
public void onGetGeoCodeResult(GeoCodeResult result) {
if (result == null
|| result.error != SearchResult.ERRORNO.NO_ERROR) {
// 没有检测到结果
}
}
};
// 设置地理编码检索监听者
geoCoder.setOnGetGeoCodeResultListener(listener);
//
geoCoder.reverseGeoCode(new ReverseGeoCodeOption().location(latLng));
// 释放地理编码检索实例
// geoCoder.destroy();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐