Harita ekle

Platform seçin: Android iOS JavaScript

Bu bölümde, Android için Haritalar SDK'sını kullanmak üzere projeyi yapılandırdıktan sonra Android uygulamasına nasıl temel bir harita ekleyeceğiniz açıklanmaktadır. Bir 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şlevlerini ve verilerini yönetmek için kullanabileceği çeşitli sınıfları sunar. Sınıflar, haritanın ilk durumunu ayarlama ve çalışma zamanında kullanıcının hareket girişine yanıt verme gibi Android kullanıcı arayüzü modeline dayalı kullanıcı etkileşimlerini 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 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 bir görünüm.

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

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

  • Google Haritalar hizmetine bağlanılıyor.
  • Harita desenleri indiriliyor.
  • Kutular cihaz ekranında görüntüleniyor.
  • Kaydırma ve yakınlaştırma gibi çeşitli denetimler görüntüleniyor.
  • Haritayı hareket ettirerek ve 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 SupportMapFragment veya MapView nesnesini kullanmanız, ardından GoogleMap nesnesini kapsayıcıdan almanız gerekir. Kapsayıcı sınıfları bir Android parçasından veya görünümünden türetildiğinden, haritaya Android temel sınıflarının yaşam döngüsü yönetimi ve kullanıcı arayüzü özelliklerini sunar. SupportMapFragment sınıfı, bir GoogleMap nesnesi için daha modern ve ortak olan container'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ş ve daha sonra proje yapılandırma kılavuzuna göre güncellenmiştir. 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 kapsayıcısı olarak kullanarak nasıl temel bir harita ekleyeceğiniz açıklanmaktadır; ancak, harita yerine bir görünüm kullanabilirsiniz. Örnek için GitHub'daki RawMapViewDemoActivity sayfasına bakın.

Temel adımlar:

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

    1. Google Cloud Console'da ayarlayın

    2. API anahtarı kullanma

    3. Android Studio projesi oluşturma

  2. Etkinliğe, haritayı işleyecek 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 yerini alın.

  6. Geri çağırmayı kaydedin.

  7. GoogleMap nesnesi için bir herkese açık kullanıcı adı alın.

SupportMapFragment nesnesi ekleme

Uygulamanıza statik veya dinamik olarak bir SupportMapFragment nesnesi ekleyebilirsiniz. En basit yol, etiketi statik olarak eklemektir. Parçayı dinamik bir şekilde eklerseniz parça üzerinde çalışma zamanında kaldırma ve değiştirme 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. fragment öğesi ekleyin.
  2. Ad beyanını ekleyin xmlns:map="http://schemas.android.com/apk/res-auto". Bu, maps özel XML özelliklerinin kullanımını etkinleştirir.
  3. fragment öğesinde, android:name özelliğini com.google.android.gms.maps.SupportMapFragment olarak ayarlayın.
  4. fragment öğesinde android:id özelliğini ekleyip 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şlem gerçekleştirin. Daha fazla bilgi için Parça İşlemler bölümünü inceleyin.

Ö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 gibi 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 bir tanıtıcısını alın ve geri çağırmayı kaydedin.

  1. Parçanın bir tanıtıcısı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 tutma yerini zaten aldığınız için bu adımı atlayın.

  2. Parçadaki 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 nesnesi için bir herkese açık kullanıcı adı alın

GoogleMap nesnesine bir işleyici almak için onMapReady geri çağırma yöntemini kullanın. Harita, kullanıcı girişini almaya hazır olduğunda geri çağırma 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ğırma işlemi, GoogleMap nesnesine bir tutma yeri getirir 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"));
}

      

Null Adası&#39;nı merkeze alan harita ve işaretçinin bulunduğu ekran görüntüsü.

Uygulamayı başarıyla oluşturup çalıştırdığınızda, Null Adası'nda bir işaretçi (sıfır derece, enlem, sıfır derece boylam) içeren bir harita görüntülenir.

Etkinliğin tamamına ait 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.