Harita ekleme

Platform seçin: Android iOS JavaScript

Bu konuda, Android için Haritalar SDK'sını kullanmak üzere projeyi yapılandırdıktan sonra Android uygulamasına nasıl temel harita ekleyeceğiniz açıklanmaktadır. Harita ekledikten sonra harita türünü ve özelliklerini değiştirebilirsiniz.

Genel Bakış

Android için Haritalar SDK'sı, uygulamanızın bir haritanın yaşam döngüsünü, işlevini ve verilerini yönetmek için kullanabileceği çeşitli sınıflar sağlar. Sınıflar, haritanın ilk durumunu ayarlama ve çalışma zamanında kullanıcıdan gelen hareket girişine yanıt verme gibi Android kullanıcı arayüzü modeline dayalı kullanıcı etkileşimlerini destekler.

Haritaları işlemek için ana arayüz ve sınıflar:

  • GoogleMap: Temel harita özelliklerini ve verilerini yönetmek için giriş noktasıdır. Uygulamanız bir GoogleMap nesnesine yalnızca SupportMapFragment veya MapView nesnesinden alındıktan sonra erişebilir.

  • SupportMapFragment: GoogleMap nesnesinin yaşam döngüsünü yönetmek için kullanılan bir parça.

  • MapView: GoogleMap nesnesinin yaşam döngüsünü yönetmek için kullanılan bir görünüm.

  • OnMapReadyCallback: GoogleMap nesnesi için etkinlikleri ve kullanıcı etkileşimini işleyen bir geri çağırma arayüzü.

GoogleMap nesnesi bu işlemleri otomatik olarak gerçekleştirir:

  • Google Haritalar hizmetine bağlanma
  • Harita parçaları indiriliyor.
  • Cihaz ekranında kartlar gösteriliyor.
  • Kaydırma ve yakınlaştırma gibi çeşitli kontrolleri görüntüleme.
  • Haritayı hareket ettirerek ve yakınlaştırıp uzaklaştırarak kaydırma ve yakınlaştırma hareketlerine yanıt verme.

Uygulamanızda bir GoogleMap nesnesi kullanmak için harita için kapsayıcı nesne olarak bir SupportMapFragment veya MapView nesnesi kullanmanız ve ardından kapsayıcıdan GoogleMap nesnesini almanız gerekir. Kapsayıcı sınıfları bir Android parçası veya görünümünden türetildiği için haritaya Android temel sınıflarının yaşam döngüsü yönetimi ve kullanıcı arayüzü özelliklerini sağlar. SupportMapFragment sınıfı, GoogleMap nesnesi için daha modern ve yaygın bir kapsayıcıdır.

Kodu görüntüleme

Aşağıdaki kod, bu konuda statik olarak bir parça eklerken kullanılan tam Java etkinliğinden alınmıştır. Android projesi, boş proje şablonundan oluşturuldu ve ardından proje yapılandırma kılavuzuna göre güncellendi. Bu konudaki adımları uyguladıktan sonra kodunuz, proje şablonuna göre farklılık gösterebilir.

  package com.example.mapsetup;

  import androidx.appcompat.app.AppCompatActivity;

  import android.os.Bundle;

  import com.google.android.gms.maps.GoogleMap;
  import com.google.android.gms.maps.OnMapReadyCallback;
  import com.google.android.gms.maps.SupportMapFragment;
  import com.google.android.gms.maps.model.LatLng;
  import com.google.android.gms.maps.model.MarkerOptions;

  // Implement OnMapReadyCallback.
  public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          // Set the layout file as the content view.
          setContentView(R.layout.activity_main);

          // Get a handle to the fragment and register the callback.
          SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                  .findFragmentById(R.id.map);
          mapFragment.getMapAsync(this);

      }

      // Get a handle to the GoogleMap object and display marker.
      @Override
      public void onMapReady(GoogleMap googleMap) {
          googleMap.addMarker(new MarkerOptions()
                  .position(new LatLng(0, 0))
                  .title("Marker"));
      }
  }

Harita eklemek için

Bu bölümde, harita kapsayıcısı olarak bir parça kullanarak temel bir haritanın nasıl ekleneceği açıklanmaktadır. Ancak bunun yerine bir görünüm de kullanabilirsiniz. Örnek için GitHub'daki RawMapViewDemoActivity sayfasına bakın.

Temel adımlar:

  1. SDK'yı edinmek, API anahtarı almak ve gerekli çerçeveleri eklemek için aşağıdaki adımları uygulayın:

    1. Google Cloud Console'da kurulum

    2. API anahtarı kullanma

    3. Android Studio projesi oluşturma

  2. Haritayı işleyecek etkinliğe bir SupportMapFragment nesnesi ekleyin. Parçayı statik veya dinamik olarak ekleyebilirsiniz.

  3. OnMapReadyCallback arayüzünü uygulayın.

  4. Düzen dosyasını içerik görünümü olarak ayarlayın.

  5. Parçayı statik olarak eklediyseniz parçanın tutma noktasını alın.

  6. Geri aramayı kaydedin.

  7. GoogleMap nesnesine erişim elde edin.

SupportMapFragment nesnesi ekleme

Uygulamanıza statik veya dinamik olarak SupportMapFragment nesnesi ekleyebilirsiniz. En basit yöntem, statik olarak eklemektir. Parçayı dinamik olarak eklerseniz çalışma zamanında kaldırma ve değiştirme gibi ek işlemler gerçekleştirebilirsiniz.

Statik olarak parça eklemek için

Haritayı işleyecek etkinliğin düzen dosyasında:

  1. fragment öğesi ekleyin.
  2. Ad beyanını ekleyin xmlns:map="http://schemas.android.com/apk/res-auto". Özel XML özelliklerinin maps kullanılabilmesini sağlar.
  3. fragment öğesinde android:name özelliğini com.google.android.gms.maps.SupportMapFragment olarak ayarlayın.
  4. fragment öğesine android:id özelliğini ekleyin ve bunu R.id.map kaynak kimliğine (@+id/map) ayarlayın.

Örneğin, fragment öğesi içeren eksiksiz bir düzen dosyası aşağıda verilmiştir:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Dinamik olarak parça eklemek için

Etkinlikte:

  1. SupportMapFragment örneği oluşturun.
  2. Parçayı etkinliğe ekleyen bir işlem yapın. Daha fazla bilgi için Fragment Transactions (Parça İşlemleri) başlıklı makaleyi inceleyin.

Örneğin:

Kotlin

val mapFragment = SupportMapFragment.newInstance()
supportFragmentManager
    .beginTransaction()
    .add(R.id.map_container, mapFragment)
    .commit()

      

Java

SupportMapFragment mapFragment = SupportMapFragment.newInstance();
FragmentTransaction fragmentTransaction =
        getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.map_container, mapFragment);
fragmentTransaction.commit();

      

OnMapReadyCallback arayüzünü uygulama

Etkinlik beyanını aşağıdaki şekilde güncelleyin:

Kotlin

class MainActivity :
    AppCompatActivity(),
    OnMapReadyCallback {

    // ...
}

      

Java

class MainActivity extends AppCompatActivity implements OnMapReadyCallback {
    // ...
}

      

İçerik görünümünü ayarlama

Etkinliğinizin onCreate yönteminde setContentView yöntemini çağırın ve düzen dosyasını içerik görünümü olarak ayarlayın.

Örneğin, düzen dosyasının adı main.xml ise:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main)
}

      

Java

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}


      

Parçanın herkese açık kullanıcı adını alın ve geri aramayı kaydedin.

  1. Parçanın referansını almak için FragmentManager.findFragmentById yöntemini çağırın ve düzen dosyanızdaki parçanın kaynak kimliğini iletin. Parçayı dinamik olarak eklediyseniz, herkese açık anahtarı zaten aldığınız için bu adımı atlayın.

  2. Parçada geri çağırmayı ayarlamak için getMapAsync yöntemini çağırın.

Örneğin, parçayı statik olarak eklediyseniz:

Kotlin

val mapFragment = supportFragmentManager
    .findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)

      

Java

SupportMapFragment mapFragment =
        (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

      

GoogleMap nesnesinin herkese açık kullanıcı adını alma

GoogleMap nesnesinin herkese açık anahtarını almak için onMapReady geri çağırma yöntemini kullanın. Geri çağırma, harita kullanıcı girişini almaya hazır olduğunda tetiklenir. Haritayı güncellemek için kullanabileceğiniz, boş olmayan bir GoogleMap sınıfı örneği sağlar.

Bu örnekte, onMapReady geri çağırma işlevi GoogleMap nesnesinin bir tutamacını alır ve ardından haritaya bir işaretçi eklenir:

Kotlin

override fun onMapReady(googleMap: GoogleMap) {
    googleMap.addMarker(
        MarkerOptions()
            .position(LatLng(0.0, 0.0))
            .title("Marker"),
    )
}

      

Java

@Override
public void onMapReady(GoogleMap googleMap) {
    googleMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
}


      

Harita ve işaretçinin Null Island'ın ortasında olduğu ekran görüntüsü.

Uygulamayı başarıyla derleyip çalıştırdığınızda, Null Island'da (sıfır derece enlem ve sıfır derece boylam) işaretçi bulunan bir harita gösterilir.

Etkinliğin tamamının kodunu görüntüleyin:

Tamamlanan Etkinliği Görüntüle


Sırada ne var?

Bu adımları tamamladıktan sonra harita ayarlarını yapılandırabilirsiniz.