Android ベータ 0.9 でのItemizedOverlay と OverlayItem の使用
-
09-06-2019 - |
質問
誰かが使用できましたか ItemizedOverlays
Android ベータ 0.9 では?動作させることはできませんが、何か間違ったことをしたのか、それともこの機能がまだ利用できないのかわかりません。
私はそれを使おうとしてきました ItemizedOverlay
そして OverlayItem
クラス。それらの本来の目的は、(Google マップ マッシュアップで見られるように) 地図マーカーをシミュレートすることですが、地図上にマーカーを表示するのに問題がありました。
同様の手法を使用して独自のカスタム オーバーレイを追加できます。 ItemizedOverlays
それは機能しません。
自分で実装したら ItemizedOverlay
(そしてオーバーライドされた createItem
)、クラスの新しいインスタンスを作成すると機能するようです(抽出できます) OverlayItems
そこから)しかしそれをマップに追加します Overlay
list では正しく表示されません。
これは追加するために使用するコードです ItemizedOverlay
としてのクラス Overlay
私のほうへ 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;
}
}
解決
完全を期すために、Reto の投稿に関する議論を繰り返します。 Androidグループはこちら.
ドローアブルに境界を設定すると、うまくいくようです。
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 のデモ. 。また、ここにあります 良いハウツー.
所属していません StackOverflow