Bu konuda, Android için Haritalar SDK'sını kullanmak üzere projeyi yapılandırdıktan sonra Android uygulamasına nasıl temel bir harita ekleyeceğiniz 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şlevlerini ve verilerini yönetmek için kullanabileceği çeşitli sınıflar sunar. Sınıflar, haritanın ilk durumunu ayarlama ve çalışma zamanında kullanıcının hareket girişine yanıt verme gibi Android kullanıcı arayüzü modeline dayanan 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 kullanılan giriş noktası. Uygulamanız birGoogleMap
nesnesine ancak bu nesne birSupportMapFragment
veyaMapView
nesnesinden alındıktan sonra erişebilir.SupportMapFragment
:GoogleMap
nesnesinin yaşam döngüsünü yönetmek için kullanılan bir parçadır.MapView
: BirGoogleMap
nesnesinin yaşam döngüsünü yönetmek için kullanılan bir görünüm.OnMapReadyCallback
:GoogleMap
nesnesine ilişkin etkinlikleri ve kullanıcı etkileşimini işleyen bir geri çağırma arayüzü.
Bir GoogleMap
nesnesi şu işlemleri otomatik olarak gerçekleştirir:
- Google Haritalar hizmetine bağlanılıyor.
- Harita desenleri indiriliyor.
- Cihaz ekranında karolar gösteriliyor.
- Kaydırma ve yakınlaştırma gibi çeşitli kontroller görüntüleniyor.
- 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 haritanın kapsayıcı nesnesi olarak SupportMapFragment
veya MapView
nesnesi kullanmanız, ardından GoogleMap
nesnesini container'dan almanız gerekir. Container sınıfları bir Android parçası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 sunar.
SupportMapFragment
sınıfı, bir GoogleMap
nesnesi için daha modern ve yaygın kullanılan kapsayıcıdır.
Kodu göster
Aşağıdaki kod, bir parçayı statik olarak eklerken bu konuda kullanılan tam Java etkinliğinden alınmıştır. Android projesi, Boş proje şablonundan oluşturulmuş ve daha sonra proje yapılandırma kılavuzuna göre güncellenmiştir. 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, bir parçayı harita kapsayıcısı olarak kullanarak temel bir haritayı nasıl ekleyeceğiniz anlatılmaktadır; ancak, bunun yerine bir görünüm kullanabilirsiniz. Örnek için GitHub'da RawMapViewDemoActivity sayfasına bakın.
Temel adımlar:
SDK'yı almak, API anahtarı edinmek ve gerekli çerçeveleri eklemek için şu adımları uygulayın:
Etkinliğe, haritayı işleyecek bir
SupportMapFragment
nesnesi ekleyin. Parçayı statik veya dinamik olarak ekleyebilirsiniz.OnMapReadyCallback
arayüzünü uygulayın.Düzen dosyasını içerik görünümü olarak ayarlayın.
Parçayı statik olarak eklediyseniz parçaya bir herkese açık kullanıcı adı ekleyin.
Geri çağırmayı kaydedin.
GoogleMap
nesnesinin bir tanıtıcısını alın.
SupportMapFragment nesnesi ekle
Uygulamanıza statik veya dinamik olarak bir SupportMapFragment
nesnesi ekleyebilirsiniz.
En basit yol, etiketi statik olarak eklemektir. Parçayı dinamik olarak eklerseniz parça üzerinde çalışma zamanında kaldırma ve değiştirme gibi ek işlemler gerçekleştirebilirsiniz.
Bir parçayı statik olarak eklemek için
Haritayı işleyecek etkinliğin düzen dosyasında:
- Bir
fragment
öğesi ekleyin. - Ad beyanını ekleyin
xmlns:map="http://schemas.android.com/apk/res-auto"
. Bu,maps
özel XML özelliklerinin kullanımını etkinleştirir. fragment
öğesindeandroid:name
özelliğinicom.google.android.gms.maps.SupportMapFragment
olarak ayarlayın.fragment
öğesineandroid:id
özelliğini ekleyin ve R.id.map kaynak kimliğine (@+id/map
) ayarlayın.
Örneğin, fragment
öğesi içeren eksiksiz bir düzen dosyasını burada bulabilirsiniz:
<?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"/>
Dinamik olarak parça eklemek için
Etkinlikte:
SupportMapFragment
örneği oluşturun.- Parçayı etkinliğe ekleyen bir işlem gerçekleştirin. Daha fazla bilgi için Parça İşlemler bölümünü inceleyin.
Ö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 bir işleyici alma ve geri çağırmayı kaydetme
Parçanın bir tanıtıcısını 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 zaten aldığınız için bu adımı atlayın.Parçada 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
nesnesinin bir tanıtıcısını alın
GoogleMap
Nesnenin işleyicisini almak için onMapReady
geri çağırma yöntemini kullanı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ğırma işlemi, GoogleMap
nesnesine bir tutma yeri getirir 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") ) }
Uygulamayı başarılı bir şekilde oluşturup çalıştırdığınızda, Null Adası'nda bir işaretçi (sıfır derece, enlem ve sıfır derece boylam) içeren bir harita görüntülenir.
Etkinliğin tamamını içeren kodu görüntüleyin:
Sırada ne var?
Bu adımları tamamladıktan sonra harita ayarlarını yapılandırabilirsiniz.