Harita yapılandırma

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Platform seçin: Android iOS

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ış

Harita ayarları yapılandırılmış olan Kyto haritasının ekran görüntüsü. 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:

Çalışma zamanında, onMapReady geri çağırmasında GoogleMap nesnesini güncelleyerek bu ayarları ve bazı ek ayarları yapılandırabilirsiniz. Ek ayarlar, GoogleMapsı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 ve terrain.

  • 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çin UiSettings sayfasını inceleyin.

  • uiZoomGestures, uiScrollGestures, uiRotateGestures, uiTiltGestures — Belirli hareketlerin etkinleştirilip etkinleştirilmediğini belirtir. Ayrıntılar için UiSettings 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ızca SupportMapFragment 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 takdirde false.

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:

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:

MapType Karşılaştırma

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.

Vancouver, Kanada haritası

İç 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.

İç mekan haritası örneği

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 haritada setIndoorEnabled(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 ve getVisibleRegion 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.

Harita Dolgusu