Android Beta 0.9’da ItemizedOverlay ve OverlayItem‘i Etkili Bir Şekilde Kullanma

Eğer Android ile çalışan bir geliştiriciyseniz, harita uygulamalarınızda ItemizedOverlay ve OverlayItem özelliklerini uygularken zorluklarla karşılaşmış olabilirsiniz, özellikle de Android Beta 0.9’da. Bu makale, bu bağlamda ortak bir sorunu incelemeyi ve harita işaretçilerinizi sorunsuz bir şekilde çalışır hale getirecek ayrıntılı bir çözüm sunmayı amaçlamaktadır.

Problem

Haritanızda (Google Haritalar’da görülenlere benzer) işaretçiler oluşturmak için ItemizedOverlay‘i kullanmaya çalışırken, işaretçilerin beklenildiği gibi görünmediğini fark etmiş olabilirsiniz. Aşağıdaki senaryo ile karşılaşmış olabilirsiniz:

  • ItemizedOverlay‘den türetilen MyItemizedOverlay sınıfınızı kurdunuz.
  • Bu overlay’i MapView‘inize eklemeye çalıştığınızda, OverlayItems‘ları başarılı bir şekilde çıkarmanıza rağmen, işaretçileri görüntülemiyor.

Overlay’i eklemek için kullandığınız kodun bir kısmı şöyle olabilir:

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

Sınıf Tanımı

MyItemizedOverlay sınıfınız şöyle tanımlanabilir:

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, "İşaretçi", "İşaretçi Metni");
    return oi;
  }

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

Çözüm: Drawable Üzerinde Sınırlar Belirleme

Ana sorun genellikle işaretçilerinize bağlı Drawable için tanımlanmış sınırların olmamasında yatmaktadır. Bunu çözmek için şu adımları izleyin:

Adım 1: Drawable Sınırlarını Belirleyin

ItemizedOverlay‘i eklemeden önce, drawable’ınız için sınırları belirttiğinizden emin olun. Bu, draw metodunun bu sınırları kullanarak doğru bir şekilde tuvalde görüntülenebilmesi için kritik öneme sahiptir. İşte bunu nasıl yapabileceğiniz:

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

// Drawable'ınız için sınırları belirleyin
defaultMarker.setBounds(0, 0, defaultMarker.getIntrinsicWidth(),
    defaultMarker.getIntrinsicHeight());

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

Sınırlar Neden Önemlidir?

  • Görüntüleme Mekanikleri: İşaretçiler Drawable.draw(Canvas) metodu aracılığıyla çizilir ve bu metodun, drawable’ın kendisini tuvalde nereye çizeceğini bilmesi için sınırların belirtilmesine ihtiyacı vardır.
  • Görünürlük: Doğru sınırlar olmadan, işaretçileriniz haritada görünmeyebilir, bu da geliştirme sürecinde kafa karışıklığına neden olabilir.

Ek Kaynaklar

Daha fazla referans ve ayrıntılı bir rehberlik için aşağıdaki kaynaklara göz atabilirsiniz:

Sonuç

Drawable‘ınız üzerinde sınırları doğru bir şekilde belirleyerek, ItemizedOverlay‘inizin amaçlandığı gibi çalıştığını ve haritanızda işaretçilerin görüntülendiğini göreceksiniz. Bu düzeltme, Android Beta 0.9’da benzer sorunlarla karşılaşan geliştiriciler için gereklidir ve uygulamalarınızda harita özellikleri uygular iken daha sorunsuz bir geliştirme deneyimi sağlar.

Eğer daha fazla sorunuz varsa veya ItemizedOverlay uygulama deneyimlerinizi paylaşmak isterseniz, lütfen aşağıda yorum yapmaktan çekinmeyin!