概述
/**
* 定位绘图
*
* @author wuxin
* @time 10:29
*/
public class DrawLocate {
private static Graphic graphicCenterPoint;
private static Graphic graphicErrorRound;
/**
* 绘制定位
* @param center 中心点
* @param radius 误差圆半径(单位:米)
* @param graphicsLayer 绘制图层
* @param centerImage 中心点图片
* @param errorRoundColorFill 误差圆颜色
* @param errorRoundColorLine 误差圆边线颜色
*/
public static void drawPoint(Point center, double radius,
GraphicsLayer graphicsLayer, Drawable centerImage,
int errorRoundColorFill, int errorRoundColorLine) {
/* 清除图层 */
if(graphicsLayer != null){
graphicsLayer.removeAll();
}
/* 绘制中心点 */
PictureMarkerSymbol symbol = new PictureMarkerSymbol(centerImage);
symbol.setOffsetY(10.0f);
graphicCenterPoint = new Graphic(center, symbol);
/* 绘制误差圆 */
if(radius > 0){
Polygon polygon = new Polygon();
getCircle(center, radius, polygon);
FillSymbol fillSymbol = new SimpleFillSymbol(errorRoundColorFill);
fillSymbol.setAlpha(10);
SimpleLineSymbol lineSymbol = new SimpleLineSymbol(errorRoundColorLine, 2.0f, SimpleLineSymbol.STYLE.SOLID);
fillSymbol.setOutline(lineSymbol);
graphicErrorRound = new Graphic(polygon, fillSymbol);
}
/* 绘制上图 */
graphicsLayer.addGraphics(new Graphic[]{graphicCenterPoint, graphicErrorRound});
}
/**
* 获取圆的图形对象
*
* @param center
* @param radius
* @return
*/
public static Polygon getCircle(Point center, double radius) {
Polygon polygon = new Polygon();
getCircle(center, radius, polygon);
return polygon;
}
/**
*
* @param center
*
中心点
* @param radius
*
半径(米)
* @param circle
*
圆的图形对象
*/
private static void getCircle(Point center, double radius, Polygon circle) {
circle.setEmpty();
Point[] points = getPoints(center, radius);
circle.startPath(points[0]);
for (int i = 1; i < points.length; i++)
circle.lineTo(points[i]);
}
/**
* 通过中心点和半径计算得出圆形的边线点集合
*
* @param center
* @param radius
* @return
*/
private static Point[] getPoints(Point center, double radius) {
Point[] points = new Point[50];
double sin;
double cos;
double x;
double y;
for (double i = 0; i < 50; i++) {
sin = Math.sin(Math.PI * 2 * i / 50);
cos = Math.cos(Math.PI * 2 * i / 50);
x = center.getX() + radius * sin;
y = center.getY() + radius * cos;
points[(int) i] = new Point(x, y);
}
return points;
}
}
引用方式:
DrawLocate.drawPoint(point, location.getRadius(), baiduLayer, image, Color.parseColor("#0099FF"), Color.parseColor("#0099FF"));
最后
以上就是淡然啤酒为你收集整理的ArcGIS For Android 定位绘图工具 [中心点,误差圆]的全部内容,希望文章能够帮你解决ArcGIS For Android 定位绘图工具 [中心点,误差圆]所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复