osmdroid API解读(十二)
来源:互联网 发布:淘宝店铺怎么收藏不了 编辑:程序博客网 时间:2024/05/18 00:16
osmdroid API解读(十二)
osmdroid-android org.osmdroid.views.overlay.simplefastpoint包
本包的目的在于方便的添加一系列的点在Overlay上。
1. LabelledGeoPoint
带有标签的地理点,在GeoPoint的基础上添加了mLabel属性。
public class LabelledGeoPoint extends GeoPoint { private String mLabel; ...}
2. SimplePointTheme
一个管理多个IGeoPoint的类,内置一个List来管理这些点。你可以添加带标签或不带标签两种类型的GeoPoints。此类实现了SimpleFastPointOverlay.PointAdapter,方便在SimpleFastPointOverlay中管理这些点
/** * This class is just a simple wrapper for a List of {@link IGeoPoint}s to be used in * {@link SimpleFastPointOverlay}. Can be used for unlabelled or labelled GeoPoints. Be sure to set * the labelled parameter of the constructor to match the kind of points. * More complex cases should implement {@link SimpleFastPointOverlay.PointAdapter}, not extend this * one. * Created by Miguel Porto on 26-10-2016. */public final class SimplePointTheme implements SimpleFastPointOverlay.PointAdapter { private final List<IGeoPoint> mPoints; private boolean mLabelled; public SimplePointTheme(List<IGeoPoint> pPoints, boolean labelled) { mPoints = pPoints; mLabelled = labelled; } @Override public int size() { return mPoints.size(); } @Override public IGeoPoint get(int i) { return mPoints.get(i); } @Override public boolean isLabelled() { return mLabelled; } /** * NOTE: this iterator will be called very frequently, avoid complicated code. * @return */ @Override public Iterator<IGeoPoint> iterator() { return mPoints.iterator(); }}
3. SimpleFastPointOverlayOptions
用于绘制点的工具。
public class SimpleFastPointOverlayOptions { public enum RenderingAlgorithm {NO_OPTIMIZATION, MEDIUM_OPTIMIZATION, MAXIMUM_OPTIMIZATION}//绘制算法 public enum Shape {CIRCLE, SQUARE}//绘制形状 public enum LabelPolicy {ZOOM_THRESHOLD, DENSITY_THRESHOLD} protected Paint mPointStyle;//点的画笔工具 protected Paint mSelectedPointStyle;//被选择点的画笔工具 protected Paint mTextStyle;//标注字的风格 protected float mCircleRadius = 5;//点圆角大小 protected float mSelectedCircleRadius = 13;//被选择点的圆角大小 protected boolean mClickable = true;//可点击性 protected int mCellSize = 10; //格网尺寸 protected RenderingAlgorithm mAlgorithm = RenderingAlgorithm.MAXIMUM_OPTIMIZATION;//绘制算法 protected Shape mSymbol = Shape.CIRCLE;//点的形状 protected LabelPolicy mLabelPolicy = LabelPolicy.ZOOM_THRESHOLD; protected int mMaxNShownLabels = 250; protected int mMinZoomShowLabels = 11; public SimpleFastPointOverlayOptions() { mPointStyle = new Paint(); mPointStyle.setStyle(Paint.Style.FILL); mPointStyle.setColor(Color.parseColor("#ff7700")); mSelectedPointStyle = new Paint(); mSelectedPointStyle.setStrokeWidth(5); mSelectedPointStyle.setStyle(Paint.Style.STROKE); mSelectedPointStyle.setColor(Color.parseColor("#ffff00")); mTextStyle = new Paint(); mTextStyle.setStyle(Paint.Style.FILL); mTextStyle.setColor(Color.parseColor("#ffff00")); mTextStyle.setTextAlign(Paint.Align.CENTER); mTextStyle.setTextSize(24); } //获取默认的点图层SimpleFastPointOverlayOptions public static SimpleFastPointOverlayOptions getDefaultStyle() { return new SimpleFastPointOverlayOptions(); } //设置点的风格 public SimpleFastPointOverlayOptions setPointStyle(Paint style) { mPointStyle = style; return this; } //设置被选择点的风格 public SimpleFastPointOverlayOptions setSelectedPointStyle(Paint style) { mSelectedPointStyle = style; return this; } //设置圆角 public SimpleFastPointOverlayOptions setRadius(float radius) { mCircleRadius = radius; return this; } //设置被选择点的圆角 public SimpleFastPointOverlayOptions setSelectedRadius(float radius) { mSelectedCircleRadius = radius; return this; } //设置可点击性 public SimpleFastPointOverlayOptions setIsClickable(boolean clickable) { mClickable = clickable; return this; } public SimpleFastPointOverlayOptions setCellSize(int cellSize) { mCellSize = cellSize; return this; } public SimpleFastPointOverlayOptions setAlgorithm(RenderingAlgorithm algorithm) { mAlgorithm = algorithm; return this; } public SimpleFastPointOverlayOptions setSymbol(Shape symbol) { mSymbol = symbol; return this; } public SimpleFastPointOverlayOptions setTextStyle(Paint textStyle) { mTextStyle = textStyle; return this; } public SimpleFastPointOverlayOptions setMinZoomShowLabels(int minZoomShowLabels) { mMinZoomShowLabels = minZoomShowLabels; return this; } public SimpleFastPointOverlayOptions setMaxNShownLabels(int maxNShownLabels) { mMaxNShownLabels = maxNShownLabels; return this; } public SimpleFastPointOverlayOptions setLabelPolicy(LabelPolicy labelPolicy) { mLabelPolicy = labelPolicy; return this; }}
4. SimpleFastPointOverlay
一个绘制简单可点击点的Overlay,优化了加载速度。能够很容易的加载10万个点。不支持每个点的个性化,每个点的风格是一致的。不支持地图旋转时的情况。
public class SimpleFastPointOverlay extends Overlay { private final SimpleFastPointOverlayOptions mStyle; private final PointAdapter mPointList; private final BoundingBox mBoundingBox; private Integer mSelectedPoint; private OnClickListener clickListener; private LabelledPoint grid[][]; private boolean gridBool[][]; private int gridWid, gridHei, viewWid, viewHei; private float startX, startY, curX, curY, offsetX, offsetY; private int prevNumPointers, numLabels; private BoundingBox prevBoundingBox = new BoundingBox(0, 0, 0, 0); ...}
阅读全文
0 0
- osmdroid API解读(十二)
- osmdroid API解读(一)
- osmdroid API解读(二)
- osmdroid API解读(三)
- osmdroid API解读(四)
- osmdroid API解读(五)
- osmdroid API解读(六)
- osmdroid API解读(七)
- osmdroid API解读(八)
- osmdroid API解读(九)
- osmdroid API解读(十)
- osmdroid API解读(十一)
- osmdroid API解读(十三)
- osmdroid API解读(十四)
- osmdroid API解读(十五)
- Bada学习-(十二)Privileged API
- Caffe源码解读(十二):自定义数据输入层
- 解读javamail API 之一(概述篇)
- laravel 导出表格数据
- Xcode9的无线调试真解
- python函数参数是值传递还是引用传递:取决于对象内容可变不可变
- putty上的ppk转换为Xshell上面可用的密钥
- Android调用环信的EaseUI V3.0发送语音不成功的问题。
- osmdroid API解读(十二)
- Vue 2.0初学后个人总结及分享
- Linux常用命令-文件查看命令
- FaceNet--Google的人脸识别
- sql数据表操作
- git学习总结
- JAVA学习笔记14——Spring框架第一章
- VC++6.0 显示行号插件VC6LineNumberAddin.dll,破解版支持win7 64位系统
- java clone详解