سؤال

وقد تمكن أي شخص استخدام ItemizedOverlays في الروبوت بيتا 0.9?لا أستطيع الحصول على عمل ، ولكن لست متأكدا إذا كنت قد فعلت شيئا خاطئا أو إذا كانت هذه الوظيفة ليست متاحة بعد.

كنت أحاول استخدام ItemizedOverlay و OverlayItem فصول.الغرض المقصود منها هو محاكاة علامات الخريطة (كما رأينا في خرائط Google المزج) ولكن كان عندي مشاكل في الحصول عليها أن تظهر على الخريطة.

يمكنني أن أضيف بلدي مخصص تراكب باستخدام تقنية مماثلة ، انها مجرد ItemizedOverlays التي لا تعمل.

مرة واحدة كنت قد نفذت بلدي ItemizedOverlay (و تجاوزها createItem) ، إنشاء مثيل جديد من فئة ويبدو أن العمل (يمكن استخراج OverlayItems من ذلك) ولكن إضافة إلى خريطة Overlay قائمة لا تجعل الأمر يبدو كما يجب.

هذا هو رمز يمكنني استخدام لإضافة 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 آخر في الروبوت المجموعات هنا.

ويبدو أنه إذا كنت تعيين حدود على drawable أنه لا حيلة:

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.أيضا, هنا جيد howto.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top