Harita ekleme

Platformu seçin: Android iOS JavaScript

Bu konu, projeyi Android için Haritalar SDK'sını kullanacak şekilde yapılandırdıktan sonra Android uygulamasına temel harita ekleme işlemini açıklar. 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şlevselliğini ve verilerini yönetmek için kullanabileceği çeşitli sınıflar sağlar. Sınıflar, Android kullanıcı arayüzü modeline göre haritanın ilk durumunu ayarlama ve çalışma zamanında kullanıcıdan gelen hareket girişine yanıt verme gibi kullanıcı etkileşimlerini destekler.

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

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

  • SupportMapFragment: Bir 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ü.

Bir GoogleMap nesnesi aşağıdaki işlemleri otomatik olarak gerçekleştirir:

  • Google Haritalar hizmetine bağlanılıyor.
  • Harita desenleri indiriliyor.
  • Kartlar cihaz ekranında gösteriliyor.
  • Kaydırma ve yakınlaştırma gibi çeşitli kontroller görüntüleniyor.
  • Haritayı hareket ettirip yakınlaştırıp uzaklaştırarak kaydırma ve yakınlaştırma hareketlerine yanıt verebilirsiniz.

Uygulamanızda GoogleMap nesnesi kullanmak için harita için container nesnesi olarak bir SupportMapFragment veya MapView nesnesi kullanmanız ve 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 elde edildiği için haritaya Android temel sınıflarının yaşam döngüsü yönetimini ve kullanıcı arayüzü özelliklerini sağlar. SupportMapFragment sınıfı, bir GoogleMap nesnesi için daha modern ve ortak kapsayıcıdır.

Kodu görüntüle

Aşağıdaki kod, statik olarak bir parça eklerken bu konuda kullanılan tam Java etkinliğinden alınmıştır. Android projesi, Boş proje şablonundan oluşturuldu ve ardından proje yapılandırması kılavuzuna göre güncellendi. Bu konudaki adımları gerçekleştirdikten sonra, kodunuz proje şablonuna bağlı olarak 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ı olarak parça kullanarak temel harita ekleme yöntemi açıklanmaktadır. Ancak bunun yerine bir görünüm kullanabilirsiniz. Örnek için GitHub'daki RawMapViewDemoActivity bölümünü inceleyin.

Temel adımlar:

  1. SDK'yı edinmek için bir API anahtarı edinin ve gerekli çerçeveleri ekleyin 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çayı herkese açık kullanıcı adı olarak belirleyin.

  6. Geri çağırmayı kaydedin.

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

SupportMapFragment nesnesi ekleme

Uygulamanıza statik veya dinamik olarak bir SupportMapFragment nesnesi ekleyebilirsiniz. En basit yöntem, bu sürümü statik olarak eklemektir. Parçayı dinamik olarak eklerseniz parçayı çalışma zamanında kaldırma ve değiştirme gibi ek işlemler yapabilirsiniz.

Parçayı istatistik 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ılmasını 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 R.id.map kaynak kimliğini (@+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"/>

Parçayı dinamik olarak 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 Parça İşlemleri bölümüne bakın.

Örneğin:

Java


SupportMapFragment mapFragment = SupportMapFragment.newInstance();
getSupportFragmentManager()
    .beginTransaction()
    .add(R.id.my_container, mapFragment)
    .commit();

      

Kotlin


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

      

OnMapReadyCallback arayüzünü uygula

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

Java


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

      

Kotlin


class MainActivity : AppCompatActivity(), 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:

Java


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

      

Kotlin


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

      

Parça için bir herkese açık kullanıcı adı alın ve geri çağırmayı kaydedin

  1. Parça için bir herkese açık kullanıcı adı almak üzere 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çanın geri çağırmasını ayarlamak için getMapAsync yöntemini çağırın.

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

Java


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

      

Kotlin


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

      

GoogleMap nesnesine bir herkese açık kullanıcı adı al

Nesneyi herkese açık kullanıcı adı almak için onMapReady geri çağırma yöntemini GoogleMapkullanı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ğırması, GoogleMap nesnesine bir herkese açık kullanıcı adı alır ve haritaya bir işaretçi eklenir:

Java


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

      

Kotlin


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

      

Null Adası merkezli harita ve işaretçinin bulunduğu ekran görüntüsü.

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

Tüm etkinliğin kodunu görüntüleyin:

Etkinliğin Tamamını Göster


Sırada ne var?

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