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 nasıl temel 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ş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ü modelini temel alan (ör. haritanın başlangıç durumunu ayarlama ve çalışma zamanında kullanıcıdan hareket girişine yanıt verme) 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ı. 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: 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 otomatik olarak şu işlemleri gerçekleştiriyor:

  • Google Haritalar hizmetine bağlanılıyor.
  • Harita kutuları indiriliyor.
  • Kart, cihaz ekranında gösteriliyor.
  • Kaydırma ve yakınlaştırma gibi çeşitli kontroller 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 harita için kapsayıcı 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ı veya görünümden elde edildiğinden, 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, bir parçayı statik olarak eklerken bu konuda kullanılan tam Java etkinliğinden gelir. Android projesi, Boş proje şablonundan oluşturuldu ve ardından proje yapılandırması rehberine 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 bir parça kullanılarak temel haritanın nasıl ekleneceği açıklanmaktadır. Ancak, bunun yerine bir görünüm kullanabilirsiniz. Örnekler 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. Ardından aşağıdaki 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 alın.

  6. Geri çağırmayı kaydedin.

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

SupportMapFragment nesnesi ekleme

Uygulamanıza statik veya dinamik olarak bir SupportMapFragment nesnesi ekleyebilirsiniz. En basit yöntem, bu statik olarak eklemektir. Parçayı dinamik olarak eklerseniz parçayı çalışma zamanında kaldırmak ve değiştirmek gibi ek işlemler 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ı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 ekleyip R.id.map kaynak kimliğini (@+id/map) ayarlayın.

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

<?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 İşlemleri bölümünü inceleyin.

Örnek:

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ü uygulayın

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çayı tutma ve geri çağırmayı kaydetme

  1. Parça için tutma yeri 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 önceden aldığınız için 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 herkese açık bir kullanıcı adı alın

Nesneyi tutma yeri olarak almak için onMapReady geri çağırma yöntemini kullanın.GoogleMap Harita, kullanıcı girişlerini 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 GoogleMap nesnesine bir tutma yeri alır ve 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")
    )
}

      

Null Adası&#39;nı çevreleyen harita ve işaretçinin yer aldığı ekran görüntüsü.

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

Etkinliğin tam 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.