2011-07-11 15 views
0

この問題の解決策を数日間探しています。 イメージをオーバーレイとして追加したい(または、何が最善の解決策であるか)。画像はマップの一部を視覚化しますが、それは独自のグラフィックです。したがって、地図の一部であるかのように、縮尺、位置、および動作が重要です。ズーム/位置とともにサイズ/位置を変更するオーバーレイを追加する方法

イメージはかなり大きいです(800x1200)ので、somタイプのタイルベースのソリューションを使用すると効果的かもしれません。

答えて

2

解決策を見つけました。 (http://groups.google.com/group/android-developers/browse_thread/thread/79b233ab9ec64e1e#)

私はオーバーレイを使用しており、描画方法ではこれを行います。

public void draw(Canvas canvas, MapView mapView, boolean shadow) { 
     if(shadow){ 
     return; 
    } 

    super.draw(canvas, mapView, shadow); 

    // convert bitmap's bounding box into pixels 
     Point top_left = new Point(); 
     mapView.getProjection().toPixels(topLeft, top_left); 
     Point bottom_right = new Point(); 
     mapView.getProjection().toPixels(bottomRight, bottom_right); 
     // Prepare two rectangles (pixels) 
     Rect src = new Rect(0,0,bmp.getWidth() - 1, bmp.getHeight() - 1); 
     Rect dst = new Rect(top_left.x, top_left.y, bottom_right.x,bottom_right.y); 

     // draw bitmap 
     canvas.drawBitmap(bmp, src, dst, null); 


} 

//私は、コンストラクタで迅速な対応のための

0

カスタムマップタイルが必要なようです。オーバーレイは、拡大または拡大しない小さな視覚的な詳細やマーカーを追加するために使用され、マップが拡大または縮小するたびに再描画されます。

AFAIK MapViewは現在、サテライトとマップビュータイルをサポートしています。また、マップにカスタムの「レイヤー」を追加するためのAPIがないため、別の解決策になる可能性があります。

これはプロジェクトデリブレイカーの場合、OpenStreetMap-Dataを使用し、カスタマイズが容易な、完全機能のMapView代替品であるOSMDroidなどを使用して調べることができます。

+0

おかげで、画像のgeoPoints(geoPointTopLeft、geoPointBottomRight)を設定します。おそらくあなたの権利と最善の方法は、別のマップAPIに切り替えることです。しかし、それは残念です。私はGoogleの地図ビューで動作するソリューションを期待していました。オーバーレイしたい地図のほんの一部ですが、画像を小さくする(400x600)ことができます。地図上で縮尺を変えて配置する限り。オーバーレイでonDrawで描画し、ズーム値を使ってスケーリングすることを考えていました。 –

関連する問題