如何仅使用 java 连接 Google map API 中的标记,即不使用 asp.net、php 或任何其他语言?我只是一个初学者。我的地图上有多个标记,它们显示了 Google android 项目中的相应位置。
问问题
1735 次
1 回答
1
创建您自己的Overlay
类(而不是使用ItemizedOverlay
用于显示标记的类)并实现draw()
绘制线条的方法。MapView
在添加用于显示标记的普通叠加层之前,将此叠加层添加到您的标记中,如下所示:
mMapView.getOverlays().add(mPathOverlay);
mMapView.getOverlays().add(mMarkersOverlay);
一个PathOverlay
类可以是这样的。这些位置将是您的标记的位置,已经转换为GeoPoint
s。
public class PathOverlay extends Overlay {
private List<GeoPoint> mPositions;
private Path mPath;
private Paint mPathPaint;
private Point mHelperPoint = new Point();
public PathOverlay(List<GeoPoint> positions) {
mPositions = positions;
mPath = new Path();
mPathPaint = new Paint();
mPathPaint.setColor(0xDDA4C639);
mPathPaint.setStyle(Paint.Style.STROKE);
// add more path styling here
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
if (shadow) {
return; // path has no shadow
}
mPath.reset();
boolean start = true;
Point prev = new Point();
for (Position p : mPositions) {
mapView.getProjection().toPixels(p.geoPoint, mHelperPoint);
if (start) {
mPath.moveTo(mHelperPoint.x, mHelperPoint.y);
prev.set(mHelperPoint.x, mHelperPoint.y);
start = false;
} else {
int dx = prev.x - mHelperPoint.x;
int dy = prev.y - mHelperPoint.y;
mPath.lineTo(mHelperPoint.x, mHelperPoint.y);
prev.set(mHelperPoint.x, mHelperPoint.y);
}
}
canvas.drawPath(mPath, mPathPaint);
}
}
于 2012-11-18T19:13:07.060 回答