Bilgi penceresi, kullanıcıya bir işaretçiye dokunduğunda bilgileri görüntülemenizi sağlar.
Cihaz ekranına dayalı olarak, ilişkili işaretçinin üzerinde ortalanmış bir bilgi penceresi çizilir. Varsayılan bilgi penceresi kalın harflerle yazılmış başlık ve başlığın altında snippet metni içerir.
Bilgi penceresinin içeriği, işaretçinin title
ve
snippet
özellikleriyle tanımlanır. Hem title
hem de snippet
özellikleri boşsa işaretçiyi tıkladığınızda bilgi penceresi görüntülenmez veya nil
.
Aynı anda yalnızca bir bilgi penceresi görüntülenir. 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ıp yeniden açılır.
Daha fazla 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 ekleyin
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 yazı tipiyle görünecek ilave metinler ekleyebilirsiniz. Bilgi penceresinin genişliğinden daha uzun olan dizeler otomatik olarak
birkaç satıra kaydırılır. Çok uzun mesajlar kısaltılabilir.
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 üzere tasarlanmıştır.
GMSMapView
öğesinin selectedMarker
özelliğini ayarlayarak bilgi penceresini programatik olarak gösterebilir veya gizleyebilirsiniz:
- Göstermek için işaretçinin adına
selectedMarker
değerini ayarlayın. selectedMarker
öğesini gizlemek içinnil
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;
Bilgi penceresini otomatik olarak yenilenecek şekilde ayarlama
Bilgi penceresinin gizlenmesini ve ardından tekrar gösterilmesini beklemek yerine, değiştirildiğinde yeni özelliklerin veya bilgi penceresinin içeriğinin hemen gösterilmesini istiyorsanız işaretçide tracksInfoWindowChanges
değerini YES
veya true
olarak ayarlayın. Varsayılan değer NO
veya false
'dır.
Swift
london.tracksInfoWindowChanges = true
Objective-C
london.tracksInfoWindowChanges = YES;
tracksInfoWindowChanges
özelliğinin ne zaman ayarlanacağına karar vermek için performansla ilgili hususları, bilgi aralığının otomatik olarak yeniden çizilmesinin avantajlarıyla karşılaştırmanız gerekir. Örneğin:
- Yapılacak bir dizi değişiklik varsa özelliği
YES
, ardından tekrarNO
olarak değiştirebilirsiniz. - Bir animasyon çalışırken veya içerikler eşzamansız olarak yüklenirken, işlemler tamamlanana kadar özelliği
YES
değerine ayarlı tutmanız gerekir.
İşaretçinin iconView
özelliğini kullanırken dikkate alınması gereken notlara da bakın.
Bilgi penceresinin konumunu değiştirme
Cihaz ekranına dayalı olarak, ilişkili işaretçisinin üzerinde ortalanmış
olarak bir bilgi penceresi çizilir. infoWindowAnchor
özelliğini ayarlayarak işaretçiye göre bilgi penceresinin konumunu değiştirebilirsiniz. Bu özellik, x ve y'nin 0,0 ile 1,0 arasında değiştiği bir (x,y) ofseti olarak tanımlanan CGPoint
öğesini kabul eder. Varsayılan ofset (0, 5, 0, 0) yani orta üst değerdir. infoWindowAnchor
ofsetini ayarlamak, bilgi penceresini özel 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
biçiminde özel bir 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
, nil değerini döndürdüğünde çağrılır.mapView:didCloseInfoWindowOfMarker:
— İşaretçinin bilgi penceresi kapatıldığında çağrı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ılavuzunu ve GMSMapViewDelegate
sitesindeki yöntemlerin listesini inceleyin.
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österilen resimleri eklemek amacıyla, başlık ve snippet metnini ve diğer görünümleri (ör. UIImageView
örnekleri) göstermek için özel UILabel
örneklerini kullanabilirsiniz.
ViewController
öğenizin 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şaretçi 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ürmenizi sağlar.
Aşağıdaki resimlerde, varsayılan bilgi penceresi, özelleştirilmiş içerikler barındıran bir bilgi penceresi ve özelleştirilmiş çerçeve ve arka plana sahip bir 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 edinmek için kod örneklerine bakın.