
Bilgi penceresi, kullanıcı bir işaretçiye dokunduğunda kullanıcıya bilgi göstermenize olanak tanır.
Cihazın ekranına göre yönlendirilmiş, ilişkili işaretçisinin üzerinde ortalanmış bir bilgi penceresi çizilir. Varsayılan bilgi penceresinde, başlığın kalın olarak gösterildiği bir alan ve başlığın altında snippet metni yer alır.
Bilgi penceresinin içeriği, işaretçinin title ve snippet özellikleri tarafından tanımlanır. Hem title hem de snippet özellikleri boşsa veya nil ise işaretçi tıklandığında bilgi penceresi gösterilmez.
Aynı anda yalnızca bir bilgi penceresi gösterilir. Kullanıcı başka bir işaretçiye dokunursa mevcut pencere gizlenir ve yeni bilgi penceresi açılır. Kullanıcı, şu anda bilgi penceresi gösteren bir işaretçiyi tıklarsa 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 sahibi olmanızı sağlar.
Bilgi penceresi ekleme
Aşağıdaki snippet, yalnızca bilgi penceresinin metni için 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 mülkü ile başlığın altında daha küçük bir yazı tipinde görünecek ek metin ekleyebilirsiniz. Bilgi penceresinin genişliğinden uzun olan dizeler otomatik olarak birkaç satıra sarmalanı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, kullanıcının işaretçi üzerindeki dokunma etkinliklerine yanıt verecek şekilde tasarlanmıştır.
GMSMapView öğesinin selectedMarker özelliğini ayarlayarak bilgi penceresini programatik olarak gösterebilir veya gizleyebilirsiniz:
- Göstermek için
selectedMarkerparametresini işaretçinin adına ayarlayın. - Gizlemek için
selectedMarkeröğesininilolarak 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 yenileyecek şekilde ayarlama
Bilgi penceresinin gizlenmesini ve ardından tekrar gösterilmesini beklemek yerine, yeni özelliklerin veya bilgi penceresinin içeriğinin değiştirildiğinde hemen gösterilmesini istiyorsanız işaretçideki tracksInfoWindowChanges simgesini YES veya true olarak ayarlayın. Varsayılan değer NO veya false'tur.
Swift
london.tracksInfoWindowChanges = true
Objective-C
london.tracksInfoWindowChanges = YES;
tracksInfoWindowChanges mülkünü ne zaman ayarlayacağınıza karar vermek için performansla ilgili hususları, bilgi penceresinin otomatik olarak yeniden çizilmesinin avantajlarıyla karşılaştırmalısınız. Örneğin:
- Yapmanız gereken bir dizi değişiklik varsa mülkü
YESolarak değiştirip tekrarNOolarak ayarlayabilirsiniz. - Bir animasyon çalışırken veya içerikler eşzamansız olarak yüklenirken, işlemler tamamlanana kadar özelliği
YESolarak ayarlamanız gerekir.
İşaretçinin iconView özelliğini kullanırken dikkate alınması gereken notlara da bakın.
Bilgi penceresinin konumunu değiştirme
Cihazın ekranına göre yönlendirilmiş, ilişkili işaretçisinin üzerinde ortalanan bir bilgi penceresi çizilir. infoWindowAnchor mülkünü ayarlayarak bilgi penceresinin işaretçiye göre konumunu değiştirebilirsiniz. Bu özellik, hem x hem de y'nin 0,0 ile 1,0 arasında olduğu bir (x, y) ofseti olarak tanımlanan bir CGPoint değerini kabul eder. Varsayılan ofset (0, 5, 0, 0) yani ortada üst kısımdı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 kullanılacak özel bir bilgi penceresi (UIView) döndürebilir. Daha fazla bilgi için aşağıdaki Özel bilgi pencereleri bölümüne bakın.mapView:markerInfoContents:—mapView:markerInfoWindownil döndürdüğünde çağrılır.mapView:didCloseInfoWindowOfMarker:: İşaretçinin bilgi penceresi kapatıldığında çağrılır.mapView:didLongPressInfoWindowOfMarker:: İşaretçinin bilgi penceresine uzun basıldıktan sonra çağrılır.
Etkinlikleri dinlemek için GMSMapViewDelegate protokolünü uygulamanız gerekir. GMSMapViewDelegate adresindeki etkinlikler kılavuzuna ve yöntemlerin listesine bakın.
GitHub'da bilgi penceresi etkinliklerinin nasıl işleneceğini gösteren örnekler bulunur:
Ö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 şekilde tanımlayın. Örneğin, başlık ve snippet metnini görüntülemek için özel UILabel örnekleri, bilgi penceresinde görüntülenen resimleri eklemek için UIImageView örnekleri gibi diğer görünümleri kullanabilirsiniz.
ViewController'ünüzün GMSIndoorDisplayDelegate protokolünü uyguladığından ve mapView:markerInfoWindow: etkinliği için bir dinleyici 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ürmenize olanak tanır.
Aşağıdaki resimlerde varsayılan bir bilgi penceresi, özelleştirilmiş içeriğe sahip bir bilgi penceresi ve özelleştirilmiş çerçeveye ve arka plana sahip bir bilgi penceresi gösterilmektedir.
iOS için Haritalar SDK'sı ile birlikte GitHub'da sağlanan kod örnekleri, özel bilgi pencerelerinin örneklerini içerir. Örneğin, MarkerInfoWindowViewController.m (Objective-C) veya MarkerInfoWindowViewController.swift (Swift) sınıfının tanımına bakın.
Bu örnekleri indirme ve çalıştırma hakkında bilgi için kod örneklerine bakın.