![](/img/trans.png)
[英]GPS coordinates not properly stored in database from android to php [CLOSE]
[英]Connecting GPS coordinates taken from a database in Android using Overlay
我目前正在構建一個應用程序,該應用程序允許用戶跟蹤其手機在Google Map上的位置。 目前,當調用onLocationChanged()方法時,應用程序將當前的GPS經度和緯度存儲在數據庫中,並將animateTo()方法調用到當前位置。
使用SDK 1.5,如何將這些點與使用疊加層在MapView上繪制的彩色線連接起來?
您必須創建自己的擴展ItemizedOverlay的類,並在draw方法中在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()
你應該通過增加新的GeoPoint 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)
您還應該在繪制(或其他位置)中檢查該點是否在可見矩形內以提高繪制速度。
我沒有嘗試編譯它,所以如果有一些小錯誤,也不要怪我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.