
Bilgi penceresi, kullanıcı bir işaretçiye dokunduğunda kullanıcıya bilgi göstermenize olanak tanır.
Bilgi penceresi, cihazın ekranına göre yönlendirilmiş ve ilişkili işaretçinin üzerinde ortalanmış şekilde çizilir. Varsayılan bilgi penceresinde, başlık kalın yazı tipiyle gösterilir ve başlığın altında snippet metni yer alır.
Bilgi penceresinin içeriği, işaretçinin title ve snippet özellikleriyle tanımlanır. Hem title hem de snippet özellikleri boş veya nil ise işaretçiyi tıklamak bilgi penceresi göstermez.
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ı, 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 sahibi olmanızı 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ğiyle, 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 sığdı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 veya gizleme
Bilgi pencereleri, kullanıcının işaretçiye dokunma etkinliklerine yanıt verecek şekilde tasarlanmıştır.
GMSMapView öğesinin selectedMarker özelliğini ayarlayarak bir bilgi penceresini programatik olarak gösterebilir veya gizleyebilirsiniz:
- İşaretçiyi göstermek için
selectedMarkerdeğerini işaretçinin adı olarak ayarlayın. - Gizlemek için
selectedMarkerdeğerininilolarak 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
Yeni özelliklerin veya bilgi penceresi içeriğinin, bilgi penceresinin gizlenip tekrar gösterilmesini beklemeden, değiştirildiğinde hemen gösterilmesini istiyorsanız 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ğini ne zaman ayarlayacağınıza karar vermek için performansla ilgili hususları, bilgi penceresinin otomatik olarak yeniden çizilmesinin avantajlarıyla karşılaştırmanız gerekir. Örneğin:
- Yapmanız gereken bir dizi değişiklik varsa özelliği
YESolarak değiştirip ardından tekrarNOolarak değiştirebilirsiniz. - 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
Bilgi penceresi, cihazın ekranına göre yönlendirilmiş ve ilişkili işaretçinin üzerinde ortalanmış şekilde çizilir. infoWindowAnchor özelliğini 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 CGPoint değerini kabul eder. Varsayılan ofset (0,5, 0,0), yani üst orta kısımdır. infoWindowAnchor ofsetini ayarlamak, bilgi penceresini özel bir simgeyle hizalamak için kullanışlı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 penceresiniUIViewolarak 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:— 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. Etkinlikler kılavuzuna ve GMSMapViewDelegate sayfasındaki yöntemler listesine bakı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, başlık ve snippet metnini görüntülemek için özel UILabel örneklerini, bilgi penceresinde gösterilen resimleri eklemek için ise UIImageView örnekleri gibi diğer görünümleri kullanabilirsiniz.
ViewController öğenizin 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çeriklere sahip bir bilgi penceresi ve özelleştirilmiş çerçeve ile arka plana sahip bir bilgi penceresi gösterilmektedir.
iOS için Haritalar SDK'sı ile birlikte sunulan GitHub'daki kod örnekleri, özel bilgi pencereleriyle ilgili örnekler 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 örnekleri bölümüne bakın.