Harita yapılandırma

Platform seçin: Android iOS

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

Harita ayarları yapılandırılmış bir 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. İlk ayarların, Harita kapsayıcısını eklediyseniz (SupportMapFragment veya MapView) statik veya dinamik olarak gösterilir. Harita kapsayıcısı statik olarak eklendiyse 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ı ekleme hakkında ayrıntılı bilgi için Harita ekleme başlıklı makaleyi inceleyin.

İlk harita ayarları şunlardır:

Ç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ştirin.
  • Haritanın eğimini 30 olarak ayarlayın.

Çalışma zamanı ayarları:

  • Kamerayı Japonya'nın Kyoto kentine ortalayın.
  • 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:

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 ve terrain.

  • 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 pusulanın gösterilip gösterilmeyeceğini belirtir. Ayrıntılar için UiSettings öğesine bakın.

  • uiZoomGestures, uiScrollGestures, uiRotateGestures, uiTiltGestures: Belirli hareketlerin etkin olup olmadığını belirtir. Görüntüleyin Ayrıntılar için UiSettings.

  • zOrderOnTop: Harita görünümünün yüzeyinin harita penceresinin, harita kontrollerinin ve penceredeki nesnelerin üzerinde gösterilip gösterilmediğini belirtir. Ayrıntılar için SurfaceView.setZOrderOnTop(boolean) işlevine bakın.

  • useViewLifecycle: Yalnızca SupportMapFragment nesnesiyle geçerlidir. Haritanın yaşam döngüsünün, parçanın görünümüne mi yoksa parçanın kendisine mi bağlı olması gerektiğini belirtir. Ayrıntılar için buraya göz atın.

  • liteModeBasit modu etkinleştirmek için true; Aksi takdirde, false.

  • mapColorScheme — Normal harita ve arazi haritası için renk şemasını belirtir. light (varsayılan), dark ve follow_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ı uygulamanıza dinamik olarak eklediyseniz haritanın ilk durumunun nasıl ayarlanacağı açıklanmaktadır.

Dinamik olarak bir SupportMapFragment veya MapView eklediyseniz haritanın ilk durumunu bir GoogleMapOptions nesnesinde ayarlayabilirsiniz. Kullanılabilir seçenekler, düzen dosyasında bulunan seçeneklerle aynıdır. GoogleMapOptions öğesini aşağıdaki gibi 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:

Haritanızı yerelleştirme

Uygulamanıza MapView veya SupportMapFragment eklediğinizde, haritadaki metin öğeleri kullanıcının cihaz ayarlarına ve konumuna göre uygun dilde gösterilir. 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ştirilmiş olduğu 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:

MapType Karşılaştırma

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).

Kanada&#39;nın Vancouver kentinin haritası

İç 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ı, "normal" ve "uydu" harita türleri (GoogleMap.MAP_TYPE_NORMAL ve GoogleMap.MAP_TYPE_SATELLITE) için gösterilir. Kullanıcı yakınlaştırdığında otomatik olarak etkinleştirilir ve harita uzaklaştırıldığında 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. Bu harita türlerinde kapalı alan desteğinin ne zaman kaldırılacağını sürüm notlarından öğrenebilirsiniz.

İç mekan haritası örneği

API'deki iç mekan haritaları işlevinin özetini aşağıda bulabilirsiniz:

  • Şu numarayı arayarak iç mekan haritalarını devre dışı bırakabilirsiniz: GoogleMap.setIndoorEnabled(false). İç mekan haritaları varsayılan olarak etkindir. İç mekan haritaları aynı anda tek bir haritada gösterilir. 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 haritada setIndoorEnabled(true) adlı kişiyi arayın.
  • Varsayılan kat seçiciyi (zemin seçici) devre dışı bırakmak için GoogleMap.getUiSettings().setIndoorLevelPickerEnabled(false) çağrısı yapın. Daha fazla bilgi için Haritada etkileşimde bulunma başlıklı makaleyi inceleyin.
  • OnIndoorStateChangeListener: Bir binanın odağa girdiğini veya bir binanın bir katında etkinleşme olduğunu algılayan dinleyicileri tanımlar. 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 alan ayarlaması yapma

Bu videoda, harita dolgusu örneği gösterilmektedir.

Google haritası, kapsayıcı öğesi (genellikle MapView veya SupportMapFragment) tarafından tanımlanan bölgenin tamamını dolduracak şekilde tasarlanmıştır. 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ı beyanları veya Google logosu gibi yasal bilgiler haritanın alt kenarında görünür.

Haritanın kenarlarına dolgu eklemek için GoogleMapsetPadding() yöntemini kullanabilirsiniz. Harita, kapsayıcının tamamını doldurmaya devam eder ancak metin ve kontrol konumlandırması, harita hareketleri ve kamera hareketleri daha küçük bir alana yerleştirilmiş gibi davranır. Bu durum aşağıdaki değişikliklere neden olur:

  • API çağrıları veya düğme basma işlemleri (ör. pusula, konumum, yakınlaştırma düğmeleri) aracılığıyla yapılan kamera hareketleri, dolgulu bölgeye göredir.
  • 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 kenarından belirtilen piksel sayısı kadar ofsetlenir.

Boşluk, haritanın bir kısmıyla örtüşen kullanıcı arayüzleri tasarlarken yararlı olabilir. Aşağıdaki resimde, harita üst ve sağ kenarlarında doldurulmuştur. Görünür harita kontrolleri ve yasal metin, yeşil renkli dolgulu bölgenin kenarlarında gösterilir. Harita ise mavi renkli kapsayıcıyı doldurmaya devam eder. Bu örnekte, harita denetimlerini gizlemeden haritanın sağ tarafına bir menü yerleştirebilirsiniz.

Harita Alan Ayarlaması

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 veya cihazın kapalı ya da açık alanda kullanılmasına göre harita renk şemasını koyulaştırmak ya da açmak için bu özelliği kullanabilirsiniz.

Harita varsayılan olarak açık modu kullanır. Mevcut sistem ayarı değeri, UI_NIGHT_MODE_MASK için cihaz ayarına dayanır.

Kotlin

mapFragment = SupportMapFragment.newInstance(GoogleMapOptions().mapColorScheme(MapColorScheme.DARK).mapId(mapId2))

Java

mapFragment = SupportMapFragment.newInstance(new GoogleMapOptions().mapColorScheme(MapColorScheme.DARK).mapId(mapId2));

Mevcut stili koyu mod veya açık mod olarak ayarlamak için GoogleMap.setMapColorScheme() yöntemini kullanarak renk şemasını değiştirebilir ya da sistem ayarlarını uygulayabilirsiniz.

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);

Arka plan rengini yapılandır

Koyu modda çalışırken veya harita görünümleri arasında geçiş yaparken varsayılan harita arka plan rengini yapılandırmak yararlı olabilir. Bu, harita seçenekleri backgroundColor mülkü.

Kotlin

private val googleMapOptions: GoogleMapOptions =
    GoogleMapOptions().backgroundColor(Color.argb(255, 255, 0, 0));

Java

private GoogleMapOptions options = new GoogleMapOptions().backgroundColor(Color.argb(255, 255, 0, 0));

Arka plan rengini yapılandırmak için bulut tabanlı harita stillerini de kullanabilirsiniz. Harita stilinde ayarlanan arka plan rengi, yerel arka plan renginden daha yüksek önceliğe sahiptir. Daha fazla bilgi için Uygulama arka planını değiştirme renk bulut tabanlı harita stilleri.