Bilgi penceresi, haritanın üzerindeki bir pop-up pencerede metin veya resim gösterir. Bilgi pencereler her zaman bir işaretçiye sabitlenir. Varsayılan davranışları, işaretçiye dokunulduğunda gösterilmektir.
Kod örnekleri
GitHub'daki ApiDemos deposu, tüm bilgi penceresi özelliklerini gösteren örnek:
- MarkerDemoActivity - Java: Bilgi pencerelerini özelleştirme ve bilgi penceresi işleyicileri
- MarkerDemoActivity - Kotlin: Bilgi pencerelerini ve bilgi penceresi işleyicileri kullanma
Giriş
Bilgi penceresi, dokunduğunda kullanıcıya bilgileri görüntülemenizi sağlar kullanabilirsiniz. Aynı anda yalnızca bir bilgi penceresi gösterilir. Kullanıcı mevcut bilgi penceresi kapatılır ve yeni bilgi penceresi, bir metin görüntülenir. Kullanıcı, işaretleyiciyi tıklarsa şu anda bir bilgi penceresi gösteriliyorsa, bu bilgi penceresi kapanıp yeniden açılır.
Cihaz ekranına dayalı olarak ortalanmış bir bilgi penceresi çizilir üzerine gelin. Varsayılan bilgi penceresi, başlığı içerir kalın harflerle gösterilir ve (isteğe bağlı) snippet metni başlığın altında bulunur.
Bilgi penceresi ekleyin
Bilgi penceresi eklemenin en kolay yolu, ilgili işaretçinin title()
ve snippet()
yöntemlerini ayarlamaktır. Bu özelliklerin ayarlanması,
bilgi penceresi görünecektir.
Kotlin
val melbourneLatLng = LatLng(-37.81319, 144.96298) val melbourne = map.addMarker( MarkerOptions() .position(melbourneLatLng) .title("Melbourne") .snippet("Population: 4,137,400") )
Java
final LatLng melbourneLatLng = new LatLng(-37.81319, 144.96298); Marker melbourne = map.addMarker( new MarkerOptions() .position(melbourneLatLng) .title("Melbourne") .snippet("Population: 4,137,400"));
Bilgi penceresini göster/gizle
Bilgi pencereleri, kullanıcı dokunma etkinliklerine yanıt verecek şekilde tasarlanmıştır. Dilerseniz hedef işaretçide showInfoWindow()
işlevini çağırarak bilgi penceresini programatik olarak gösterebilirsiniz. Bilgi penceresi sesli arama yoluyla gizlenebilir
hideInfoWindow()
.
Kotlin
val melbourneLatLng = LatLng(-37.81319, 144.96298) val melbourne = map.addMarker( MarkerOptions() .position(melbourneLatLng) .title("Melbourne") ) melbourne?.showInfoWindow()
Java
final LatLng melbourneLatLng = new LatLng(-37.81319, 144.96298); Marker melbourne = map.addMarker( new MarkerOptions() .position(melbourneLatLng) .title("Melbourne")); melbourne.showInfoWindow();
Tek tek kümelenmiş işaretçiler için de bilgi pencereleri oluşturabilirsiniz. Tek tek kümelenmiş işaretçiler için bilgi penceresi ekleme ile ilgili kılavuzu okuyun.
Özel bilgi pencereleri
Ayrıca, bilgi pencerelerinin içeriğini ve tasarımını da özelleştirebilirsiniz. Yapılacaklar
Bu durumda, kalite standartlarının
InfoWindowAdapter
arayüzünü ve ardından çağrı
GoogleMap.setInfoWindowAdapter()
bazı ipuçları vereceğim. Arayüzde, uygulayabileceğiniz iki yöntem bulunur:
getInfoWindow(Marker)
ve getInfoContents(Marker)
. İlgili içeriği oluşturmak için kullanılan
API önce getInfoWindow(Marker)
yöntemini çağırır. null
bu çağrılıyorsa:
çağrılırsa getInfoContents(Marker)
çağırır. Bu da null
döndürürse varsayılan bilgi penceresi kullanılır.
Bunlardan (getInfoWindow()
) ilki, Google Haritalar'ı kullanarak
tüm bilgi penceresi için kullanılacak. Bunlardan ikincisi (getInfoContents()
), pencerenin içeriğini özelleştirmenize ancak varsayılan bilgi penceresi çerçevesini ve arka planını korumanıza olanak tanır.
Aşağıdaki resimlerde varsayılan bilgi penceresi, özelleştirilmiş bilgiler içeren bir bilgi penceresi içeriği ve özelleştirilmiş çerçeve ile arka planı olan bir bilgi penceresi
Bilgi penceresi etkinlikleri
MarkerDemoActivity örneği, bilgi penceresi etkinliklerini kaydetme ve işleme.
OnInfoWindowClickListener
kullanarak şunları yapabilirsiniz:
bir bilgi penceresindeki tıklama etkinliklerini dinleme. Bu işleyiciyi haritaya ayarlamak için:
GoogleMap.setOnInfoWindowClickListener(OnInfoWindowClickListener)
numaralı telefonu arayın. Zaman
Kullanıcı bir bilgi penceresini tıkladığında, onInfoWindowClick(Marker)
adı
bilgi penceresi varsayılan vurgu rengiyle (gri) vurgulanır.
Kotlin
internal inner class InfoWindowActivity : AppCompatActivity(), OnInfoWindowClickListener, OnMapReadyCallback { override fun onMapReady(googleMap: GoogleMap) { // Add markers to the map and do other map setup. // ... // Set a listener for info window events. googleMap.setOnInfoWindowClickListener(this) } override fun onInfoWindowClick(marker: Marker) { Toast.makeText( this, "Info window clicked", Toast.LENGTH_SHORT ).show() } }
Java
class InfoWindowActivity extends AppCompatActivity implements GoogleMap.OnInfoWindowClickListener, OnMapReadyCallback { @Override public void onMapReady(GoogleMap googleMap) { // Add markers to the map and do other map setup. // ... // Set a listener for info window events. googleMap.setOnInfoWindowClickListener(this); } @Override public void onInfoWindowClick(Marker marker) { Toast.makeText(this, "Info window clicked", Toast.LENGTH_SHORT).show(); } }
Benzer şekilde, uzun tıklama etkinliklerini izlemek için
OnInfoWindowLongClickListener
:
telefon ederek ayarlayabilirsiniz
GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener)
.
Bu işleyici, tıklama işleyiciye benzer şekilde davranır ve
onInfoWindowClose(Marker)
geri çağırmasına sahip uzun tıklama etkinlikleri.
Bilgi penceresi kapandığında bildirim almak için şunu kullanın:
OnInfoWindowCloseListener
:
arayarak ayarlandı
GoogleMap.setOnInfoWindowCloseListener(OnInfoWindowCloseListener)
. Bu kurstan sonra
onInfoWindowClose(Marker)
geri aranır.
Bilgi penceresini yenileme hakkında not: onInfoWindowClose()
etkinliği aşağıdaki durumlarda tetiklenir
Kullanıcı, halihazırda açık olan bir işaretçiye dokunarak bilgi penceresini yeniler
bilgi penceresine gidin. Ancak açık bir bilgi penceresinde Marker.showInfoWindow()
'ü programatik olarak çağırırsanız onInfoWindowClose()
etkinliği tetiklenmez. İkincisi
bilgi penceresinin açık olduğunun farkında olduğunuz varsayımına dayanır.
kapatıp yeniden açın.
Bilgi pencereleriyle ilgili bir önceki bölümde belirtildiği gibi, bilgi penceresi Canlı görüntüleme. Bunun yerine, görünüm haritada bir resim olarak oluşturulur. Kullanıcı görünüm için ayarladığınız dinleyiciler göz ardı edilir ve Görünümün çeşitli bölümlerindeki tıklama etkinliklerini birbirinden ayırt edebilirsiniz. Özel bilgi pencerenize düğme, onay kutusu veya metin girişi gibi etkileşimli bileşenler yerleştirmemeniz önerilir.