Bilgi penceresi, bir işaretçiye dokunan kullanıcıya bilgi göstermenize olanak tanır.
Bilgi penceresi, cihaz ekranına doğrultularak, ilişkili işaretçisinin merkezine yerleştirilmiştir. Varsayılan bilgi penceresinde başlık kalın harflerle gösterilir ve snippet snippet'i başlığın altında yer alır.
Bilgi penceresinin içeriği, işaretçinin title
ve snippet
özellikleri tarafından tanımlanır. title
ve snippet
özellikleri boşsa veya nil
ise, işaretçiyi tıkladığınızda bir bilgi penceresi görüntülenmez.
Aynı anda yalnızca bir bilgi penceresi gösterilir. Kullanıcı başka bir işaretçiye dokunursa geçerli pencere gizlenir ve yeni bilgi penceresi açılır. Kullanıcı, bilgi penceresi gösteren bir işaretçiyi tıklarsa bu bilgi penceresi kapanır ve yeniden açılır.
Ek metin veya resim eklemek için özel bir bilgi penceresi oluşturun. Özel bilgi penceresi, pop-up'ın görünümü üzerinde tam kontrol sağlar.
Bilgi penceresi ekleme
Aşağıdaki snippet, bilgi penceresinin metni için yalnızca bir başlık içeren basit bir işaretçi oluşturur.
Swift
let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) let london = GMSMarker(position: position) london.title = "London" london.map = mapView
Objective-C
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127); GMSMarker *london = [GMSMarker markerWithPosition:position]; london.title = @"London"; london.map = mapView;
snippet
özelliğini kullanarak başlığın altında daha küçük bir yazı tipiyle görünecek ek metin ekleyebilirsiniz. Bilgi penceresinin genişliğinden daha uzun olan dizeler otomatik olarak birkaç satıra kaydırılır. Çok uzun mesajlar kesilebilir.
Swift
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView
Objective-C
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView;
Bilgi penceresini gösterme/gizleme
Bilgi pencereleri, işaretçideki kullanıcı dokunma etkinliklerine yanıt vermek için tasarlanmıştır.
Bir bilgi penceresini programatik olarak gösterebilir veya gizleyebilirsiniz. Bunun için selectedMarker
GMSMapView
özelliğini ayarlayabilirsiniz:
- Göstermek için
selectedMarker
öğesini işaretçinin adına ayarlayın. - Gizlemek için
selectedMarker
öğesininil
olarak ayarlayın.
Swift
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView // Show marker mapView.selectedMarker = london // Hide marker mapView.selectedMarker = nil
Objective-C
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView; // Show marker mapView.selectedMarker = london; // Hide marker mapView.selectedMarker = nil;
Otomatik olarak yenilenecek bir bilgi penceresi ayarlama
Değişiklik yapıldığında yeni özelliklerin veya bilgi penceresinin içeriğinin hemen görüntülenmesini ve bilgi penceresinin gizlenip tekrar gösterilmesini beklemek yerine işaretçide tracksInfoWindowChanges
değerini YES
veya true
olarak ayarlayın. Varsayılan değer NO
veya false
'dir.
Swift
london.tracksInfoWindowChanges = true
Objective-C
london.tracksInfoWindowChanges = YES;
tracksInfoWindowChanges
özelliğinin ne zaman ayarlanacağına karar vermek için bilgi penceresinin otomatik olarak yeniden çizilmesinin avantajlarına dikkat etmeniz gerekir. Örneğin:
- Yapacağınız bir dizi değişiklik varsa mülkü
YES
olarak değiştirip tekrarNO
olacak şekilde değiştirebilirsiniz. - Bir animasyon çalışırken veya içerik eşzamansız olarak yüklenirken, işlemler tamamlanana kadar mülkü
YES
değerine ayarlamalısınız.
Ayrıca, işaretçinin iconView
özelliğini kullanırken dikkat edilmesi gereken notlara bakın.
Bilgi penceresinin konumunu değiştirme
Bilgi penceresi, cihaz ekranına doğrultularak, ilişkili işaretçisinin üzerinde ortalanır. infoWindowAnchor
özelliğini ayarlayarak, işaretçiye göre bilgi penceresinin konumunu değiştirebilirsiniz. Bu özellik, CGPoint
değerini kabul eder. Burada, x ve y arasındaki değerler 0,0 ile 1,0 arasında bir (x,y) ofset olarak tanımlanır. Varsayılan göreli konum (0,5, 0,0)'dır, yani orta üst kısmıdır. infoWindowAnchor
ofsetini ayarlamak, bilgi penceresini özel bir simgeyle hizalamak için yararlıdır.
Swift
london.infoWindowAnchor = CGPoint(x: 0.5, y: 0.5) london.icon = UIImage(named: "house") london.map = mapView
Objective-C
london.infoWindowAnchor = CGPointMake(0.5, 0.5); london.icon = [UIImage imageNamed:@"house"]; london.map = mapView;
Bilgi pencerelerindeki etkinlikleri işleme
Aşağıdaki bilgi penceresi etkinliklerini dinleyebilirsiniz:
mapView:markerInfoWindow:
— Bir işaretçi seçilmek üzereyken çağrılır. İsteğe bağlı olarak, işaretçi için kullanmak üzereUIView
olarak bir özel bilgi penceresi döndürebilir. Daha fazla bilgi için aşağıdaki Özel bilgi pencereleri bölümüne bakın.mapView:markerInfoContents:
—mapView:markerInfoWindow
, sıfıra ulaştığında çağrılır.mapView:didCloseInfoWindowOfMarker:
- İşaretçinin bilgi penceresi kapatıldığında çağrı yapılır.mapView:didLongPressInfoWindowOfMarker:
- Bir işaretçinin bilgi penceresine uzun basıldıktan sonra çağrılır.
Etkinlikleri dinlemek için GMSMapViewDelegate
protokolünü uygulamanız gerekir. Etkinlik kılavuzu'na ve yöntem listesine GMSMapViewDelegate
göz atın.
GitHub, bilgi penceresi etkinliklerinin nasıl işleneceğini gösteren örnekler içerir:
Özel bilgi pencereleri
Özel bilgi penceresinin düzenini tanımlayan bir UIView
alt sınıfı oluşturarak bilgi pencerelerinin içeriğini özelleştirin. Bu alt sınıfta, görünümü istediğiniz gibi tanımlayın. Örneğin, bilgi penceresinde görüntülenen görüntüleri eklemek için başlık ve snippet metnini ve UIImageView
örnekleri gibi diğer görünümleri görüntülemek üzere özel UILabel
örneklerini kullanabilirsiniz.
ViewController
cihazınızın GMSIndoorDisplayDelegate
protokolünü uyguladığından ve mapView:markerInfoWindow: etkinliği için bir işleyici tanımladığından emin olun. Bu etkinlik işleyici, bir işaretleyici seçilmek üzereyken çağrılır ve işaretçi tarafından kullanılan özel bilgi penceresini tanımlamak için özel UIView
sınıfınızın bir örneğini döndürmenize olanak tanır.
Aşağıdaki resimlerde, varsayılan bilgi penceresi, özelleştirilmiş içerik barındıran bilgi penceresi ve özelleştirilmiş çerçeve ile arka plana sahip bilgi penceresi gösterilmektedir.

iOS için Haritalar SDK'sı ile sağlanan GitHub'daki kod örnekleri, özel bilgi pencerelerinin örneklerini içerir. Örneğin, MarkerInfoWindowViewController.m (Objective-C) veya MarkerInfoWindowViewController.swift (Swift) tanımına bakın.
Bu örnekleri indirme ve çalıştırma hakkında bilgi için kod örneklerini inceleyin.