2012-11-21 39 views

回答

1

好像目前你標記的中心必然的GeoPoint,但你要綁定標記的底部。

所以在您的覆蓋的構造函數,你需要調用boundCenterBottom方法這樣

public MyItemizedOverlay(Drawable defaultMarker) { 
    super(boundCenterBottom(defaultMarker)); 
} 

而且可能是你需要編輯標記圖像放置紅點底部的中心圖像的水平中心。

藍色矩形是您的圖像的近似大小。正如你所看到的,標記的中心不在圖像的中心。綠色矩形是如何改變圖像以使標記的中心匹配圖像的中心。

enter image description here

+0

它沒有改變 –

+0

你可以添加你的代碼嗎?因爲它對我來說工作正常 – vasart

+0

實際上,它有效,有3個構造函數方法,我只用其中的一個代碼。但是,對於每一個可繪製的問題,修復仍然存在問題。例如,其中一些看起來有點左對齊。這與圖像的大小有關嗎?如果是,我該怎麼辦? –

0
private List<Overlay> mapOverlays; 

private Projection projection; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    linearLayout = (LinearLayout) findViewById(R.id.zoomview); 
    mapView = (MapView) findViewById(R.id.mapview); 
    mapView.setBuiltInZoomControls(true); 

    mapOverlays = mapView.getOverlays();   
    projection = mapView.getProjection(); 
    mapOverlays.add(new MyOverlay());   

} 

@Override 
protected boolean isRouteDisplayed() { 
    return false; 
} 

class MyOverlay extends Overlay{ 

    public MyOverlay(){ 

    } 

    public void draw(Canvas canvas, MapView mapv, boolean shadow){ 
     super.draw(canvas, mapv, shadow); 

     Paint mPaint = new Paint(); 
     mPaint.setDither(true); 
     mPaint.setColor(Color.RED); 
     mPaint.setStyle(Paint.Style.FILL_AND_STROKE); 
     mPaint.setStrokeJoin(Paint.Join.ROUND); 
     mPaint.setStrokeCap(Paint.Cap.ROUND); 
     mPaint.setStrokeWidth(2); 

     GeoPoint gP1 = new GeoPoint(19240000,-99120000); 
     GeoPoint gP2 = new GeoPoint(37423157, -122085008); 

     Point p1 = new Point(); 
     Point p2 = new Point(); 
     Path path = new Path(); 

     projection.toPixels(gP1, p1); 
     projection.toPixels(gP2, p2); 

     path.moveTo(p2.x, p2.y); 
     path.lineTo(p1.x,p1.y); 

     canvas.drawPath(path, mPaint); 
    } 
+0

與我的問題無關,而且我已經在做所有這些。我想要的是通過上方移動項目。我如何計算每個縮放級別的地理位置? –

相關問題