2012-04-09 12 views

答えて

1

私はすなわち、このような何かをカスタムを表示することができればそう私は思っていたような何かを達成したい

 itemized= new Itemazide(drawable, mContext); 

ようにそれをやっているView drawableの代わりに。 draw()メソッドをオーバーライドすることはできますが、残念ながら常に(誰かが間違っていると教えてください)ドロアブルが必要です。私はそれがカスタムViewがあまりにも多くのメモリを取るためだと思う。

これは、達成しようとしているものによっては、おそらく同様の効果を達成するためにmapview-baloonライブラリをハックすることが可能だと言われています。

EDIT: 今、あなたはあなたが達成しようとしているものを示してきたことを私はあなたのOverlayItemdraw()をオーバーライドして、この方法では、あなたのImageViewを膨らませるべきだと思います。しかし、私はこのようにしようとはしなかったので、いくつかの欠点があるかもしれません(これは、OverlayItemのすべてのタッチイベントを中断すると主張する同様の問題のSOスレッドを覚えています)。

+0

私はこれに見て、今私が実装しようとしています見ることができますされました... – Akram

+0

のMapView-バルーンの別物 – Akram

+0

それはあなたがどんな 'View'(含むカスタム' ImageView')を膨らませることができます。しかし、**描画可能なのではなく** Drawableの代わりに(しかし、あなたは常に透明なdrawableを使用することができます)。ハックするのは難しいことではないはずなので、タップには表示されませんが、いつもそうです。 –

2

私は少し遅れるかもしれませんが、同様の問題に直面している/直面している他の人のための解決策を投稿します。だから、基本的に何をしなければならないのか(少なくともあなたが探している解決策、すなわちボックスのような背景に課されたカスタムイメージ)は、キャンバスの助けを借りて背景のボックスにcustomImageを押し付けます。この実装を使用すると、効果的にキャンバスからBitmapDrawableを作成できます。このBitmapDrawableは、 'Overlay'/'ItemizedOverlay'のマーカーとして割り当てることができます。 また、オーバーレイごとにImageViewを作成することを控えてください。これは、このようなImageViewを同時に処理する必要がある場合、メモリ/アプリケーションを完全に破棄するためです。代わりに、構築中にオーバーレイに割り当てることができるBitmapDrawablesを使用し、ImageViewとしてほぼ十分なメモリを消費しないでください。

public BitmapDrawable imageOnDrawable(int drawableBackground, Bitmap customImage) 
{ 
    //The following line is optional but I'd advise you to minimize the size of 
    //the size of the bitmap (using a thumbnail) in order to improve draw 
    //performance of the overlays (especially if you are creating a lot of overlays). 

    Bitmap customImageThumbnail = ThumbnailUtils.extractThumbnail(
                customImage, 100, 100); 

    Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId); 
    bm = Bitmap.createScaledBitmap(bm, 112, 120, false); 

    Canvas canvas = new Canvas(bm); 
    canvas.drawBitmap(bm, 0, 0, null); 
    // The 6,6 in the below line refer to the offset of the customImage/Thumbnail 
    // from the top-left corner of the background box (or whatever you want to use 
    // as your background) 
    canvas.drawBitmap(customImageThumbnail, 6, 6, null); 

    return new BitmapDrawable(bm); 

} 
1
In google mapv2, map-view ballon like functionality is provided by default. 
Just, you have to write some lines for it : 

private GoogleMap mapView; 

if (mapView == null) 
      mapView = ((MapFragment) getFragmentManager().findFragmentById(
        R.id.map_view)).getMap(); 

     mapView.getUiSettings().setMyLocationButtonEnabled(false); 
     mapView.setMyLocationEnabled(true); 

MarkerOptions markerDestinationOptions; 
markerDestinationOptions = new MarkerOptions() 
        .position(latLngDestination)    .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker)); 

mapView.addMarker(markerDestinationOptions); 
関連する問題