我的工程在Android Google
Map上需要划折线,发现API中竟然没有Polyline,分析Overlay类之后,自己做了一个折线类,使用起来跟Flex中的Polyline差
不多,其余不多说,直接贴上代码。
package westyi.map.overlay;
import java.util.List;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;
/**
* Goolge地图之Polyline实现
*
* @author westyi
*/
public class Polyline extends Overlay {
List<GeoPoint> points;
Paint paint;
/**
* 构造函数,使用GeoPoint List构造Polyline
*
* @param points
* GeoPoint点List
*/
public Polyline(List<GeoPoint> points) {
this.points = points;
paint = new Paint();
paint.setColor(Color.BLUE);
paint.setAlpha(150);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeWidth(4);
}
/**
* 使用GeoPoint点List和Paint对象来构造Polyline
*
* @param points
* GeoPoint点List,所有的拐点
* @param paint
* Paint对象,用来控制划线样式
*/
public Polyline(List<GeoPoint> points, Paint paint) {
this.points = points;
this.paint = paint;
}
/**
* 真正将线绘制出来 只需将线绘制到canvas上即可,主要是要转换经纬度到屏幕坐标
*/
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
if (!shadow) {// 不是绘制shadow层
Projection projection = mapView.getProjection();
if (points != null) {
if (points.size() >= 2) {
Point start = projection.toPixels(points.get(0), null);// 需要转换坐标
for (int i = 1; i < points.size(); i++) {
Point end = projection.toPixels(points.get(i), null);
canvas.drawLine(start.x, start.y, end.x, end.y, paint);// 绘制到canvas上即可
start = end;
}
}
}
}
}
}
简单的用例如下:
List<GeoPoint> points = new ArrayList<GeoPoint>();
points.add(new GeoPoint(39907794,116356694));
points.add(new GeoPoint(39950181,116415059));
points.add(new GeoPoint(39909637,116435315));
points.add(new GeoPoint(39902526,116398236));
Polyline polyline = new Polyline(points);
map.getOverlays().add(polyline); //map是MapView类型
map.invalidate();
OK, 大功告成!看看效果如下:
- 大小: 151.6 KB
分享到:
相关推荐
本机用于在Android的Google地图上创建渐变折线的用例。 由于它不是Google Maps Android SDK中的内置API。 案例分析 如果要在Andoird Google Maps的两个位置之间创建渐变折线,则将无法执行此操作,因为根据此注释,...
折线Polyline 是一种在Google Maps API 中解码和编码折线的工具。 如果您想在查询 Google API 以获取路线时绕过 25 个 WayPoints 的限制,它会很有用。 通过解码用于在地图上绘制路径的折线,您可以获得更多坐标。 ...
谷歌地图API没有有提供直接画虚线的接口,本资料提供了详细的画法
项目需求,需要做一个绘制行动轨迹的功能,因为本身项目集成的是高德地图,所以在此处,就针对高德地图来简单说一下绘制行动轨迹的功能。 主要功能: 1.地图显示 2.定位 3.Polyline轨迹绘制
百度地图API开发中用来获取折线的坐标,请自己修改起始坐标和地图缩放级别。
csharp-折线编码器 从 code.google.com/p/csharp-polyline-encoder 自动导出 谷歌地图折线编码算法的 C# 实现。 从 Mark Rambow 对 Mark McClure 的 Javascript PolylineEncoder 的 Java 重新实现翻译的代码
折线 用Javascript实现的简单的实现。 与nodejs兼容( npm install @mapbox/polyline和浏览器(复制src/polyline.js ))。 从/解码为[lat, lng]坐标对。 使用fromGeoJSON()从GeoJSON对象编码,或使用toGeoJSON解码...
spline2polyline.lsp 在ACAD可通过ap命令加载应用,执行命令:spl2pol
android 百度地图 定位模块资料+源码
Java的距离折线标记计算距折线和标记的距离入门您可以直接使用Java计算标记和折线之间的距离跑步请按照以下步骤调用主函数BdcInit bdcInit = new BdcInit();Double total = bdcInit.bdccGeoDistanceToPolyMtrs...
我们想用微信小程序实现在map>组件上自定义显示导航路径,但是目前为止官方并未给出相应的方法实现,map>组件确实有绘制点对点连线的属性polyline,但是呢我们没有一系列的坐标集合也是画不出一条路径的, ...
Google Maps JavaScript折线编码 描述 使用此程序包在Nodejs或浏览器中编码和解码polyines。 折线编码是一种有损压缩算法,可让您将一系列坐标存储为单个字符串。 点坐标使用带符号的值进行编码。 要了解更多信息...
在开发过程中发现 vue-baidu-map 封装的 BmPolyline 折线组件不能顺利绘制出带箭头的纹理。...而 IconSequence 类的实例对象则是在 BaiduMap 组件的 ready 事件中拿到 BMap 类和 map 地图实例对象,然后依次调用 B
最简单的折线图,根据y值上的最大差值来觉得Y周上的单位值
高德地图添加路线,移除路线以及更改路线颜色、宽度等操作 高德地图其他操作都很简单就没有涉及
对高德地图轨迹平滑移动的官方demo做了一点改进,易于大家理解。
tree-polyline.html
折线Rust 中的 Google Encoded Polyline 编码和解码。关于坐标阶的注解此 crate 使用geo-types crate 中的Coordinate和LineString类型,它们按(x, y)顺序对坐标进行编码。折线算法和第一方文档采用相反的坐标顺序。...
腾讯地图的聚合+描点+文字+点击大集合
an algorithm to offset a polyline, the same funtion you can see in AutoCAD, command offset.