2011-12-08 10 views
2

私はマップ上にマーカーを配置するためにitemizedoverlayを拡張するcustomoverlayを持っています。私の問題は、drawableのboundsがboundCenterBottmおよびboundCenterの値とは異なるようにマーカーを調整したいということです(私の場合は、存在していればboundLeftBottomのようなものが必要です)。これをどのように達成するのですか?私がこれを達成したい理由は、私が左下隅を指すドロアブルを持っているからです。android google mapsのマーカ範囲を変更してください

私はウェブを乾燥させて検索しましたが、どんな助けでも大歓迎です。

左側に透明なスペースを作ることを提案することはできません。私はこれを不適切な回避策とみなします

編集;

私はこれで終わった:それは隅にし、修正するための痛みになります3つの異なるドロウアブルと完璧されていないため、graficに私の問題を解決しませんでしたが、これが正しい

public class CustomOverlay extends ItemizedOverlay<CustomOverlayItem> { 
    private ArrayList<CustomOverlayItem> mOverlays = new ArrayList<CustomOverlayItem>(); 
    private Context mContext; 

    public CustomOverlay(Drawable defaultMarker, Context context) { 
//  super(boundCenterBottom(defaultMarker)); 
     super(defaultMarker); 
     defaultMarker.setBounds(0, -defaultMarker.getIntrinsicHeight(), defaultMarker.getIntrinsicWidth(), 0); //TODO experiment 
     mContext = context; 
    } 

(最終的な解決策は私がdrawableを修正することです)。

+1

ここで示唆しているようにDrawableをサブクラス化しようとしましたか? http://stackoverflow.com/questions/5855194/android-custom-drawable-bounds –

+1

CustomOverlayの描画メソッドをオーバーライドし、マーカーの位置を手動で調整して境界を変更することができます。他のオプションは、drawCenterの境界を調整してdrawCenterの中心になるようにboundCenter()などのメソッドを作成することです(「ウェイポイントバッジ」のようなグラフィックには便利です)。 –

+0

両方の良い提案は、それを使用しようとします。 – Warpzit

答えて

3

boundCenterBottomとboundCenterは、描画可能オブジェクト上でsetBoundsを呼び出すヘルパー関数です。あなた自身で呼び出すことができます。左下のために

は、私はそれがこのようなものになりますと思う:

drawable.setBounds(0, -drawable.getIntrinsicHeight(), drawable.getIntrinsicWidth(), 0); 

をしかし、それはちょうど私の頭の上からでした。

+0

これを試し、結果を投稿します。 – Warpzit

+1

itemizedoverlayを拡張すると、コンストラクタからboundCenterBottomまたはboundCenterを使用する必要があるという問題があるため、これはうまく動作しません。私は自分のdrawableを作成しようとします。 – Warpzit

+0

itemizedoverlayのコンストラクタをオーバーライドできるのであれば、これらのメソッドをオーバーライドしたり、自分で作成するのは簡単です。 – Warpzit

関連する問題