Harita yapılandırma

Platform seçin: Android iOS

Bu genel bakışta, iOS için Haritalar SDK'sı kullanılarak bir iOS uygulamasına eklenmiş haritaların nasıl yapılandırılacağı açıklanmaktadır.

Genel bakış

Uygulamanıza harita ekledikten sonra haritanın ilk seçeneklerini ve çalışma zamanı ayarlarını yapılandırabilirsiniz. Harita kapsayıcısı eklemeyle ilgili ayrıntılı bilgi için Harita ekleme bölümüne bakın.

İlk harita ayarları şunları içerir:

Çalışma zamanında bu ayarları ve bazı ek ayarları GMSMapView nesnesini güncelleyerek yapılandırabilirsiniz.

Harita seçenekleri

Harita görünümünüz başlatılırken, yapılandırma seçenekleri GMSMapViewOptions ile ayarlanır. Seçenek özellikleri arasında frame, camera, mapID veya backgroundColor bulunur.

Harita Seçenekleri
kutuyu sürükleyin
Değer: CGRect
Harita çerçevesi. Varsayılan olarak CGRectZero'dur.
kamera
Değer: GMSCameraPosition
Varsayılan harita kamerası konumu.
mapID
Değer: GMSMapID
Google harita kimliği. İsteğe bağlı parametre.
backgroundColor
Değer: UIColor
Varsayılan olarak UIColor.lightGray değerine ayarlanır

Harita seçeneklerini yapılandırma

Kendi seçenek özelliklerinizi ayarlayabilir veya doğrudan GMSMapView öğesine varsayılan değerlerle örneklendirilmiş bir GMSMapViewOptions iletebilirsiniz.

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

Aşağıda, varsayılan değerlere sahip bir GMSMapViewOptions nesnesinin doğrudan GMSMapView öğesine geçirilmesiyle ilgili bir örnek verilmiştir.

Swift

let options = GMSMapViewOptions()
let mapView = GMSMapView(options:options) //initialized with default values

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; //initialized with default values

Arka plan rengini yapılandır

Koyu modda çalışırken veya harita görünümleri arasında geçiş yaparken varsayılan harita arka plan rengini geçersiz kılmak faydalı olabilir. Bu, eşleme seçenekleri backgroundColor özelliği ayarlanarak elde edilebilir.

Swift

let options = GMSMapViewOptions()
options.backgroundColor = UIColor.yellowColor
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.backgroundColor = UIColor.yellowColor;
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

Harita türleri

Haritanızı çeşitli harita türlerinden birini kullanarak özelleştirebilirsiniz. Bir haritanın türü, haritanın genel temsilini belirler. Örneğin bir atlas genellikle sınırları göstermeye odaklanan politik haritalar ve bir şehrin veya bölgenin tüm yollarını gösteren yol haritaları içerir. iOS için Haritalar SDK'sı aşağıdaki harita türlerini sunar:

Harita Türü
Normal
Değer: kGMSTypeNormal
Tipik yol haritası. Yolları, insanların inşa ettiği bazı özellikleri ve nehirler gibi önemli doğal özellikleri gösterir. Yol ve özellik etiketleri de görünür durumdadır. Harita renk şemasının koyu, açık veya sistem ayarlarına uygun olarak ayarlanmasını destekler.
Hibrit
Değer: kGMSTypeHybrid
Yol haritaları eklenmiş uydu fotoğrafı verileri. Yol ve özellik etiketleri de görünür durumdadır.
Uydu
Değer: kGMSTypeSatellite
Uydu fotoğrafı verileri. Yol ve özellik etiketleri görünmez.
Arazi
Değer: kGMSTypeTerrain
Topoğrafik veriler. Harita renkler, kontur çizgileri ve etiketler ile perspektif gölgelendirmesini içerir. Bazı yollar ve etiketler de görünür durumdadır. Harita renk şemasının koyu, açık veya sistem ayarlarına uygun olarak ayarlanmasını destekler.
Yok
Değer: kGMSTypeNone
Harita parçası yok. Temel harita parçaları oluşturulmayacak. Bu mod, karo katmanlarıyla birlikte kullanıldığında kullanışlıdır. Harita türü "yok" olarak ayarlandığında, trafik verilerinin görüntülenmesi devre dışı bırakılır.

Harita türünü değiştirme

Bir haritanın türünü ayarlamak için GMSMapView.mapType özelliğine yeni bir değer atayın. Örneğin, bir uydu haritası türünü görüntülemek için:

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)
mapView.mapType = .satellite

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                  longitude:151.2086
                                                        zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
mapView.mapType = kGMSTypeSatellite;

Aşağıdaki seçici, aynı konum için arazi, normal ve karma haritaların bir karşılaştırmasını gösterir:

İç Mekan Haritaları

iOS için Haritalar SDK'sı, yüksek yakınlaştırma düzeylerinde havaalanları, alışveriş merkezleri, büyük perakende mağazaları ve toplu taşıma istasyonları gibi iç mekan planlarını gösterir. İç mekan kat planları, "normal" harita türü (kGMSTypeNormal) için varsayılan harita desenlerine entegre edilir ve kullanıcı görüntüyü yakınlaştırdığında otomatik olarak etkinleştirilir ve harita uzaklaştığında kaybolur.

GMSMapView öğesinin indoorEnabled özelliğini NO olarak ayarlayarak iç mekan haritalarını devre dışı bırakabilirsiniz.

Swift

mapView.isIndoorEnabled = false
      

Objective-C

mapView.indoorEnabled = NO;
      

Alternatif olarak, yalnızca Zemin Seçici kontrolünü devre dışı bırakabilirsiniz.

Kat planları ekleniyor

Kat planları belirli bölgelerde sunulmaktadır. Uygulamanızda vurgulamak istediğiniz bir bina için kat planı verileri yoksa, şunları yapabilirsiniz:

  • Doğrudan Google Haritalar'a kat planları ekleyin. Bu sayede, planlarınız tüm Google Haritalar kullanıcılarına sunulur.
  • Bir kat planını Yer Yerleşimi olarak görüntüleyin. Bu şekilde, kat planlarınızı yalnızca uygulamanızın kullanıcıları görebilir.

Trafik katmanı

Kullanıcılarınıza, harita üzerine trafik yoğunluğu bilgileri yerleştirilmiş halde haritayı görüntüleme imkanı sunabilirsiniz. Bu, kullanıcıların yerel trafik durumlarının görsel bir özetini sağlar. trafficEnabled yöntemini çağırarak trafik katmanını açıp kapatabilirsiniz. Aşağıdaki örnekte, trafik katmanının bir harita üzerinde nasıl görünebileceği gösterilmektedir.

Trafik katmanını
gösteren bir Google haritası

Erişilebilirlik

Haritadaki erişilebilirlik öğeleri varsayılan olarak gizlenir. GMSMapView öğesinin accessibilityElementsHidden özelliğini NO olarak ayarlayarak erişilebilirliği etkinleştirebilirsiniz. Bu, yer paylaşımlı nesneler (GMSMarker ve bilgi pencereleri, GMSPolyline vb.) için erişilebilirlik öğelerinin oluşturulmasına neden olur.

Swift

mapView.accessibilityElementsHidden = false
      

Objective-C

mapView.accessibilityElementsHidden = NO;
      

Bu mülk, resmi olmayan UIAccessibility protokolüne göredir. Tek fark, iOS için Haritalar SDK'sındaki varsayılan değerin YES olmasıdır.

Konumum

Varsayılan olarak, haritada konum verisi gösterilmez. GMSMapView üzerinde myLocationEnabled ayarlayarak mavi "Konumum" noktasını ve pusula yönünü etkinleştirebilirsiniz.

Swift

mapView.isMyLocationEnabled = true
      

Objective-C

mapView.myLocationEnabled = YES;
      

Bu özellik etkinleştirildiğinde, myLocation özelliği aracılığıyla kullanıcının mevcut konumu gösterilir. Bu özellik hemen kullanılamayabilir (örneğin, kullanıcıdan iOS tarafından bu verilere erişime izin vermesi istenirse). Bu durumda nil değerini alır.

Swift

print("User's location: \(String(describing: mapView.myLocation))")
      

Objective-C

NSLog(@"User's location: %@", mapView.myLocation);
      

3D binalar

Birçok şehir yakından bakıldığında, aşağıdaki Seattle, Washington şehrinde görülen 3D binalarla karşılaşır.

Seattle, Washington'daki binaların 3D haritası.

Swift veya Objective-C'de ilgili GMSMapView özelliğini aşağıda gösterildiği gibi ayarlayarak 3D binaları devre dışı bırakabilirsiniz:

Swift

mapView.isBuildingsEnabled = false
      

Objective-C

[mapView setBuildingsEnabled:NO];
      

Harita dolgusu

Google Haritası, GMSMapView tarafından belirlenen tüm bölgeyi dolduracak şekilde tasarlanmıştır. Haritanın görünümü ve davranışı birçok açıdan görünümün boyutlarıyla tanımlanır:

  • Kameranın hedefi, dolgulu bölgenin merkezini yansıtır.
  • Harita denetimleri haritanın kenarlarına göre konumlandırılır.
  • Telif hakkı beyanları veya Google logosu gibi yasal bilgiler, haritanın alt kenarında görünür.

GMSMapView işaretini kullanarak haritanın kenarlarına dolgu ekleyebilirsiniz.padding mülkündeki her mülk. Harita, kapsayıcının tamamını doldurmaya devam eder ancak metin ve kontrol konumlandırması, harita hareketleri ve kamera hareketleri daha küçük bir alana yerleştirilmiş gibi çalışır. Bu durum aşağıdaki değişikliklere yol açar:

  • API çağrıları veya düğmeye basılan düğmeler (ör. pusula, konumum) kullanılarak yapılan kamera hareketleri, dolgulu bölgeye göre belirlenir.
  • GMSMapView.projection, yalnızca doldurulmuş bölgeyi içeren bir projeksiyon döndürür.
  • Kullanıcı arayüzü kontrolleri, kapsayıcının kenarından belirtilen sayıda noktayla uzaklaştırılır.

Haritanın bir kısmıyla çakışan kullanıcı arayüzleri tasarlarken dolgu yararlı olabilir. Örneğin, resimde, harita üst ve sağ kenarlar boyunca doldurulur. Görünür harita denetimleri ve yasal metin, dolgulu bölgenin kenarlarında gösterilir. Yeşil renkle gösterilirken, harita mavi renkle tüm kapsayıcıyı doldurmaya devam eder. Bu örnekte, harita kontrollerini gizlemeden bir menüyü haritanın sağ üzerinde kaydırabilirsiniz.

Harita Dolgusu

Haritanıza dolgu eklemek için bir UIEdgeInsets nesnesi oluşturun ve bunu GMSMapView öğesine iletin.padding mülk.

Swift

// Insets are specified in this order: top, left, bottom, right
let mapInsets = UIEdgeInsets(top: 100.0, left: 0.0, bottom: 0.0, right: 300.0)
mapView.padding = mapInsets
      

Objective-C

// Insets are specified in this order: top, left, bottom, right
UIEdgeInsets mapInsets = UIEdgeInsetsMake(100.0, 0.0, 0.0, 300.0);
mapView.padding = mapInsets;
      

Harita renk şeması

Normal ve arazi türündeki haritalar için harita renk şemasını koyu, açık veya geçerli sistem ayarlarını kullanacak şekilde ayarlayabilirsiniz. Örneğin, günün saatine veya cihazın iç ya da dış mekan kullanımına göre haritanın renk şemasını koyulaştırabilir veya açıklayabilirsiniz.

Harita renk şemasını ayarlamak ve güncellemek için GMSMapView overrideUserInterfaceStyle: aracını kullanın.

Swift

let options = GMSMapViewOptions()
// Map is init to use light mode by default.
let mapView = GMSMapView(options: options)
// Set map to use dark mode.
mapView.overrideUserInterfaceStyle = .dark
// Set map to use light mode.
mapView.overrideUserInterfaceStyle = .light
// Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle
mapView.overrideUserInterfaceStyle = .unspecified

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
// Map is init to always use light mode.
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
// Set map to use dark mode.
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleDark;
// Set map to use light mode.
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
// Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleUnspecified;