Harita kimlikleri oluşturma

Harita kimliği, Google Cloud'da depolanan Google Harita stilini ve yapılandırma ayarlarını temsil eden benzersiz bir tanımlayıcıdır. Web sitelerinizdeki ve uygulamalarınızdaki özellikleri etkinleştirmek, haritaları yönetmek veya haritalara stil vermek için harita kimliklerini kullanırsınız. Google Cloud Console projenizdeki Harita Yönetimi sayfasında ihtiyacınız olan her platform (JavaScript, Android, iOS veya statik haritalar) için harita kimlikleri oluşturabilirsiniz.

Harita kimliklerinin kullanıldığı özellikler ve daha fazla bilgi için Harita kimliğine genel bakış başlıklı makaleyi inceleyin.

Gerekli izinler

Projenizde harita kimlikleri oluşturmak veya bunları yönetmek için Cloud Console'daki proje IAM sayfasında uygun rol düzeyinde izinlere (Düzenleyici veya Sahip) sahip bir asıl kullanmanız gerekir. Ayrıntılı bilgi için IAM temel ve önceden tanımlanmış rolleri referansı başlıklı makaleyi inceleyin.

Harita kimlikleri oluşturma

Cloud Console'da aşağıdaki adımları uygulayarak harita kimlikleri oluşturun:

  1. Gerekli izinlere sahip bir Cloud Console projesinde oturum açın ve projeyi açın.

  2. Cloud Console'da Haritalar Yönetimi sayfasına gidin.

  3. Harita kimliği oluştur'u tıklayın.

    Yeni Harita Kimliği Oluşturma

  4. Yeni harita kimliği oluştur sayfasında aşağıdakileri yapın:

    1. Ad alanında harita kimliğine bir ad verin.
    2. İsteğe bağlı: Açıklama bölümünde, harita kimliğinin ne için kullanıldığını açıklayın.
    3. Harita türü için harita kimliğini kullanmayı planladığınız platformu seçin. JavaScript'i seçerseniz Kafes (varsayılan) veya Vektör harita türünü de seçin. Vektör haritalar hakkında daha fazla bilgi için Vektör Haritalar başlıklı makaleyi inceleyin.
    4. Yeni harita kimliğinizi göstermek için Kaydet'i tıklayın.

Harita kimliğini harita stiliyle ilişkilendirme

Bulut tabanlı harita stili kullanıyorsanız bir harita stilini harita kimliğinizle ilişkilendirirsiniz. Ayrıntılar için Stilinizi bir harita kimliğiyle ilişkilendirme başlıklı makaleye bakın.

Harita kimliğini uygulamanıza ekleme

Android

Harita kimliğinizi, <fragment> öğesi aracılığıyla etkinliğin düzen dosyasına, MapView sınıfını kullanarak veya GoogleMapOptions sınıfını kullanarak programatik olarak ekleyin.

Örneğin, res/values/strings.xml içinde map_id adlı bir dize değeri olarak depolanan bir harita kimliği oluşturduğunuzu varsayalım:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="map_id">MAP_ID</string>
</resources>

Etkinliğin düzen dosyasındaki bir <fragment> öğesi aracılığıyla eklenen haritalar için, özel stile sahip olması gereken tüm harita parçaları map:mapId özelliğinde harita kimliğini belirtmelidir:

<fragment xmlns:map="http://schemas.android.com/apk/res-auto"
    map:name="com.google.android.gms.maps.SupportMapFragment"
        map:mapId="@string/map_id" />

Harita kimliği belirtmek için map:mapId sınıfının MapView özelliğini de kullanabilirsiniz:

<com.google.android.gms.maps.MapView
    xmlns:map="http://schemas.android.com/apk/res-auto"
    ....
    map:mapId="@string/map_id" />

Bir harita kimliğini programatik olarak belirtmek için GoogleMapOptions sınıfını kullanarak bir MapFragment örneğine iletin:

Java

 MapFragment mapFragment = MapFragment.newInstance(
     new GoogleMapOptions()
         .mapId(getResources().getString(R.string.map_id)));

Kotlin

 val mapFragment = MapFragment.newInstance(
     GoogleMapOptions()
         .mapId(resources.getString(R.string.map_id))
 )

Android Studio'da uygulamanızı normalde yaptığınız gibi derleyin ve çalıştırın. İlk adımda yapılandırılan özel stiller, belirtilen harita kimliğine sahip tüm haritalara uygulanır.

Android 3D

mapId dize özelliğini Map3DOptions öğesine programatik olarak veya düzen özellikleri kullanarak ayarlayın. Map3DOptions, örnekleme sırasında Map3DView nesnesine sağlanır ve Map3DView oluşturulduktan sonra değiştirilemez.

Geliştiriciler, geçersiz veya bulunamayan harita kimliği hakkında bildirim almak ve buna tepki vermek için isteğe bağlı olarak yeni bir OnMapIdErrorListener uygulayabilir.

Harita kimliği ekleyin, haritayı programatik olarak oluşturun ve bir OnMapIdErrorListener ayarlayın:

import com.google.android.gms.maps3d.GoogleMap3D
import com.google.android.gms.maps3d.Map3DOptions
import com.google.android.gms.maps3d.Map3DView
import com.google.android.gms.maps3d.OnMap3DViewReadyCallback
import com.google.android.gms.maps3d.model.Map3DMode

class MainActivity : Activity(), OnMap3DViewReadyCallback, OnMapIdError {
  fun onCreate(...) {
    val map3DOptions = Map3DOptions(mapMode = Map3DMode.HYBRID, mapId = "MAP_ID")
    val map3DView = Map3DView(context, map3DOptions)
    map3DView.getMap3dViewAsync(this)
  }

  override fun onMap3DViewReady(googleMap3D: GoogleMap3D) {
    googleMap3D.setMapIdErrorListener(
      object : OnMapIdErrorListener {
        override fun onMapIdError() {
          // Handle error event.
        }
      }
    )
  }
}

Düzen özelliklerini kullanarak harita kimliği ekleme:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:map3d="http://schemas.android.com/apk/res-auto"
   android:layout_width="match_parent" android:layout_height="match_parent">
 <com.google.android.gms.maps3d.Map3DView
     android:id="@+id/map3dView"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     map3d:mode="hybrid"
     map3d:mapId="MAP_ID"/>
</LinearLayout>

iOS

Harita kimliği kullanarak harita oluşturmak için aşağıdakileri yapın:

  1. Cloud Console'dan harita kimliği dizesiyle GMSMapID oluşturun.
  2. Yeni oluşturduğunuz eşleme kimliğini belirten bir GMSMapView oluşturun.

Swift

let camera = GMSCameraPosition(latitude: 47.0169, longitude: -122.336471, zoom: 12)
let mapID = GMSMapID(identifier: "MAP_ID")
let mapView = GMSMapView(frame: .zero, mapID: mapID, camera: camera)
self.view = mapView

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:47.0169
                                                        longitude:-122.336471
                                                             zoom:12];
GMSMapID *mapID = [GMSMapID mapIDWithIdentifier:@"MAP_ID"];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero mapID:mapID camera:camera];
self.view = mapView;

Kendi harita kimliğinizi kullanıyorsanız Cloud Console'da harita kimliğinizi istediğiniz zaman yeni bir stile ayarlayabilirsiniz. Bu stil, yaklaşık altı saat içinde sizin ve kullanıcıların harita görünümüne otomatik olarak yansıtılır.

Değişiklikleri hemen görmek istiyorsanız uygulamadan çıkıp son kullanılan uygulamalar listesinden uygulamayı kapatmaya zorlayarak uygulamayı kapatıp yeniden başlatabilirsiniz. Güncellenen harita görünür.

iOS 3D

iOS geliştiricileri, Map üzerinde yeni bir style değiştiricisi ayarlayabilir. Bu değiştirici, bir harita kimliğini ve isteğe bağlı olarak harita kimliği geçersiz olduğunda veya bulunamadığında çağrılacak bir kapatmayı kabul eder.

import SwiftUI
import GoogleMaps3D

struct ContentView: View {
  init () {
    Map.apiKey = "YOUR_API_KEY"
  }
  var body: some View {
    Map(initialCamera: .init(
        latitude: 0.0,
        longitude: 0.0,
      ),
      mode: .hybrid
    )
    .style(
      with: "MAP_ID",
      error: {
        // Handle styling error.
      }
    )
    // Could also use trailing closure syntax
    //  .style(with: "MAP_ID") {
    //     // Handle styling error.
    //  }
  }
}

JavaScript

Uygulama kodunuzda harita kimliği içeren bir harita oluşturmak için:

  1. Haritanızı yerleştirilmiş JSON koduyla özelleştiriyorsanız MapOptions nesnenizden styles özelliğini kaldırın. Aksi takdirde bu adımı atlayın.

  2. mapId özelliğini kullanarak haritaya bir harita kimliği ekleyin. Örneğin:

map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 8,
mapId: 'MAP_ID'
});

Javascript 3D

Uygulamanızda harita kimliği içeren bir harita oluşturmak için mapId özelliğini kullanarak haritaya harita kimliği ekleyin. Örneğin:

async function init() {
    const { Map3DElement } = await google.maps.importLibrary('maps3d');

    const map = new Map3DElement({
        center: {
            lat: 37.75183154601466,
            lng: -119.52369070507672,
            altitude: 2200,
        },
        tilt: 67.5,
        heading: 108.94057782079429,
        range: 6605.57279990986,
        mapId: 'bcce776b92de1336e22c569f', // Styles are associated with map IDs.
        mode: 'HYBRID',
    });

    document.body.append(map);
}

void init();

Maps Static

Web hizmeti API'lerimizden birini kullanan yeni veya mevcut bir haritaya harita kimliği eklemek için map_id URL parametresini ekleyin ve harita kimliğinize ayarlayın. Bu örnekte, Maps Static API kullanılarak bir haritaya harita kimliği ekleme işlemi gösterilmektedir.

<img src="/maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=600x300&maptype=roadmap&markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G%7C40.711614,-74.012318&markers=color:red%7Clabel:C%7C40.718217,-73.998284&key=%3Cspan%20data-devsite-credential-type="api_key" class="replaceable-credential">YOUR_API_KEY&map_id=MAP_ID&signature=YOUR_SIGNATURE" />

ABD'nin New York eyaletindeki New York şehrinde bulunan Brooklyn Köprüsü'nün merkezde olduğu bir harita. Sağ alt köşede harita kontrolleri yer alıyor. Haritada yollar, su ve kara üzerinde özel stil uygulanır.

Harita kimliğinizi eklemeden önce Haritalar Statik URL'nizde dijital imza varsa harita kimliğinizi ekledikten sonra yeni bir dijital imza oluşturup eklemeniz gerekir. Yeni URL imzalama gizli anahtarınızı oluştururken önceki dijital imzanızı URL'den kaldırmayı unutmayın.