2012-04-02 10 views
1

こんにちは私はアンドロイドのGoogleマップにマーカーを表示するために、このマーカーのサイズを変更したバージョン(http://www.clker.com/clipart-orange-pin-4.html)を使用しています。android custom map marker bounds

問題は、マーカーポイントを座標に一致させる方法がわかりません。 矢印ポイントは幅座標の約1/5、高さのMAXです。ここ

は私のクラスである

public class GestionaleItemizedOverlay extends com.google.android.maps.ItemizedOverlay { 

    public GestionaleItemizedOverlay(Drawable defaultMarker, Context context) { 
     //super(boundCenterBottom(defaultMarker)); 
     super(boundCenter(defaultMarker)); 
     this.mContext = context; 
    } 
... 

そしてこの

this.marker_poi = this.getContext().getResources().getDrawable(R.drawable.marker); 
    this.marker_poi.setBounds(this.marker_poi.getIntrinsicWidth()/2, this.marker_poi.getIntrinsicHeight(), this.marker_poi.getIntrinsicWidth()/2, 0); 
new GestionaleItemizedOverlay(this.poi, this.context); 

iは、コンストラクタに渡す前に、マーカーの上にsetBoundsする必要がありますか? super(defaultMarker)がすべてのマーカーを表示しないのはなぜですか?

答えて

1

はいあなたはsetBoundsする必要がありますが、コンストラクタでそれを行うことができ、これは私が左下隅にそれを設定するには、コンストラクタに何をすべきかです:

public class CustomOverlay extends ItemizedOverlay<CustomOverlayItem> { 
    public CustomOverlay(Drawable defaultMarker, Context context) { 
     super(defaultMarker); 
     defaultMarker.setBounds(0, -defaultMarker.getIntrinsicHeight(), defaultMarker.getIntrinsicWidth(), 0); 
    } 

あなたが少しを追加する必要があります範囲の左側に余分に配置して、中心点を正しい位置にします。これはpxで設定されているので、DPコンバーターをいくつか作成して、各画面サイズごとに異なる画像に正しく設定されていることを忘れないでください。

第2の質問については、オーバーレイを追加する場所を知るためのコンテキストが必要です。コンテキストがなければ、使用する必要のある場所への参照を与えずにオーバーレイを作成するだけです(必要に応じて後で追加できます)。

+1

?! !!左側の境界か正しい位置ですか?この答えは何も説明していない – max4ever

2

前の答えは正しいです、あなたはマーカーのBOUNDS値で遊ぶ必要があります。

境界矩形がオブジェクトのサイズを決めると確信しています。マップ上のマーカーは、GPS座標でマーカーの左上の座標を使用して、あなたのイメージのサイズに関する通常のセットバウンド。

あなたがしなければならないことは、あなたが望む地図上のポイント上に画像の一部分が来るように画像の境界を修正することです。

あなたのサイズ変更された画像が20 x 20で、実際の矢印の先端(矢印が画像であると仮定し、マップ上の点と正確に並んでいたい場合)は、X = 4とY = 10の場合は、イメージの境界を変更して、イメージを必要な場所で「移動」する必要があります。

0,0は、画像を右に4ピクセル、マップ上の実際のポイントより10ピクセル下に置くので、境界は0,0、X、Yではありませんが、-4画像-10のXサイズ、画像-10のYサイズ(この例では、画像のxsizeと画像のysizeはともに20ですが、あなたの場合に適した値を使用する必要があります)

関連する問題