Bilgi penceresinde, haritanın üzerindeki pop-up pencerede metin veya resimler görüntülenir. Bilgi pencereler her zaman bir işaretçiye sabitlenir. Varsayılan davranışı: ekrana dokunulduğunda gösterilecek.
Kod örnekleri
GitHub'daki ApiDemos deposu, bir 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örüntülenir. 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 basit yolu, title()
ve snippet()
ayarlarını yapmaktır.
yeni bir yöntemin kullanılması
olduğunu unutmayın. 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 vermek üzere tasarlanmıştır. Dilerseniz
şunu arayarak bir bilgi penceresini programlı bir şekilde gösterebilir:
showInfoWindow()
görebilirsiniz. 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()
hakkında bilgi edindiniz. 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 işlem şu sonucu da döndürürse:
null
, varsayılan bilgi penceresi kullanılır.
Bunlardan (getInfoWindow()
) ilki, Google Haritalar'ı kullanarak
tüm bilgi penceresi için kullanılacak. Bunlardan ikincisi
(getInfoContents()
) yalnızca pencerenin içeriğini özelleştirmenize olanak tanır
Ancak yine de varsayılan bilgi penceresi çerçevesini ve arka planını koruyabilirsiniz.
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 programatik olarak Marker.showInfoWindow()
adlı kişiyi
bilgi penceresini açarsanı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. Şunları yapmanız önerilir: düğmeler, onay kutuları veya metinler gibi etkileşimli bileşenleri yerleştirmeyin girişleriniz olabilir.