【发布时间】:2011-02-11 12:03:29
【问题描述】:
我正在将基于 Google 地图的项目移植到 Osmdroid 以使用 OpenStreetMaps。除了添加由许多直线和一些文本组成的覆盖之外,该端口工作正常。在这两个项目中,我都通过计时器线程和调用 redrawOverlay 的处理程序来添加 Overlay。
在 OSM 项目中,我的叠加层只是一个完全隐藏地图的灰色方块。如果我删除对 redrawOveraly 的调用,OSM 磁贴显示正常。在下面的代码示例中,我已将覆盖代码减少到最小的一条对角线。它在 Google 应用中运行良好,覆盖了地图图块。 com.google.android.maps.Overlay有draw方法,OSM有onDraw,所以我在OSM版本有:
private MapView mv;
private MapOverlay mmapOverlay = null;
private void redrawOverlay() {
gPt = mv.getMapCenter();
if (mmapOverlay == null)
mmapOverlay = new MapOverlay(getApplicationContext());
List<Overlay> listOfOverlays = mv.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mmapOverlay);
mv.invalidate();
}
public class MapOverlay extends org.osmdroid.views.overlay.Overlay {
public MapOverlay(Context ctx) {
super(ctx);
// TODO Auto-generated constructor stub
}
@Override
public void onDraw(Canvas canvas, MapView mapView) {
Paint lp3;
lp3 = new Paint();
lp3.setColor(Color.RED);
lp3.setAntiAlias(true);
lp3.setStyle(Style.STROKE);
lp3.setStrokeWidth(1);
lp3.setTextAlign(Paint.Align.LEFT);
lp3.setTextSize(12);
canvas.drawLine(10, 10, 150, 150, lp3);
}
虽然在 Google 地图原版中我有等价物:
public class MapOverlay extends com.google.android.maps.Overlay {
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow,
long when) {
super.draw(canvas, mapView, shadow);
Paint lp3;
lp3 = new Paint();
.....etc.
redrawOverlay 是一样的,只是覆盖的实例化只是:
mmapOverlay = new MapOverlay();
我们将不胜感激所有建议
更新 kurtzmarc 的问题:
感谢您到目前为止的帮助,我知道您是 Osmdroid 的作者之一。我喜欢它到目前为止所做的事情。我想抑制双击时出现的“跳转并放大”。我希望它什么都不做。我认为它可能在您的源代码中遇到了这一点并进行了 zoomInFixing:
private class MapViewDoubleClickListener implements GestureDetector.OnDoubleTapListener {
@Override
public boolean onDoubleTap(final MotionEvent e) {
for (int i = mOverlays.size() - 1; i >= 0; i--)
if (mOverlays.get(i).onDoubleTapUp(e, MapView.this))
return true;
final GeoPoint center = getProjection().fromPixels(e.getX(), e.getY());
return zoomInFixing(center);
}
似乎我无法覆盖它。我正在使用 3.0.1 jar 和相关的 javadocs。我想知道 Mapview 的 setTouchDelegate 方法是否有帮助,但 javadocs 中没有引用它。请问您有什么建议吗?
【问题讨论】:
标签: android