Harita ekle

Platform seçin: Android iOS JavaScript

Bu konuda, Google'a, Google Haritalar'da yerleşik olarak bulunan Projeyi Android için Haritalar SDK'sını kullanacak şekilde yapılandırmışsınızdır. Şu tarihten sonra: Harita eklediğinizde harita türünü ve özelliklerini değiştirebilirsiniz.

Genel Bakış

Android için Haritalar SDK'sı, bir haritanın yaşam döngüsünü, işlevini ve verilerini yönetmek için uygulamanızın kullanabileceği çeşitli sınıflar sağlar. Sınıflar Android kullanıcı arayüzü modeline dayalı etkileşimleri (örneğin, ve çalışma zamanında kullanıcının hareket girişine yanıt vermeniz gerekir.

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 bir GoogleMap nesnesine ancak şundan sonra erişebilir: SupportMapFragment veya MapView nesnesinden alındı.

  • SupportMapFragment — Şu öğenin parçası: bir GoogleMap nesnesinin yaşam döngüsünü yönetiyor.

  • MapView — Bir öğenin yaşam döngüsünü yönetmek için kullanılan bir görünüm GoogleMap nesne.

  • OnMapReadyCallback — Bir geri çağırma arayüzü: GoogleMap nesnesine ilişkin etkinlikleri ve kullanıcı etkileşimini işler.

Bir GoogleMap nesnesi otomatik olarak şu işlemleri 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 Harita için kapsayıcı nesne olarak SupportMapFragment veya MapView nesnesi ve ardından, GoogleMap nesnesini kapsayıcıdan alın. Kapsayıcı sınıfları bir Android fragmanından 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ı, bir GoogleMap nesne algılandı.

Kodu görüntüleme

Aşağıdaki kod, toplama sırasında bu konuda kullanılan tam Java etkinliğindendir statik olarak sunar. Android projesi Blank projesinden oluşturuldu şablona göre ayarlanır ve proje yapılandırma rehberine göre güncellenir. Bu konudaki adımları uyguladıktan sonra kodunuz, kullandığınız yazılıma şablon görevi görür.

  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 olarak kullanarak temel bir haritanın nasıl ekleneceği açıklanmaktadır container; ancak bunun yerine bir görünüm kullanabilirsiniz. Örnek için bkz. RawMapViewDemoActivity bulabilirsiniz.

Temel adımlar:

  1. SDK'yı almak, API anahtarı edinmek ve gerekli çerçeveleri eklemek için şu makaledeki 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 çalışma zamanında kaldırma ve değiştirme gibi ek işlemler yapabilirsiniz.

Bir parçayı Statik olarak eklemek için

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

  1. Bir fragment öğesi ekleyin.
  2. Ad beyanı ekleyin xmlns:map="http://schemas.android.com/apk/res-auto" Bu şekilde, maps özel XML özelliği arasından.
  3. fragment öğesinde android:name özelliğini şuna ayarlayın: com.google.android.gms.maps.SupportMapFragment.
  4. fragment öğesinde, android:id özelliğini ekleyin ve R.id.map kaynak kimliği (@+id/map).

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

<?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 gönderin. Daha fazla bilgi için bkz. Parça İşlemleri.

Ö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 şunu çağırın: setContentView yöntemini kullanı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 bir herkese açık kullanıcı adı eklemek için FragmentManager.findFragmentById yöntemini nasıl kullanabilirsiniz? düzen dosyanızdaki parçanın kaynak kimliği. Parçayı eklediyseniz dinamik olarak herkese açık kullanıcı adını zaten aldığınız için bu adımı atlayın.

  2. getMapAsync olabilir.

Ö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

onMapReady geri çağırma yöntemini kullanarak GoogleMapnesne. Geri çağırma işlevi, harita kullanıcı girişi almaya hazır olduğunda tetiklenir. Bu, oluşturduğunuz GoogleMap sınıfının boş olmayan bir örneğini sağlar Haritayı güncellemek için kullanabileceğiniz araçlar.

Bu örnekte onMapReady geri çağırma işlevi, GoogleMap nesnesinin bir işleyicisini 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şaretçi Null Adası&#39;nın ortasına yerleştirilmiş ekran görüntüsü.

Uygulamayı başarılı bir şekilde derleyip çalıştırdığınızda, bir işaretleyiciyle gösterilir (sıfır enlem ve sıfır derece boylam).

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

Görüntüle Etkinliği Tamamla


Sırada ne var?

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