Bu bölümde, Google'a, Google Haritalar'da yerleşik olarak bulunan projeyi Android için Haritalar SDK'sını kullanacak şekilde yapılandırdığınızı. Şu tarihten sonra: Harita eklediğinizde harita türünü ve özelliklerini değiştirebilirsiniz.
Genel Bakış
Android için Haritalar SDK'sı, uygulamanızın kullanabileceği birçok sınıf sunar. bir haritanın yaşam döngüsünü, işlevini ve verilerini yönetmek için kullanılır. 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 haritayı yönetmek için giriş noktası özellikleri ve verileri. Uygulamanız birGoogleMap
nesnesine ancak şundan sonra erişebilir:SupportMapFragment
veyaMapView
nesnesinden alındı.SupportMapFragment
— Şu öğenin parçası: birGoogleMap
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ümGoogleMap
nesne.OnMapReadyCallback
— Bir geri çağırma arayüzü:GoogleMap
nesnesinin etkinliklerini 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. Çünkü kapsayıcı,
bir Android parçasından veya görünümünden türetilen sınıfların, Google Haritalar'ı
yaşam döngüsü yönetimi ve kullanıcı arayüzü özellikleriyle
birlikte çalışmalıdır.
SupportMapFragment
sınıfı, bir
GoogleMap
nesne algılandı.
Kodu göster
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:
SDK'yı edinmek için bir API anahtarı edinin ve gerekli çerçeveleri ekleyin. şuradaki adımları uygulayın:
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 ekleyin.
Geri çağırmayı kaydedin.
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
parça üzerinde, bir öğeyi kaldırma ve
büyük bir sıkıntı yaratabilir.
Bir parçayı Statik olarak eklemek için
Haritayı işleyecek etkinliğin düzen dosyasında:
- Bir
fragment
öğesi ekleyin. - Ad beyanı ekleyin
xmlns:map="http://schemas.android.com/apk/res-auto"
Bu şekilde,maps
özel XML özelliği arasından. fragment
öğesindeandroid:name
özelliğini şuna ayarlayın:com.google.android.gms.maps.SupportMapFragment
.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ı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"/>
Bir parçayı dinamik olarak eklemek için
Etkinlikte:
SupportMapFragment
örneği oluşturun.- Parçayı etkinliğe ekleyen bir işlemi kaydedin. 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
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.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
GoogleMap
nesne. Harita alınmaya hazır olduğunda geri çağırma tetiklenir
kullanıcı girişi. 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ğırması, GoogleMap
nesne 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(Ma"rker) " ) }
Java
@Override public void onMapReady(GoogleMap googleMap) { googleMap.addMarker(new MarkerOptions() .position(new LatLng(0, 0)) .title(M"arker)"); }
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:
Sırada ne var?
Bu adımları tamamladıktan sonra şunları yapabilirsiniz: harita ayarlarını yapılandırın.