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ızcaSupportMapFragment
veyaMapView
nesnesinden alınan birGoogleMap
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:
SDK'yı edinmek için bir API anahtarı edinin ve gerekli çerçeveleri ekleyin:
Haritayı işleyecek etkinliğe 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 tutma yeri alın.
Geri çağırmayı kaydedin.
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:
- 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ğ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:
SupportMapFragment
örneği oluşturun.- 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
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.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 GoogleMap
kullanı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") ) }
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:
Sırada ne var?
Bu adımları tamamladıktan sonra harita ayarlarını yapılandırabilirsiniz.