Menata gaya peta

Dokumen ini membahas cara menyesuaikan tampilan dan nuansa peta dan kontrol opsi visibilitas data dan area pandang. Anda dapat melakukannya dengan beberapa cara berikut:

  • Menggunakan gaya visual peta berbasis cloud
  • Menetapkan opsi gaya peta langsung di kode Anda sendiri

Menata gaya peta dengan gaya visual peta berbasis Cloud

Sesuaikan tampilan dan nuansa komponen peta menggunakan gaya visual peta berbasis cloud. Anda membuat dan mengedit gaya peta di konsol Google Cloud untuk setiap aplikasi yang menggunakan Google Maps, tanpa memerlukan perubahan pada kode. Untuk informasi selengkapnya, lihat Gaya visual peta berbasis Cloud.

Class ConsumerMapView dan ConsumerMapFragment mendukung gaya visual peta berbasis cloud. Untuk menggunakan gaya visual peta berbasis cloud, pastikan peta yang dipilih perender adalah LATEST. Bagian berikut menunjukkan contoh cara menggunakan gaya visual peta berbasis cloud dengan project Anda.

ConsumerMapView

Untuk menggunakan gaya visual peta berbasis Cloud di ConsumerMapView, tetapkan Kolom mapId di GoogleMapOptions dan teruskan GoogleMapOptions ke getConsumerGoogleMapAsync(ConsumerMapReadyCallback, Fragment, GoogleMapOptions) atau getConsumerGoogleMapAsync(ConsumerMapReadyCallback, FragmentActivity, GoogleMapOptions)

Contoh

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

Ada dua cara untuk menggunakan gaya visual peta berbasis Cloud di ConsumerMapFragments:

  • Secara statis dengan XML.
  • Secara dinamis dengan newInstance.

Secara statis dengan XML

Untuk menggunakan gaya visual peta berbasis Cloud dengan XML di ConsumerMapFragment, tambahkan atribut XML map:mapId dengan atribut yang ditentukan mapId. Lihat contoh berikut:

<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"/>

Secara dinamis dengan newInstance

Untuk menggunakan gaya visual peta berbasis Cloud dengan newInstance di ConsumerMapFragment, setel kolom mapId pada GoogleMapOptions, lalu teruskan GoogleMapOptions ke newInstance. Lihat contoh berikut:

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
  }
}

Untuk menerapkan gaya peta ke peta berbagi perjalanan konsumen JavaScript, tentukan mapId dan mapOptions lainnya saat Anda membuat JourneySharingMapView.

Contoh berikut menunjukkan cara menerapkan gaya peta dengan ID peta.

JavaScript

const mapView = new google.maps.journeySharing.JourneySharingMapView({
  element: document.getElementById('map_canvas'),
  locationProviders: [locationProvider],
  mapOptions: {
    mapId: 'YOUR_MAP_ID'
  }
  // Any other styling options.
});

TypeScript

const mapView = new google.maps.journeySharing.JourneySharingMapView({
  element: document.getElementById('map_canvas'),
  locationProviders: [locationProvider],
  mapOptions: {
    mapId: 'YOUR_MAP_ID'
  }
  // Any other styling options.
});

Memberi gaya peta langsung di kode Anda sendiri

Anda juga dapat menyesuaikan gaya visual peta dengan menetapkan opsi peta saat membuat JourneySharingMapView. Contoh berikut menunjukkan cara menata gaya peta menggunakan opsi peta. Untuk informasi selengkapnya mengenai opsi peta yang dapat Anda tetapkan, lihat mapOptions dalam referensi Google Maps JavaScript API.

JavaScript

const mapView = new google.maps.journeySharing.JourneySharingMapView({
  element: document.getElementById('map_canvas'),
  locationProviders: [locationProvider],
  mapOptions: {
    styles: [
      {
        "featureType": "road.arterial",
        "elementType": "geometry",
        "stylers": [
          { "color": "#CCFFFF" }
        ]
      }
    ]
  }
});

TypeScript

const mapView = new google.maps.journeySharing.JourneySharingMapView({
  element: document.getElementById('map_canvas'),
  locationProviders: [locationProvider],
  mapOptions: {
    styles: [
      {
        "featureType": "road.arterial",
        "elementType": "geometry",
        "stylers": [
          { "color": "#CCFFFF" }
        ]
      }
    ]
  }
});

Mengontrol visibilitas data tugas ke SDK

Anda dapat mengontrol visibilitas objek tugas tertentu di peta menggunakan aturan visibilitas.

Visibilitas default data tugas

Secara default, data untuk tugas yang diberikan ke kendaraan terlihat saat kendaraan berada dalam jarak 5 perhentian dari tugas. Visibilitas berakhir saat tugas diselesaikan atau dibatalkan.

Tabel ini menunjukkan visibilitas default untuk setiap jenis tugas. Anda dapat menyesuaikan visibilitas untuk banyak tugas, tetapi tidak semua. Untuk detail selengkapnya tentang tugas jenis tugas, lihat Jenis tugas di panduan Tugas terjadwal.

Jenis tugas Visibilitas default Dapat disesuaikan? Deskripsi
Tugas ketidaktersediaan Tidak terlihat Tidak Digunakan untuk pengemudi yang beristirahat dan mengisi bahan bakar. Jika rute ke tugas pengiriman juga berisi perhentian kendaraan lain, perhentian tersebut tidak ditampilkan jika hanya berisi tugas ketidaktersediaan. Perkiraan waktu tiba dan perkiraan waktu penyelesaian tugas masih ditampilkan untuk tugas pengiriman itu sendiri.
Membuka tugas kendaraan Dapat dilihat Ya Visibilitas berakhir saat tugas selesai atau dibatalkan. Anda dapat menyesuaikan visibilitas tugas kendaraan terbuka. Lihat Sesuaikan visibilitas visibilitas tugas kendaraan umum.
Tugas kendaraan tertutup Tidak terlihat Tidak Anda tidak dapat menyesuaikan visibilitas tugas kendaraan yang ditutup.

Menyesuaikan visibilitas tugas kendaraan terbuka

Antarmuka TaskTrackingInfo menyediakan sejumlah elemen data tugas yang dapat dilihat dengan Consumer SDK.

Elemen data tugas yang dapat disesuaikan

Polyline rute

Perkiraan waktu tiba

Perkiraan waktu penyelesaian tugas

Jarak mengemudi lainnya ke tugas

Jumlah perhentian tersisa

Lokasi kendaraan

Opsi visibilitas per tugas

Anda bisa menyesuaikan konfigurasi visibilitas per tugas dengan mengatur TaskTrackingViewConfig saat membuat atau memperbarui tugas dalam Fleet Engine. Gunakan opsi visibilitas berikut untuk membuat kriteria guna menentukan visibilitas elemen tugas:

Opsi visibilitas

Jumlah perhentian yang tersisa

Durasi hingga perkiraan waktu tiba

Jarak mengemudi tersisa

Selalu terlihat

Tidak pernah terlihat

Sebagai ilustrasi, misalkan sebuah contoh penyesuaian menyesuaikan visibilitas selama tiga elemen data menggunakan kriteria yang ditampilkan dalam tabel berikut. Lainnya mengikuti aturan visibilitas {i>default.<i}

Elemen data yang akan disesuaikan Visibilitas Kriteria
Polyline rute Tampilkan Kendaraan berada dalam 3 perhentian.
PWT Tampilkan Jarak mengemudi yang tersisa kurang dari 5.000 meter.
Jumlah perhentian tersisa Jangan tampilkan Kendaraan berada dalam 3 perhentian.

Contoh berikut menunjukkan konfigurasi ini:

"taskTrackingViewConfig": {
  "routePolylinePointsVisibility": {
    "remainingStopCountThreshold": 3
  },
  "estimatedArrivalTimeVisibility": {
    "remainingDrivingDistanceMetersThreshold": 5000
  },
  "remainingStopCountVisibility": {
    "never": true
  }
}

Aturan visibilitas polyline rute dan lokasi kendaraan

Polyline rute tidak dapat terlihat kecuali jika lokasi kendaraan juga terlihat; jika tidak, lokasi kendaraan dapat disimpulkan dari akhir polyline.

Panduan ini membantu Anda memberikan kombinasi yang valid untuk rute polyline dan opsi visibilitas lokasi kendaraan.

Opsi visibilitas yang sama Kriteria visibilitas Panduan
Opsi polyline rute ditetapkan agar selalu terlihat. Tetapkan lokasi kendaraan agar selalu terlihat.
Lokasi kendaraan disetel ke tidak pernah terlihat. Menetapkan polyline rute agar tidak pernah terlihat.
Opsi visibilitas adalah salah satu dari:
  • jumlah perhentian tersisa
  • durasi hingga PWT
  • jarak mengemudi tersisa

Tetapkan opsi polyline rute ke nilai yang kurang dari atau sama dengan nilai yang ditetapkan untuk lokasi kendaraan. Contoh:

    "taskTrackingViewConfig": {
      "routePolylinePointsVisibility": {
        "remainingStopCountThreshold": 3
      },
      "vehicleLocationVisibility": {
        "remainingStopCountThreshold": 5
      },
    }
    
Opsi visibilitas yang berbeda Kriteria visibilitas Panduan
Lokasi kendaraan terlihat

Hal ini hanya terjadi jika kedua opsi visibilitas polyline dan lokasi kendaraan terpenuhi. Contoh:

  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "vehicleLocationVisibility": {
      "remainingDrivingDistanceMetersThreshold": 3000
    },
  }

Dalam contoh ini, lokasi kendaraan hanya terlihat jika jumlah perhentian yang tersisa minimal 3 DAN jarak mengemudi yang tersisa minimal 3.000 meter.

Menonaktifkan penyesuaian otomatis

Anda dapat menghentikan peta agar tidak otomatis menyesuaikan area pandang dengan kendaraan dan rute yang diperkirakan dengan menonaktifkan penyesuaian otomatis. Contoh berikut menunjukkan cara menonaktifkan penyesuaian otomatis saat Anda mengonfigurasi berbagi perjalanan tampilan peta.

JavaScript

const mapView = new
    google.maps.journeySharing.JourneySharingMapView({
  element: document.getElementById('map_canvas'),
  locationProviders: [locationProvider],
  automaticViewportMode:
      google.maps.journeySharing
          .AutomaticViewportMode.NONE,
  ...
});

TypeScript

const mapView = new
    google.maps.journeySharing.JourneySharingMapView({
  element: document.getElementById('map_canvas'),
  locationProviders: [locationProvider],
  automaticViewportMode:
      google.maps.journeySharing
          .AutomaticViewportMode.NONE,
  ...
});

Langkah berikutnya