我正在將基於Google Maps的項目移植到Osmdroid以使用OpenStreetMaps。除了添加由多條直線和一些文本組成的疊加層外,端口工作正常。在這兩個項目中,我通過一個計時器線程和處理程序調用redrawOverlay來添加Overlay。將Google Maps應用程序移植到Osmdroid - 覆蓋問題
在OSM項目中,我的疊加層只是一個完全隱藏地圖的灰色方塊。如果我刪除了重新撥號的呼叫,OSM磁貼顯示OK。我已將疊加代碼減少到下面代碼示例中單個對角線的最小值。它在Google應用中正常工作,覆蓋地圖圖塊。該com.google.android.maps.Overlay有平局法,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);
}
雖然在谷歌地圖原來我有相同的:
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 UPDATE問:
感謝您的幫助,到目前爲止,我看你是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方法是否會有所幫助,但是在javadoc中沒有對它的引用。你有什麼建議嗎?
這肯定會在屏幕上畫一條線,一旦我將mWorldSize_2定義爲int並將一個Paint參數添加到.drawline。 (我想傳入的Canvas與Google Maps傳遞的Canvas完全不同)。然而,底層的MapView消失了,我只是在灰色背景上劃了一條線。 – NickT 2011-02-08 09:44:54