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üretilenMyItemizedOverlay
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!