Harita ekle

Platform seçin: Android iOS JavaScript

Bu bölümde, Android için Haritalar SDK'sını kullanacak şekilde projeyi yapılandırdıktan sonra Android uygulamasına temel bir haritanın nasıl ekleneceği 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 birkaç sınıf sağlar. Sınıflar, Android kullanıcı arayüzü modeline dayalı kullanıcı etkileşimlerini (ör. haritanın ilk durumunu ayarlama ve çalışma zamanında kullanıcının hareket girişine yanıt verme) destekler.

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

  • GoogleMap — Temel harita özelliklerini ve verilerini yönetmek için giriş noktası. Uygulamanız, GoogleMap nesnesine yalnızca bir 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: Bir GoogleMap nesnesinin yaşam döngüsünü yönetmek için kullanılan görünüm.

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

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

  • Google Haritalar hizmetine bağlanılıyor.
  • Harita parçaları indiriliyor.
  • Kartlar cihaz ekranında gösteriliyor.
  • Kaydırma ve yakınlaştırma gibi çeşitli denetimler gösteriliyor.
  • Haritayı hareket ettirip yakınlaştırarak veya uzaklaştırarak kaydırma ve yakınlaştırma hareketlerine yanıt verme.

Uygulamanızda GoogleMap nesnesi kullanmak için haritanın kapsayıcı nesnesi olarak bir SupportMapFragment veya MapView nesnesi kullanmanız ve ardından GoogleMap nesnesini kapsayıcıdan almanız gerekir. Container 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 olarak kullanılan kapsayıcıdır.

Kodu göster

Aşağıdaki kod, bir parçayı statik olarak eklerken bu konuda kullanılan tam Java etkinliğinden alınmıştır. Android projesi, boş proje şablonundan oluşturulmuştur ve daha sonra proje yapılandırma kılavuzuna göre güncellenir. 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, bir parçayı harita container'ı olarak 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'da RawMapViewDemoActivity bölümüne bakın.

Temel adımlar:

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

    1. Google Cloud Console'da kurma

    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çaya bir tutma yeri ekleyin.

  6. Geri çağırmayı kaydedin.

  7. GoogleMap nesnesinin herkese açık kullanıcı adını alın.

SupportMapFragment nesnesi ekleyin

Uygulamanıza statik veya dinamik olarak bir SupportMapFragment nesnesi ekleyebilirsiniz. En basit yolu statik olarak eklemektir. Parçayı dinamik olarak eklerseniz parça üzerinde çalışma zamanında parçası kaldırmak ve değiştirmek gibi ek işlemler gerçekleştirebilirsiniz.

Bir parçayı Statik olarak eklemek için

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

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

Örneğin, fragment öğesi içeren eksiksiz bir düzen dosyasını burada görebilirsiniz:

<?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"/>

Bir parçayı dinamik olarak eklemek için

Etkinlikte:

  1. SupportMapFragment örneği oluşturun.
  2. Parçayı etkinliğe ekleyen bir işlemi kaydedin. Daha fazla bilgi için Parça İşlemleri bölümüne bakın.

Örneğin:

Kotlin



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

      

Java


SupportMapFragment mapFragment = SupportMapFragment.newInstance();
getSupportFragmentManager()
    .beginTransaction()
    .add(R.id.my_container, mapFragment)
    .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çaya bir herkese açık kullanıcı adı getirme ve geri çağırmayı kaydetme

  1. Parçaya herkese açık kullanıcı adı 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 kullanıcı adını 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ı alın

GoogleMap nesnesine herkese açık kullanıcı adı 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 GoogleMap sınıfının boş olmayan bir örneğini sağlar.

Bu örnekte onMapReady geri çağırması GoogleMap nesnesine bir tutma yeri 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şaretleyicinin Null Island üzerinde ortalandığı ekran görüntüsü.

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

Etkinliğin tamamı için kodu görüntüleyin:

Tüm Etkinliği Göster


Sırada ne var?

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