Harita ekleme

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Platform seçin: Android iOS JavaScript

Bu makalede, Android için Haritalar SDK'sını kullanmak üzere projeyi yapılandırdıktan sonra bir Android uygulamasına temel harita ekleme işlemi 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şlevselliğini ve verilerini yönetmek için kullanabileceği birkaç sınıf sağlar. Sınıflar, Android kullanıcı arayüzü modelini temel alan kullanıcı etkileşimlerini destekler. Örneğin, haritanın başlangıç durumunu ayarlamak ve çalışma zamanında kullanıcıdan gelen hareket girişine yanıt vermek gibi işlemler yapılabilir.

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ıdır. Uygulamanız, yalnızca SupportMapFragment veya MapView nesnesinden alınan bir GoogleMap nesnesine 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 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 otomatik olarak şu işlemleri gerçekleştirir:

  • Google Haritalar hizmetine bağlanılıyor.
  • Harita desenleri indiriliyor.
  • Cihaz ekranında kartlar gösteriliyor.
  • Kaydırma ve yakınlaştırma gibi çeşitli denetimler gösteriliyor.
  • 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 eşlemede kapsayıcı nesne olarak SupportMapFragment veya MapView nesnesi kullanmanız ve ardından, GoogleMap nesnesini kapsayıcıdan almanız gerekir. Kapsayıcı sınıfları, Android parçalarından veya görünümlerinden kaynaklandığından, haritaya Android Android 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 tüm Java etkinliğinden alınmıştır. Android projesi, Boş proje şablonundan oluşturulmuş ve ardından proje yapılandırması kılavuzuna göre güncellenmiştir. Bu konuyla ilgili adımları gerçekleştirdikten 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ı olarak bir parça kullanarak temel bir haritanın nasıl ekleneceği açıklanmaktadır. Ancak bunun yerine bir görünümü kullanabilirsiniz. Örnek için GitHub'daki RawMapViewDemoActivity sayfasını inceleyin.

Temel adımlar:

  1. SDK'yı edinmek için bir API anahtarı edinin ve gerekli çerçeveleri ekleyin:

    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 alın.

  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 yol, bu değişkeni statik olarak eklemektir. Parçayı dinamik olarak eklerseniz parçayı çalışma zamanında kaldırıp değiştirmek gibi ek işlemler de yapabilirsiniz.

Parçayı istatistiksel 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ımını etkinleştirir.
  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, bir 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ü uygulama

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 herkese açık kullanıcı adını alın ve geri çağırmayı kaydedin

  1. Parça için herkese açık kullanıcı adı almak için FragmentManager.findFragmentById yöntemini çağırıp düzen dosyanızdaki parçanın kaynak kimliğini iletin. tutma yerini önceden aldığınız için parçayı dinamik olarak eklediyseniz bu adımı atlayın.

  2. Parça üzerinde geri çağırmayı 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ın

Nesneye tutma yeri 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. Bu, 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, ardından 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")
    )
}

      

Merkezinde Null Adası bulunan harita ve işaretçinin yer aldığı ekran görüntüsü.

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

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