gpt4 book ai didi

java - 使用 Overlay 连接从 Android 数据库中获取的 GPS 坐标

转载 作者:行者123 更新时间:2023-12-01 16:06:30 25 4
gpt4 key购买 nike

我目前正在构建一个应用程序,允许用户跟踪他们的手机在 Google map 上的位置。此时,当调用 onLocationChanged() 方法时,应用程序会将当前 GPS 经度和纬度存储在数据库中,并调用 animateTo() 方法到达当前位置。

使用 SDK 1.5,我如何使用 Overlay 将这些点与在 MapView 上绘制的彩色线连接起来?

最佳答案

您必须创建自己的类来扩展 ItemizedOverlay 并在绘制方法中在 Canvas 上绘制线条。

例如:

public class MyOverlay extends ItemizedOverlay<OverlayItem> {
private Projection projection;
private Point linePaint;
private Vector<GeoPoint> points;
public MyOverlay(Drawable defaultMarker) {
points = new Vector<GeoPoint>()
linePaint = new Paint();
//set color, stroke width etc.
}

public void addPoint(GeoPoint point) {
points.addElement(point);
}

public void setProjection(Projection projection) {
this.projection = projection;
}

public void draw(Canvas canvas, MapView mapView, boolean shadow) {
int size = points.size();
Point lastPoint = new Point();
projection.toPixels(points.get(0), lastPoint);
Point point = new Point();
for(int i = 1; i<size; i++){
projection.toPixels(points.get(i), point);
canvas.drawLine(lastPoint.x, lastPoint.y, point.x, point.y, linePaint);
lastPoint = point;
}
}
}

onLocationChanged()中,您应该通过overlay.addPoint添加新的地理点。在将显示 MapView 的 Activity 的 onCreate() 中,您必须添加

overlay = new MyOverlay(null); //overlay must be accessible from onLocationChanged
map.getOverlays().add(overlay); //map = (MapView) findViewById(R.id.mapview)

如果该点位于可见矩形中,您还应该在绘制(或其他地方)中进行检查,以提高绘制速度。

我还没有尝试编译这个,所以如果有一些小错误,请不要责怪我。

关于java - 使用 Overlay 连接从 Android 数据库中获取的 GPS 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2478866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com