57

ItemizedOverlays誰かがAndroidベータ0.9で使用することができましたか?動作させることはできませんが、何か間違ったことをしたのか、この機能がまだ利用できないのかはわかりません。

私はItemizedOverlayOverlayItemクラスを使おうとしています。それらの意図された目的は(Google Maps Mashupsで見られるように)マップマーカーをシミュレートすることですが、私はそれらをマップに表示させるのに問題がありました。

同様の手法を使用して独自のカスタムオーバーレイを追加できますが、機能ItemizedOverlaysしないだけです。

独自のインスタンスを実装するItemizedOverlayと(そしてオーバーライドするとcreateItem)、クラスの新しいインスタンスを作成することは機能しているように見えますが(そこOverlayItemsから抽出できます)、マップのOverlayリストに追加しても、期待どおりに表示されません。

ItemizedOverlayこれは、クラスをOverlayonとしてに追加するために使用するコードですMapView

// Add the ItemizedOverlay to the Map
private void addItemizedOverlay() {
  Resources r = getResources();
  MapView mapView = (MapView)findViewById(R.id.mymapview);
  List<Overlay> overlays = mapView.getOverlays();

  MyItemizedOverlay markers = new MyItemizedOverlay(r.getDrawable(R.drawable.icon));
  overlays.add(markers);

  OverlayItem oi = markers.getItem(0);
  markers.setFocus(oi);
  mapView.postInvalidate();
}

ここMyItemizedOverlayで、次のように定義されます。

public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> {
  public MyItemizedOverlay(Drawable defaultMarker) {
    super(defaultMarker);
    populate();
  }

  @Override
  protected OverlayItem createItem(int index) {
    Double lat = (index+37.422006)*1E6;
    Double lng = -122.084095*1E6;
    GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());

    OverlayItem oi = new OverlayItem(point, "Marker", "Marker Text");
    return oi;
  }

  @Override
  public int size() {
    return 5;
  } 
}
4

2 に答える 2

46

完全を期すために、ここで Android グループでの Reto の投稿に関する議論を繰り返します。

ドローアブルに境界を設定すると、うまくいくようです:

Drawable defaultMarker = r.getDrawable(R.drawable.icon);

// You HAVE to specify the bounds! It seems like the markers are drawn
// through Drawable.draw(Canvas) and therefore must have its bounds set
// before drawing.
defaultMarker.setBounds(0, 0, defaultMarker.getIntrinsicWidth(),
    defaultMarker.getIntrinsicHeight());

MyItemizedOverlay markers = new MyItemizedOverlay(defaultMarker);
overlays.add(markers);

ちなみに、上記はMarcelP.info のデモから恥知らずに切り取ったものです。また、ここに良いハウツーがあります。

于 2008-09-05T19:58:48.483 に答える