Haritanın stilini ayarlama

Platform seçin: Android iOS JavaScript

Bu kılavuzda, bir geziyi takip ederken Android uygulamanızda gösterilen haritayı özelleştirmenin yolları açıklanmaktadır. Haritanın görünümünü ve tarzını aşağıdaki şekillerde özelleştirebilirsiniz:

Bulut tabanlı harita stilleri ile haritaya stil uygulama

Bulut tabanlı harita stillerini kullanarak haritalar bileşeninin görünümünü ve tarzını özelleştirin. Google Cloud Console'da, Google Haritalar'ı kullanan tüm uygulamalarınız için harita stilleri oluşturup düzenleyebilirsiniz. Bu işlem için kodunuzda herhangi bir değişiklik yapmanız gerekmez. Daha fazla bilgi için Bulut tabanlı harita stilleri başlıklı makaleyi inceleyin.

Hem ConsumerMapView hem de ConsumerMapFragment sınıfları bulut tabanlı harita stillerini destekler. Bulut tabanlı harita stillerini kullanmak için seçili harita oluşturma aracının LATEST olduğundan emin olun. Aşağıdaki bölümlerde, bulut tabanlı harita stilinin projenizle nasıl kullanılacağına dair örnekler gösterilmektedir.

ConsumerMapView

ConsumerMapView içinde bulut tabanlı harita stilini kullanmak için GoogleMapOptions üzerinde mapId alanını ayarlayın ve GoogleMapOptions'yi getConsumerGoogleMapAsync(ConsumerMapReadyCallback, Fragment, GoogleMapOptions) veya getConsumerGoogleMapAsync(ConsumerMapReadyCallback, FragmentActivity, GoogleMapOptions) işlevine iletin.

Örnek

Java

public class SampleAppActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ConsumerMapView mapView = findViewById(R.id.consumer_map_view);

    if (mapView != null) {
      GoogleMapOptions optionsWithMapId = new GoogleMapOptions().mapId("map-id");
      mapView.getConsumerGoogleMapAsync(
          new ConsumerMapReadyCallback() {
            @Override
            public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
              // ...
            }
          },
          /* fragmentActivity= */ this,
          /* googleMapOptions= */ optionsWithMapId);
    }
  }
}

Kotlin

class SampleAppActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val mapView = findViewById(R.id.consumer_map_view) as ConsumerMapView

    val optionsWithMapId = GoogleMapOptions().mapId("map-id")
    mapView.getConsumerGoogleMapAsync(
      object : ConsumerGoogleMap.ConsumerMapReadyCallback() {
        override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
          // ...
        }
      },
      /* fragmentActivity= */ this,
      /* googleMapOptions= */ optionsWithMapId)
  }
}

ConsumerMapFragment

ConsumerMapFragments'te bulut tabanlı harita stillerini kullanmanın iki yolu vardır:

  • Statik olarak XML ile.
  • newInstance ile dinamik olarak.

XML ile statik olarak

ConsumerMapFragment içindeki XML ile bulut tabanlı harita stilini kullanmak için belirtilen mapId ile map:mapId XML özelliğini ekleyin. Aşağıdaki örneğe bakın:

<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:name="com.google.android.libraries.mapsplatform.transportation.consumer.view.ConsumerMapFragment"
    android:id="@+id/consumer_map_fragment"
    map:mapId="map-id"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

newInstance ile dinamik olarak

Bulut tabanlı harita stillerini ConsumerMapFragment içinde newInstance ile kullanmak için GoogleMapOptions'ta mapId alanını ayarlayın ve GoogleMapOptionsnewInstance'e iletin. Aşağıdaki örneğe bakın:

Java

public class SampleFragmentJ extends Fragment {

  @Override
  public View onCreateView(
      @NonNull LayoutInflater inflater,
      @Nullable ViewGroup container,
      @Nullable Bundle savedInstanceState) {

    final View view = inflater.inflate(R.layout.consumer_map_fragment, container, false);

    GoogleMapOptions optionsWithMapId = new GoogleMapOptions().mapId("map-id");
    ConsumerMapFragment consumerMapFragment = ConsumerMapFragment.newInstance(optionsWithMapId);

    getParentFragmentManager()
        .beginTransaction()
        .add(R.id.consumer_map_fragment, consumerMapFragment)
        .commit();

    consumerMapFragment.getConsumerGoogleMapAsync(
        new ConsumerMapReadyCallback() {
          @Override
          public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
            // ...
          }
        });

    return view;
  }
}

Kotlin

class SampleFragment : Fragment() {
  override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?): View? {

    val view = inflater.inflate(R.layout.consumer_map_fragment, container, false)

    val optionsWithMapId = GoogleMapOptions().mapId("map-id")
    val consumerMapFragment = ConsumerMapFragment.newInstance(optionsWithMapId)

    parentFragmentManager
      .beginTransaction()
      .add(R.id.consumer_map_fragment, consumerMapFragment)
      .commit()

    consumerMapFragment.getConsumerGoogleMapAsync(
      object : ConsumerMapReadyCallback() {
        override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
          // ...
        }
      })

    return view
  }
}

Bir geziye odaklanmak için kamera yakınlaştırmasını ayarlama

Etkin bir gezi paylaşımı oturumu sırasında kamera yakınlaştırma ve odaklama işlemlerini iki şekilde yapabilirsiniz:

  • AutoCamera: AutoCamera kullanmak istiyorsanız herhangi bir işlem yapmanız gerekmez. Kamera, geziyi takip eder. Ayrıntılı bilgi için AutoCamera başlıklı makaleyi inceleyin.

  • Kamera davranışını özelleştirme: Kamera davranışını özelleştirmek için AutoCamera'ü devre dışı bırakıp özelleştirmelerinizi yapmanız gerekir. Ayrıntılar için Kamera davranışını özelleştirme başlıklı makaleye göz atın.

AutoCamera kamerayı merkeze alır

Tüketici SDK'sı, Haritalar SDK'sı için yerleşik Konumum düğmesinde varsayılan olarak etkinleştirilen bir AutoCamera özelliği sağlar. Kamera, seyahat rotasına ve bir sonraki seyahat yol noktasına odaklanmak için yakınlaştırır.

AutoCamera uzantısını kullanmak istiyorsanız etkinleştirdiğinizden emin olun. Daha fazla bilgi için isAutoCameraEnabled başlıklı makaleyi inceleyin.

`AutoCamera`

Konumum düğmesi hakkında ayrıntılı bilgi için Maps JavaScript API dokümanlarında Konumum düğmesi bölümüne bakın.

Kamera davranışını özelleştirme

Kamera davranışını daha fazla kontrol etmek için AutoCamera'ü devre dışı bırakıp kamera davranışını manuel olarak özelleştirmek üzere aşağıdaki adımları uygulayın.

  1. ConsumerController.setAutoCameraEnabled() kullanarak AutoCamera'ü devre dışı bırakın.

  2. ConsumerController.getCameraUpdate() yöntemini kullanarak önerilen kamera sınırlarını alın.

  3. CameraUpdate bağımsız değişkenini aşağıdaki Android işlevlerinden birine gönderin:

Sırada ne var?

Android'de bir geziyi takip etme