Používání ItemizedOverlay a OverlayItem V Android Beta 0.9

hlasů
49

Má někdo podařilo využít ItemizedOverlaysv Android Beta 0.9? Nemohu se dostat do práce, ale nejsem si jistý, jestli jsem udělal něco špatně, nebo-li tato funkce zatím není k dispozici.

Snažil jsem se použít ItemizedOverlayi OverlayItemtřídy. Jejich účel je simulovat mapové značky (jak je vidět na Google Maps Mashups), ale já jsem měl problémy se jim zobrazí na mapě.

Mohu přidat své vlastní uživatelské překryvy pomocí podobné techniky, je to jen ItemizedOverlays, že nefungují.

Poté, co jsem realizován sama ItemizedOverlay(a přepsány CreateItem), vytváří nová instance mé třídě zdá se k práci (I lze extrahovat OverlayItems z něj), ale jeho přidání do seznamu mapy je Overlay není, aby to vypadalo tak, jak má.

To je kód, který jsem použít k přidat ItemizedOverlaytřídu jako překrytí k mému 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();
}

Tam, kde MyItemizedOverlayje definován jako:

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;
  } 
}
Položena 25/08/2008 v 17:39
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
38

Pro úplnost budu opakovat diskusi o příspěvku Reto v průběhu u skupiny Android zde.

Zdá se, že pokud nastavíte hranice na svém Drawable to dělá trik:

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);

Mimochodem, výše uvedené je nestoudně vytrhl z dema na MarcelP.info . Také viz zde pro dobrou howto.

Odpovězeno 05/09/2008 v 20:58
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more