Bu konuda, bir Android uygulamasına eklenen bir haritanın nasıl yapılandırılacağı açıklanmaktadır kullanarak Android için Haritalar SDK'sını kullanabilirsiniz.
Genel Bakış
.
Uygulamanıza harita ekledikten sonra, ilk ve çalışma zamanını yapılandırabilirsiniz.
ve Google Haritalar'ı tıklayın. İlk ayarların,
Harita kapsayıcısını eklediyseniz (
SupportMapFragment
veya
MapView
) statik veya dinamik olarak gösterilir. Harita kapsayıcısı
ilk harita ayarlarını düzen dosyasında yapılandırabilirsiniz.
Dinamik olarak eklenmişse, başlangıç ayarlarını şurada yapılandırabilirsiniz:
GoogleMapOptions
ile OnCreate
geri arama
nesnesini tanımlayın.
Harita kapsayıcısı eklemeyle ilgili ayrıntılı bilgi için Harita ekleme başlıklı makaleyi inceleyin.
İlk harita ayarları şunları içerir:
- Konum, yakınlaştırma, yönlendirme ve yatırma gibi kamera konumu. Kameranın konumlandırılmasıyla ilgili ayrıntılar için Kamera ve Görünüm konusuna bakın.
- Eşleme türü.
- Gösterilecek kullanıcı arayüzü bileşenleri (ör. yakınlaştırma ve uzaklaştırma) düğmeleri ve pusulayı kullanın.
- Etkinleştirilecek hareketler.
- Basit modun etkin olup olmadığı.
Çalışma zamanında bu ayarları ve bazı ek ayarları şu şekilde yapılandırabilirsiniz:
onMapReady
içindeki GoogleMap
nesnesini güncelleme
geri arama. Ek ayarlar,
GoogleMap
sınıfı (ör.
trafik katmanı ve harita dolgusu.
Örnek
Aşağıdaki örnek kodda ve yukarıdaki ekran görüntüsünde harita aşağıdaki ayarlarla yapılandırıldı.
İlk ayarlar düzen dosyasında yapılandırılır:
- Yakınlaştırma kontrollerini etkinleştir.
- Döndürme hareketi kontrollerini etkinleştir.
- Harita yatırma ayarını 30 yapın.
Çalışma zamanı ayarları:
- Kamerayı Kyoto Japan'ın ortasına getirin.
- Karma harita türünü etkinleştirin.
- Trafik katmanını açın.
İlk 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 bir proje oluşturabilir ve şu seçeneklere sahiptir:
Android Studio için Haritalar şablonunu kullanarak uygulama oluşturun. Haritalar şablonu projenizi otomatik olarak yapılandırır ve basit bir harita ekler. Bir parça kullanılıyor olarak yüklenir ve statik olarak eklenir. Ayrıntılar için hızlı başlangıç kılavuzunu ziyaret edin.
SDK için projenizi manuel olarak yapılandırın ve temel bir harita ekleyin. Bu, herhangi bir Android şablonunu kullanmanıza ve yeni bir ekleyebilirsiniz.
Statik olarak ekledikten sonra haritayı yapılandırma
Bu bölümde, haritayı eklediyseniz ilk durumunu nasıl ayarlayacağınız açıklanmaktadır statik olarak düzen dosyanıza ekler.
Android için Haritalar SDK'sı, özel XML özellikleri
SupportMapFragment
veya baş harfini yapılandırmak için kullanabileceğiniz bir MapView
durumunu doğrudan düzen dosyasından alabilirsiniz. Aşağıdaki özellikler
şu anda tanımlanmıştır:
mapType
— Gösterilecek harita türü. Geçerli değerler şunları içerir:none
,normal
,hybrid
,satellite
veterrain
.cameraTargetLat
,cameraTargetLng
,cameraZoom
,cameraBearing
,cameraTilt
— İlk kamera konumu. Bkz. kamera ve görünüm rehberini inceleyin.uiZoomControls
,uiCompass
— Yakınlaştırma denetimlerinin ve pusula gösterilir. Ayrıntılar içinUiSettings
sayfasına göz atın.uiZoomGestures
,uiScrollGestures
,uiRotateGestures
,uiTiltGestures
- Belirli hareketlerin etkinleştirilip etkinleştirilmeyeceğini belirtir. Görüntüleyin Ayrıntılar içinUiSettings
.zOrderOnTop
— Harita görünümü yüzeyinin şurada gösterilip gösterilmeyeceğini belirtir: simgesini, harita kontrollerini ve penceredeki herhangi bir nesneyi tıklayın. Görüntüleyin SurfaceView.setZOrderOnTop(boolean) başlıklı makaleyi inceleyin.useViewLifecycle
: YalnızcaSupportMapFragment
nesnesiyle geçerlidir. Belirtir harita yaşam döngüsünün parçanın görünümüne mi yoksa yardımcı olur. Ayrıntılı bilgi için buraya göz atın.liteMode
— Basit modu etkinleştirmek içintrue
; Aksi takdirde,false
.mapColorScheme
— Normal harita ve arazi haritası için renk şemasını belirtir.light
(varsayılan),dark
vefollow_system
değerleri şunları içerir:UI_NIGHT_MODE_MASK
için cihaz ayarına göre geçerli sistem ayarından yararlanın. Daha fazla bilgi için Renk şemasını eşleme bölümüne bakın.
Bu özel ayrıntıları düzen dosyanızda kullanmak için
aşağıdaki ad alanı beyanını dahil edin. Herhangi bir ad alanını seçebilirsiniz.
map
olması gerekmez:
xmlns:map="http://schemas.android.com/apk/res-auto"
Daha sonra, map:
önekine sahip özellikleri düzen dosyanıza ekleyebilirsiniz.
Aşağıdaki düzen dosyası, bir SupportMapFragment
nesnesini özel yapılandırma ile yapılandırır
eşleme özellikleriyle değiştirebilirsiniz. MapView
nesnesine, aşağıdaki özelliklerle aynı özellikler uygulanabilir:
olur.
<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:mapColorScheme="dark"
map:uiCompass="false"
map:uiRotateGestures="true"
map:uiScrollGestures="false"
map:uiTiltGestures="true"
map:uiZoomControls="false"
map:uiZoomGestures="true"/>
Haritayı dinamik olarak ekledikten sonra yapılandırma
Bu bölümde, haritayı eklediyseniz ilk durumunu nasıl ayarlayacağınız açıklanmaktadır uygulamanıza dinamik olarak ekleyin.
Dinamik olarak bir SupportMapFragment
veya MapView
eklediyseniz şunları yapabilirsiniz:
haritanın ilk durumunu bir GoogleMapOptions
nesnesinde ayarlayın. İlgili içeriği oluşturmak için kullanılan
mevcut seçenekler, düzen dosyasındakilerle aynı seçeneklerdir.
Aşağıdaki şekilde bir GoogleMapOptions
oluşturabilirsiniz:
Kotlin
val options = GoogleMapOptions()
Java
GoogleMapOptions options = new GoogleMapOptions();
Ardından aşağıdaki gibi yapılandırın:
Kotlin
options.mapType(GoogleMap.MAP_TYPE_SATELLITE) .compassEnabled(false) .rotateGesturesEnabled(false) .tiltGesturesEnabled(false)
Java
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:
SupportMapFragment
kullanıyorsanızSupportMapFragment.newInstance(GoogleMapOptions options)
statik fabrika yöntemini kullanmayı deneyin.MapView
kullanıyorsanızMapView(Context, GoogleMapOptions)
oluşturucu ve ayarlarınızı geçin.
Haritanızı yerelleştirme
Uygulamanıza MapView
veya SupportMapFragment
eklediğinizde metin öğeleri
kullanıcının cihazına bağlı olarak uygun dilde görüntülenir
ayarları ve konumu. Uygulamanızın kullandığı dilleri
desteklenen tüm dillerin alt kümesi için bir resConfigs
öğesi ekleyerek
dosyası olarak kaydedebilirsiniz. Bu, kullanılmayan dillerin çıkarılmasına yardımcı olur ve
uygulamanın ikili program boyutunu yönetir. Örneğin:
defaultConfig {
resConfigs "en", "fr", "es", "zh", "de", "ja", "ru", "ko", "pt", "in"
}
Android uygulamanızı yerelleştirme hakkında daha fazla bilgi edinin.
Trafik katmanını ayarlama
Trafik katmanını etkinleştirerek trafik verilerini haritanızda görüntüleyebilirsiniz. Şunları yapabilirsiniz:
öğesini çağırarak trafik katmanını etkinleştirin ve devre dışı bırakın
setTrafficEnabled()
yöntemini kullanarak trafik katmanının şu anda açık olup olmadığını
isTrafficEnabled()
yöntemidir. Aşağıdaki ekran görüntüsünde, trafik katmanının etkinleştirildiği bir harita görüntülenmektedir.
Harita türünü ayarlayın
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:
Kotlin
// Sets the map type to be "hybrid" map.mapType = GoogleMap.MAP_TYPE_HYBRID
Java
// Sets the map type to be "hybrid" map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
Aşağıdaki resimde normal, karma ve arazi harita türleri karşılaştırılmaktadır:
![Üç harita türünün karşılaştırması. MapType Karşılaştırması](https://developers-dot-devsite-v2-prod.appspot.com/static/maps/documentation/android-sdk/images/map_types.png?authuser=8&hl=tr)
3D binaları kurun
Yakından bakıldığında birçok şehirde 3D binalar görünür ve böylelikle
Vancouver, Kanada'yı görebilirsiniz. 3D binaları şu şekilde devre dışı bırakabilirsiniz:
arama
GoogleMap.setBuildingsEnabled(false)
.
![Vancouver, Kanada'nın bir haritası](https://developers-dot-devsite-v2-prod.appspot.com/static/maps/documentation/android-sdk/images/vancouver.png?authuser=8&hl=tr)
İç mekan harita ayarlarını yapın
Yüksek yakınlaştırma düzeylerinde harita, yüksek yakınlaştırma düzeylerinde
havalimanları, alışveriş merkezleri, büyük mağazalar ve toplu taşıma gibi iç mekan alanları
istasyonlar. İç mekan haritaları olarak adlandırılan bu kat planları, binanın
ve "uydu" harita türleri (GoogleMap.MAP_TYPE_NORMAL
ve
GoogleMap.MAP_TYPE_SATELLITE
) tıklayın. Bunlar, kullanıcı tarafından
uzaklaştığında yavaşça gözden kaybolur.
Kullanımdan kaldırma bildirimi: Gelecekteki bir sürümde, iç mekan
haritalar yalnızca normal
harita türünde kullanılabilecek. Ondan
kullanıma sunulduğunda, iç mekan haritaları satellite
tarihinde desteklenmeyecektir.
terrain
veya hybrid
haritaları. İç mekan kapalı olduğunda bile
destekleniyorsa isIndoorEnabled()
, değeri döndürmeye devam eder
şu anda olduğu gibi setIndoorEnabled()
aracılığıyla ayarlanmış. Ölçüt
varsayılan olarak setIndoorEnabled
, true
değerine ayarlanır. İlgili içeriği oluşturmak için kullanılan
sürüm notları sayesinde
o harita türlerinde iç mekan desteğinin ne zaman kullanılamadığını öğrenebilirsiniz.
![İç mekan haritası örneği. İç mekan haritası örneği](https://developers-dot-devsite-v2-prod.appspot.com/static/maps/documentation/android-sdk/images/indoor.png?authuser=8&hl=tr)
API'deki iç mekan haritaları işlevinin özetini burada bulabilirsiniz:
- Şu numarayı arayarak iç mekan haritalarını devre dışı bırakabilirsiniz:
GoogleMap.setIndoorEnabled(false)
. İç mekan haritaları varsayılan olarak etkindir. İç mekan haritaları şu konumda bir haritada görüntülenir: birlikte çalışır. Bu, varsayılan olarak uygulamanıza eklenen ilk haritadır. Alıcı: iç mekan haritalarını farklı bir haritada görüntüleyebilir, ilk haritada devre dışı bırakabilir ve ikinci haritadasetIndoorEnabled(true)
adlı kişiyi arayın. - Varsayılan seviye seçiciyi (kat seçici) devre dışı bırakmak için şu aramayı yapın:
GoogleMap.getUiSettings().setIndoorLevelPickerEnabled(false)
. Daha ayrıntılı bilgi için Haritayla etkileşim konusuna bakın. OnIndoorStateChangeListener
— Şu dinleyicileri tanımlar: bir binanın ön plana çıktığını veya bir seviyenin etkinleştirildiğini algılayan cihazlar bir binadır. Ayrıntılar için Haritayla etkileşim başlıklı makaleyi inceleyin.getFocusedBuilding
— içindeki binayı alır odaklanacağız. Ardından, şu numarayı arayarak bulabilirsiniz:IndoorBuilding.getActiveLevelIndex()
- Temel haritanın stilini belirlemek, iç mekan haritalarını etkilemez.
Harita dolgusunu ayarla
Bu videoda harita dolgusu örneği gösterilmektedir.
Google haritası, kapsayıcısının tanımladığı bölgenin tamamını dolduracak şekilde tasarlanmıştır
öğesi, genellikle bir MapView
veya SupportMapFragment
olur. proje yönetiminin
Haritanın görünmesi ve davranışları, kapsayıcısının boyutlarına göre tanımlanır:
- Kameranın hedefi, dolgulu bölgenin merkezini yansıtır.
- Harita denetimleri, haritanın kenarlarına göre konumlandırılır haritası.
- Telif hakkı beyannameleri veya Google logosu gibi yasal bilgiler, bir düğme ekleyin.
Haritanın kenarlarına dolgu eklemek için
GoogleMap
setPadding()
yöntemini kullanabilirsiniz. Harita
tüm kapsayıcıyı doldurmaya devam eder ancak metin ve konumlamayı kontrol
ve kamera hareketleri, bir evin bulunduğu yere yerleştirilmiş gibi
daha az yer kaplar. Bu durum aşağıdaki değişikliklere yol açar:
- API çağrıları veya düğmeye basıldığında gerçekleşen kamera hareketleri (ör. pusula, konum, yakınlaştırma düğmeleri) dolgulu bölgeye göre belirlenir.
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ü denetimlerinin, kapsayıcının kenarından belirtilen piksel sayısı.
Dolgu, şablonun bir kısmıyla çakışan kullanıcı arayüzleri tasarlarken faydalı olabilir. haritası. Aşağıdaki resimde, harita üst kısımda dolgu gösterilmektedir. sağ kenarlara dokunun. Görünür harita denetimleri ve yasal metin, yeşil renkte gösterilen dolgulu bölgenin kenarlarına kapsayıcının tamamını doldurun. Bu örnekte, varsayılan olarak sağ tarafındaki menüyü tıklayın.
Harita renk şeması
Normal ve arazi türündeki haritalar için harita renk şemasını ayarlayabilirsiniz dinamik olarak koyu, açık veya geçerli sistem ayarını kullanacak şekilde ayarlayın. Örneğin, günün saatine göre renk şemasını koyulaştırabilir veya açıkleştirebilirsiniz veya dış mekan kullanımı için izin verilmez.
Harita varsayılan olarak açık modu kullanır. Mevcut sistem ayarı değeri şuna göre:
UI_NIGHT_MODE_MASK
için cihaz ayarında.
Kotlin
mapFragment = SupportMapFragment.newInstance(GoogleMapOptions().mapColorScheme(MapColorScheme.DARK).mapId(mapId2))
Java
mapFragment = SupportMapFragment.newInstance(new GoogleMapOptions().mapColorScheme(MapColorScheme.DARK).mapId(mapId2));
Şunu kullanarak renk şemasını değiştirebilirsiniz:
GoogleMap.setMapColorScheme()
kullanarak geçerli stili koyu moda veya açık moda ayarlayabilir ya da
Ayarlar'da devre dışı bırakabilirsiniz.
Kotlin
googleMap.setMapColorScheme(MapColorScheme.DARK) googleMap.setMapColorScheme(MapColorScheme.LIGHT) googleMap.setMapColorScheme(MapColorScheme.FOLLOW_SYSTEM)
Java
googleMap.setMapColorScheme(MapColorScheme.DARK); googleMap.setMapColorScheme(MapColorScheme.LIGHT); googleMap.setMapColorScheme(MapColorScheme.FOLLOW_SYSTEM);