Bu konuda, Android için Haritalar SDK'sını kullanmak üzere projeyi yapılandırdıktan sonra Android uygulamasına temel bir haritanın nasıl ekleneceği açıklanmaktadır. 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şlevini ve verilerini yönetmek için kullanabileceği çeşitli sınıflar sağlar. Sınıflar, Android kullanıcı arayüzü modeline dayalı kullanıcı etkileşimlerini destekler. Örneğin, haritanın ilk durumunu ayarlama ve çalışma zamanında kullanıcıdan gelen hareket girişine yanıt verme.
Haritaları işlemek için kullanılan ana arayüz ve sınıflar:
GoogleMap: Temel harita öğelerini ve verilerini yönetmek için giriş noktası. Uygulamanız birGoogleMapnesnesine yalnızcaSupportMapFragmentveyaMapViewnesnesinden alındıktan sonra erişebilir.SupportMapFragment:GoogleMapnesnesinin yaşam döngüsünü yönetmek için kullanılan bir parça.MapView:GoogleMapnesnesinin yaşam döngüsünü yönetmek için kullanılan bir görünüm.OnMapReadyCallback:GoogleMapnesnesi için etkinlikleri ve kullanıcı etkileşimini işleyen bir geri çağırma arayüzü.
GoogleMap nesnesi bu işlemleri otomatik olarak gerçekleştirir:
- Google Haritalar hizmetine bağlanma
- Harita parçaları indiriliyor.
- Cihaz ekranında kartları gösterme
- Kaydırma ve yakınlaştırma gibi çeşitli kontrolleri gösterme
- Haritayı hareket ettirerek ve yakınlaştırıp uzaklaştırarak kaydırma ve yakınlaştırma hareketlerine yanıt verme
Uygulamanızda bir 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ı 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ı, GoogleMap nesnesi için daha modern ve yaygın bir kapsayıcıdır.
Kodu görüntüleme
Aşağıdaki kod, bu konuda bir parçayı statik olarak eklerken 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ı 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, harita kapsayıcısı olarak bir parça kullanarak nasıl temel harita ekleneceği açıklanmaktadır. Bununla birlikte, bunun yerine bir görünüm de kullanabilirsiniz. Örnek için Github'daki RawMapViewDemoActivity sayfasına bakın.
Temel adımlar:
SDK'yı edinmek, API anahtarı almak ve gerekli çerçeveleri eklemek için aşağıdaki adımları uygulayın:
Haritayı işleyecek etkinliğe bir
SupportMapFragmentnesnesi ekleyin. Parçayı statik veya dinamik olarak ekleyebilirsiniz.OnMapReadyCallbackarayüzünü uygulayın.Düzen dosyasını içerik görünümü olarak ayarlayın.
Parçayı statik olarak eklediyseniz parçanın herkese açık yöntemlerine erişmek için bir referans alın.
Geri aramayı kaydedin.
GoogleMapnesnesinin tutma yerini alın.
SupportMapFragment nesnesi ekleme
Uygulamanıza statik veya dinamik olarak bir SupportMapFragment nesnesi ekleyebilirsiniz.
En basit yöntem, statik olarak eklemektir. Parçayı dinamik olarak eklerseniz çalışma zamanında kaldırma ve değiştirme gibi ek işlemler gerçekleştirebilirsiniz.
Parçayı statik olarak eklemek için
Haritayı işleyecek etkinliğin düzen dosyasında:
fragmentöğesi ekleyin.- Ad beyanını ekleyin
xmlns:map="http://schemas.android.com/apk/res-auto".mapsÖzel XML özelliklerinin kullanılmasını sağlar. fragmentöğesinde,android:nameözelliğinicom.google.android.gms.maps.SupportMapFragmentolarak ayarlayın.fragmentöğesineandroid:idözelliğini ekleyin ve bunu R.id.map kaynak kimliği (@+id/map) olarak ayarlayın.
Ö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"/>
Parçayı dinamik olarak eklemek için
Etkinlikte:
SupportMapFragmentörneği oluşturun.- Parçayı etkinliğe ekleyen bir işlem yapın. Daha fazla bilgi için Fragment Transactions (Parça İşlemleri) başlıklı makaleyi inceleyin.
Örneğin:
Kotlin
if (context is FragmentActivity) { val mapFragment = SupportMapFragment.newInstance() context.supportFragmentManager .beginTransaction() .add(com.example.snippets.common.R.id.map_container, mapFragment) .commit() }
Java
SupportMapFragment mapFragment = SupportMapFragment.newInstance(); FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.map_container, mapFragment); fragmentTransaction.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 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ı main.xml olarak adlandırılmışsa:
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 herkese açık kullanıcı adını alın ve geri aramayı kaydedin.
Parçanın referansını almak için
FragmentManager.findFragmentByIdyöntemini çağırın ve düzen dosyanızdaki parçanın kaynak kimliğini iletin. Parçayı dinamik olarak eklediyseniz, herkese açık kullanıcı adını zaten aldığınız için bu adımı atlayın.Parçadaki geri çağırmayı ayarlamak için
getMapAsyncyö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 nesnesinin herkese açık kullanıcı adını alma
GoogleMap nesnesinin herkese açık anahtarını almak için onMapReady geri çağırma yöntemini kullanın. Geri çağırma, harita kullanıcı girişini almaya hazır olduğunda tetiklenir. Haritayı güncellemek için kullanabileceğiniz, boş olmayan bir GoogleMap sınıfı örneği sağlar.
Bu örnekte, onMapReady geri çağırma işlevi GoogleMap nesnesinin bir tutamacını 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")); }

Uygulamayı başarıyla derleyip çalıştırdığınızda, Null Island'da (sıfır derece enlem ve sıfır derece boylam) bir işaretçi bulunan bir harita gösterilir.
Etkinliğin tamamının kodunu görüntüleyin:
Tamamlanan Etkinliği Görüntüle
Sırada ne var?
Bu adımları tamamladıktan sonra harita ayarlarını yapılandırabilirsiniz.