Bu makalede, Android için Haritalar SDK'sı kullanılarak Android uygulamasına eklenmiş bir haritanın nasıl yapılandırılacağı açıklanmaktadır.
Genel bakış
Uygulamanıza bir harita ekledikten sonra, haritanın ilk ve çalışma zamanı ayarlarını yapılandırabilirsiniz. Başlangıç ayarları, harita kapsayıcısını (
SupportMapFragment
veya
MapView
) statik olarak mı yoksa dinamik olarak mı eklediğinize bağlı olarak yapılandırılmalıdır. Harita kapsayıcısı statik olarak eklendiyse ilk harita ayarlarını düzen dosyasında yapılandırabilirsiniz.
Dinamik olarak eklenmişse OnCreate
geri çağırmasındaki ilk ayarları bir GoogleMapOptions
nesnesiyle yapılandırabilirsiniz.
Harita kapsayıcı ekleme hakkında ayrıntılı bilgi için Harita ekleme başlıklı makaleyi inceleyin.
İlk harita ayarları aşağıdakileri içerir:
- Kamera konumu (konum, yakınlaştırma, dayanma ve eğim dahil). Kamera konumlandırmayla ilgili ayrıntılar için Kamera ve Görünüm bölümüne bakın.
- Harita türü.
- Görüntülenecek yakınlaştırma düğmeleri ve pusula gibi kullanıcı arayüzü bileşenleri.
- Etkinleştirilecek hareketler.
- Basit modun etkinleştirilip etkinleştirilmediği.
Çalışma zamanında, onMapReady
geri çağırmasında GoogleMap
nesnesini güncelleyerek bu ayarları ve bazı ek ayarları yapılandırabilirsiniz. Ek ayarlar, GoogleMap
sınıf yöntemleri aracılığıyla yapılandırılır. Örneğin, trafik katmanını ve harita dolgusunu yapılandıran ayarlardır.
Örnek
Aşağıdaki örnek kodda ve yukarıdaki ekran görüntüsünde, harita aşağıdaki ayarlarla yapılandırılmıştır.
İlk ayarlar düzen dosyasında yapılandırılır:
- Yakınlaştırma kontrollerini etkinleştirin.
- Hareket kontrollerini döndürmeyi etkinleştirin.
- Harita yatağı 30 olarak ayarlayın.
Çalışma zamanı ayarları:
- Kamerayı Kyoto Japan'a ortalayın.
- Karma harita türünü etkinleştirin.
- Trafik katmanını açın.
Başlangıç ayarları
<?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" xmlns:tools="http://schemas.android.com/tools" android:name="com.google.android.gms.maps.SupportMapFragment" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" map:uiZoomControls="true" map:uiRotateGestures="true" map:cameraTilt="30" />
Çalışma zamanı ayarları
package com.example.mapsetup; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import com.google.android.gms.maps.CameraUpdateFactory; 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; public class MainActivity extends AppCompatActivity implements OnMapReadyCallback { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); } // Update the map configuration at runtime. @Override public void onMapReady(GoogleMap googleMap) { // Set the map coordinates to Kyoto Japan. LatLng kyoto = new LatLng(35.00116, 135.7681); // Set the map type to Hybrid. googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); // Add a marker on the map coordinates. googleMap.addMarker(new MarkerOptions() .position(kyoto) .title("Kyoto")); // Move the camera to the map coordinates and zoom in closer. googleMap.moveCamera(CameraUpdateFactory.newLatLng(kyoto)); googleMap.moveCamera(CameraUpdateFactory.zoomTo(15)); // Display traffic. googleMap.setTrafficEnabled(true); } }
Başlamadan önce
Başlamadan önce aşağıdaki seçenekleri kullanarak bir proje oluşturabilir ve temel harita ekleyebilirsiniz:
Android Studio için Haritalar şablonunu kullanarak uygulama oluşturun. Haritalar şablonu, projenizi otomatik olarak yapılandırır ve temel bir harita ekler. Parça, harita kapsayıcısı olarak kullanılır ve statik olarak eklenir. Ayrıntılar için hızlı başlangıç sayfasına göz atın.
SDK için projenizi manuel olarak yapılandırabilir ve temel harita ekleyebilirsiniz. Bu sayede Android şablonlarını kullanabilir ve mevcut bir uygulamaya harita ekleyebilirsiniz.
Bir haritayı statik olarak ekledikten sonra yapılandırma
Bu bölümde, haritayı düzen dosyanıza statik olarak eklediyseniz haritanın ilk durumunun nasıl ayarlanacağı açıklanmaktadır.
Android için Haritalar SDK'sı, haritanın ilk durumunu doğrudan düzen dosyasından yapılandırmak üzere kullanabileceğiniz bir SupportMapFragment
veya MapView
için bir dizi özel XML özelliği tanımlar. Aşağıdaki özellikler şu anda tanımlanmıştır:
mapType
- Gösterilecek harita türü. Geçerli değerler şunlardır:none
,normal
,hybrid
,satellite
veterrain
.cameraTargetLat
,cameraTargetLng
,cameraZoom
,cameraBearing
,cameraTilt
: Başlangıçtaki kamera konumu. Ayrıntılar için kamera ve görünümler kılavuzuna bakın.uiZoomControls
,uiCompass
— Yakınlaştırma denetimlerinin ve pusulanın gösterilip gösterilmeyeceğini belirtir. Ayrıntılar içinUiSettings
sayfasını inceleyin.uiZoomGestures
,uiScrollGestures
,uiRotateGestures
,uiTiltGestures
— Belirli hareketlerin etkinleştirilip etkinleştirilmediğini belirtir. Ayrıntılar içinUiSettings
sayfasına göz atın.zOrderOnTop
: Harita görünümünün, harita penceresinin, harita denetimlerinin ve penceredeki herhangi bir nesnenin üst kısmında gösterilip gösterilmeyeceğini belirtir. Ayrıntılı bilgi için SurfaceView.setZOrderOnTop(boole) sayfasına bakın.useViewLifecycle
- YalnızcaSupportMapFragment
nesnesiyle geçerlidir. Harita yaşam döngüsünün parçanın görünümüne mi yoksa parçanın kendisine mi bağlı olacağını belirtir. Ayrıntılar için burayı inceleyin.liteMode
-true
(Basit modu etkinleştirmek için): Aksi takdirdefalse
.
Düzen dosyanızda bu özel özellikleri kullanmak için özellik, aşağıdaki ad alanı beyanını içermelidir. İstediğiniz ad alanını seçebilirsiniz. map
olması gerekmez:
xmlns:map="http://schemas.android.com/apk/res-auto"
Daha sonra, düzen dosyanıza map:
ön ekine sahip özellikler ekleyebilirsiniz.
Aşağıdaki düzen dosyası, özel eşleme özellikleriyle bir SupportMapFragment
nesnesini yapılandırır. Aynı özellikler bir MapView
nesnesine de uygulanabilir.
<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"
map:cameraBearing="112.5"
map:cameraTargetLat="-33.796923"
map:cameraTargetLng="150.922433"
map:cameraTilt="30"
map:cameraZoom="13"
map:mapType="normal"
map:uiCompass="false"
map:uiRotateGestures="true"
map:uiScrollGestures="false"
map:uiTiltGestures="true"
map:uiZoomControls="false"
map:uiZoomGestures="true"/>
Bir haritayı dinamik olarak ekledikten sonra yapılandırma
Bu bölümde, haritaya uygulamanıza dinamik olarak eklediğiniz harita başlangıç durumunun nasıl ayarlanacağı açıklanmaktadır.
Dinamik olarak bir SupportMapFragment
veya MapView
eklediyseniz haritanın ilk durumunu bir GoogleMapOptions
nesnesinde ayarlayabilirsiniz. Mevcut seçenekler, düzen dosyasında bulunan seçeneklerdir.
GoogleMapOptions
dosyasını şu şekilde oluşturabilirsiniz:
Java
GoogleMapOptions options = new GoogleMapOptions();
Kotlin
val options = GoogleMapOptions()
Ardından aşağıdaki gibi yapılandırın:
Java
options.mapType(GoogleMap.MAP_TYPE_SATELLITE) .compassEnabled(false) .rotateGesturesEnabled(false) .tiltGesturesEnabled(false);
Kotlin
options.mapType(GoogleMap.MAP_TYPE_SATELLITE) .compassEnabled(false) .rotateGesturesEnabled(false) .tiltGesturesEnabled(false)
Harita oluştururken bu seçenekleri uygulamak için aşağıdakilerden birini yapın:
- Parça oluşturmak ve ayarlarınızda aktarmak için bir
SupportMapFragment
SupportMapFragment.newInstance(GoogleMapOptions options)
statik fabrika yöntemi kullanın. MapView
kullanıyorsanızMapView(Context, GoogleMapOptions)
oluşturucuyu kullanın ve ayarlarınızı iletin.
Trafik katmanını ayarlama
Trafik katmanını etkinleştirerek haritanızdaki trafik verilerini görüntüleyebilirsiniz. setTrafficEnabled()
yöntemini çağırarak trafik katmanını etkinleştirebilir ve devre dışı bırakabilirsiniz. isTrafficEnabled()
yöntemini çağırarak trafik katmanının şu anda etkin olup olmadığını belirleyebilirsiniz. Aşağıdaki ekran görüntüsünde, trafik katmanının etkin olduğu bir harita görüntülenmektedir.
Harita türünü ayarlama
Harita türünü ayarlamak için setMapType
yöntemini çağırın.
Örneğin, bir uydu haritasını görüntülemek için:
Java
// Sets the map type to be "hybrid" map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
Kotlin
// Sets the map type to be "hybrid" map.mapType = GoogleMap.MAP_TYPE_HYBRID
Aşağıdaki resimde normal, karma ve arazi eşleme türleri karşılaştırılmıştır:

3D binalar oluşturun
Yakından görüntülendiğinde, birçok şehir Vancouver, Kanada'da aşağıdaki resimde görüldüğü gibi, 3D binaları görebilecek. GoogleMap.setBuildingsEnabled(false)
numaralı telefonu arayarak 3D binaları devre dışı bırakabilirsiniz.

İç mekan haritası ayarlarını yapma
Harita yüksek yakınlaştırma düzeylerinde; havaalanları, alışveriş merkezleri, büyük mağazalar ve toplu taşıma istasyonları gibi iç mekanlar için inşaat planlarını gösterir. İç mekan haritaları olarak adlandırılan bu kat planları "normal" ve "uydu" harita türleri (GoogleMap.MAP_TYPE_NORMAL
ve GoogleMap.MAP_TYPE_SATELLITE
) için gösterilir. Kullanıcı görüntüyü yakınlaştırdığında otomatik olarak etkinleştirilir ve harita uzaklaştırıldığında yavaşça kaybolur.
Kullanımdan kaldırma bildirimi: Gelecekteki bir sürümde, iç mekan haritaları yalnızca normal
harita türünde kullanılabilecektir. Gelecek sürümden itibaren iç mekan haritaları satellite
, terrain
veya hybrid
haritalarında desteklenmeyecektir. İç mekanın desteklenmediği durumlarda bile isIndoorEnabled()
, şu anda olduğu gibi setIndoorEnabled()
aracılığıyla ayarlanan değeri döndürmeye devam edecektir. Varsayılan olarak setIndoorEnabled
, true
şeklindedir. Sürüm notları, bu harita türlerinde iç mekan desteğinin kullanılamadığında size bilgi verir.

API'deki iç mekan haritaları işlevinin özeti aşağıda verilmiştir:
GoogleMap.setIndoorEnabled(false)
numaralı telefonu arayarak iç mekan haritalarını devre dışı bırakabilirsiniz. İç mekan haritaları varsayılan olarak etkindir. İç mekan haritaları tek seferde bir harita üzerinde görüntülenir. Bu, varsayılan olarak uygulamanıza eklenen ilk haritadır. Farklı bir haritadaki iç mekan haritalarını görüntülemek için bunları ilk haritada devre dışı bırakın ve ikinci haritadasetIndoorEnabled(true)
numarasını arayın.- Varsayılan seviye seçiciyi (döşeme seçici) devre dışı bırakmak için
GoogleMap.getUiSettings().setIndoorLevelPickerEnabled(false)
numaralı telefonu arayın. Daha ayrıntılı bilgi için Haritayla etkileşim başlıklı makaleyi inceleyin. OnIndoorStateChangeListener
: Belirli bir binanın hangi konuya odaklandığını veya binanın hangi seviyeden etkinleştirildiğini algılayan dinleyicileri tanımlar. Ayrıntılar için Harita ile etkileşim başlıklı makaleyi inceleyin.getFocusedBuilding
: Odaktaki binayı alır. Daha sonra,IndoorBuilding.getActiveLevelIndex()
numaralı telefonu arayarak etkin seviyeyi bulabilirsiniz.- Temel haritanın stilini ayarlamak iç mekan haritalarını etkilemez.
Harita dolgusu oluştur
Bu videoda harita dolgusu örneği gösterilmektedir.
Google haritaları, kapsayıcı öğesi tarafından tanımlanan bölgenin tamamını (genellikle MapView
veya SupportMapFragment
) doldurmak üzere tasarlanmıştır. Haritanın görünümü ve davranışıyla ilgili çeşitli özellikler, kapsayıcılarının boyutlarına göre belirlenir:
- Kameranın hedefi, dolgulu bölgenin merkezini yansıtacak.
- Harita denetimleri, haritanın kenarlarına göre konumlandırılır.
- Telif hakkı beyanları veya Google logosu gibi yasal bilgiler, haritanın alt kenarında görünür.
GoogleMap
kullanarak haritanın kenarlarına dolgu ekleyebilirsiniz.setPadding()
yöntemini kullanın. Harita, tüm kapsayıcıyı doldurmaya devam eder ancak metin ve kontrol konumlandırması, harita hareketleri ve kamera hareketleri daha dar bir alana yerleştirilmiş gibi davranır. Bu durum aşağıdaki değişikliklere neden olur:
- API çağrıları veya düğme basışları (ör. pusula, konumum, yakınlaştırma düğmeleri) kullanılarak yapılan kamera hareketleri, dolgulu bölgeye göre yapılır.
getCameraPosition
yöntemi, dolgulu bölgenin merkezini döndürür.Projection
vegetVisibleRegion
yöntemleri, dolgulu bölgeyi döndürür.- Kullanıcı arayüzü kontrolleri, kapsayıcının belirtilen piksel sayısına göre belirli uzaklıkta kopyasını oluşturur.
Dolgu, haritanın bir kısmıyla çakışan kullanıcı arayüzleri tasarlarken yararlı olabilir. Aşağıdaki resimde harita, üst ve sağ kenarlar boyunca doldurulmaktadır. Görünür harita kontrolleri ve yasal metin, dolgulu bölgenin kenarları boyunca yeşil renkte gösterilir. Harita ise maviyle gösterilen tüm kapsayıcıyı doldurmaya devam eder. Bu örnekte, harita denetimlerini gizlemeden menünün sağ tarafında bir menü görüntüleyebilirsiniz.