ConsumerMapStyle
class, size dinamik özelleştirme sağlayan ayarlayıcı ve alıcı yöntemlerine sahiptir
çoklu çizgiler için de geçerlidir. Bu sınıf,
ConsumerController.getConsumerMapStyle()
yöntemidir.
Kullanıcı arayüzü özelleştirmesi, cihaz rotasyonları arasında da devam eder ve
ConsumerController
çıkarıldı.
Özel işaretçiler
İşaretçi türünü ve özelliklerini ayarlama yöntemi ConsumerMapStyle.setMarkerStyleOptions()
şeklindedir. Özel
İşaretçi seçenekleri, Tüketici SDK'sı tarafından sağlanan varsayılan değerleri geçersiz kılar.
Varsayılan değerleri geri yüklemek için null kullanarak setMarkerStyleOptions()
çağrısı yapın
(MarkerOptions
parametresi için) Etkin MarkerOptions
öğesini al
kullanarak
getMarkerStyleOptions()
İşaretçi türleri
Aşağıdaki işaretçiler özelleştirme için kullanılabilir:
TRIP_PICKUP_POINT
TRIP_DROPOFF_POINT
TRIP_INTERMEDIATE_DESTINATION
TRIP_VEHICLE
Yolculuk izleme sırasında TRIP_PICKUP_POINT
ve TRIP_DROPOFF_POINT
görüntülenir.
Gezi izleme sırasında TRIP_VEHICLE
görüntülenir. İşaretçi simgesi değişmiyor
seyahat için gerçek araç türüne göre. Tüketici SDK'sı güncellemeleri
taklit etmek için gezi izleme sırasında TRIP_VEHICLE
simgesinin döndürülmesini
hareket eden bir model olacaktır.
İşaretçi seçenekleri
Her işaretçi için kullanılabilecek özelleştirilebilir özellikler,
Google Haritalar tarafından sağlanan tesisler
MarkerOptions
.
MarkerOptions
, kurucusu kullanılarak oluşturulur ve özelleştirilmiş özellikler "Setter" ile belirtilir stil yöntemleri.
Her mülk için varsayılan değerler sağlandığından yalnızca özel değerler belirtmeniz gerekir.
visible
öğesini false
olarak ayarlayarak bir işaretçiyi kapatabilirsiniz.
Bunun yerine kendi kullanıcı arayüzü öğenizi kullanabilmeniz için yeterli miktarda veri sağlanmalıdır.
Örnek
Java
// Initializing marker options.
consumerController
.getConsumerMapStyle()
.addOnSuccessListener(
consumerMapStyle -> {
consumerMapStyle.setMarkerStyleOptions(
MarkerType.TRIP_VEHICLE,
new MarkerOptions()
.visible(false));
});
// Reset marker options to default values.
consumerMapStyle.setMarkerStyleOptions(MarkerType.TRIP_VEHICLE, null);
Kotlin
// Initializing marker options.
consumerController
.getConsumerMapStyle()
.addOnSuccessListener({ consumerMapStyle ->
consumerMapStyle.setMarkerStyleOptions(MarkerType.TRIP_VEHICLE, MarkerOptions().visible(false))
})
// Reset marker options to default values.
consumerMapStyle.setMarkerStyleOptions(MarkerType.TRIP_VEHICLE, null)
Özel çoklu çizgiler
Çoklu çizgi özelleştirmesi, ConsumerMapStyle.setPolylineStyleOptions
yöntemi kullanılarak ayarlanır. Özel çoklu çizgi seçeneklerini ayarlama
Tüketici SDK'sı tarafından sağlanan varsayılan değerleri geçersiz kılar. Varsayılan değerler
setPolylineStyleOptions
numaralı telefon aranarak geri yüklenebilir
PolylineOptions
parametresi için null değerini içerir. Etkin
PolylineOptions
,
getPolylineStyleOptions
yöntemini kullanabilirsiniz.
Çoklu çizgi türleri
Aşağıdaki çoklu çizgi türleri özelleştirilebilir:
ACTIVE_ROUTE
REMAINING_ROUTE
Gezi izleme sırasında ACTIVE_ROUTE
ve REMAINING_ROUTE
gösterilir ve
aracın rotasını temsil eder.
Çoklu Çizgi Özellikleri
Her bir çoklu çizgi için kullanılabilen özelleştirilebilir özellikler Google Haritalar PolylineOptions
tarafından sağlanmıştır.
PolylineOptions
, kurucusu kullanılarak oluşturulur ve özelleştirilmiş özellikler "Setter" ile belirtilir stil yöntemleri. Varsayılan değerler
her mülk için belirtildiğinden yalnızca özel değerler belirtmeniz gerekir.
visible
öğesini false
olarak ayarlayarak çoklu çizgiyi kapatabilirsiniz.
Örnek
Java
// Initializing polyline style options.
consumerController
.getConsumerMapStyle()
.addOnSuccessListener(
consumerMapStyle -> {
consumerMapStyle.setPolylineStyleOptions(
PolylineType.ACTIVE_ROUTE,
new PolylineOptions()
.visible(false));
});
// Reset polyline options to default values.
consumerMapStyle.setPolylineStyleOptions(PolylineType.ACTIVE_ROUTE, null);
Kotlin
// Initializing polyline options.
consumerController
.getConsumerMapStyle()
.addOnSuccessListener({ consumerMapStyle ->
consumerMapStyle.setPolylineStyleOptions(
PolylineType.ACTIVE_ROUTE,
PolylineOptions().visible(false)
)
})
// Reset polyline options to default values.
consumerMapStyle.setPolylineStyleOptions(PolylineType.ACTIVE_ROUTE, null)
Etkin ve Kalan Rota
Yolculuk ve Sipariş İlerlemesi etkinleştirildiğinde uygulamanız, Araçlarınızın etkin ve kalan durumunu gösteren, çoklu çizgi kullanımıyla ilgili kullanıcı deneyimi yol gösterir.
Etkin rota, aracın ulaşmak için gitmekte olduğu yoldur tüketicinin aktif yolculuğundaki bir sonraki ara noktadır. Kalan rota aracın etkin rotadan sonra gideceği yol. Etkin rota ara noktası, son seyahat ara noktasıysa, kalan rota mevcut değil.
Etkin ve kalan çoklu çizgiler özelleştirilebilir ve görünürlük kontrol edilebilir elde edebilirsiniz. Varsayılan olarak, etkin rota ve kalan rota görünür görünür değil.
Örnek
Java
// Initializing polyline options.
consumerController
.getConsumerMapStyle()
.addOnSuccessListener(
consumerMapStyle -> {
consumerMapStyle.setPolylineStyleOptions(
PolylineType.ACTIVE_ROUTE,
new PolylineOptions()
.color(Color.BLUE));
consumerMapStyle.setPolylineStyleOptions(
PolylineType.REMAINING_ROUTE,
new PolylineOptions()
.color(Color.BLACK)
.width(5)
.visible(true));
});
// Reset polyline options to default values.
consumerMapStyle.setPolylineStyleOptions(PolylineType.ACTIVE_ROUTE, null);
consumerMapStyle.setPolylineStyleOptions(PolylineType.REMAINING_ROUTE, null);
Kotlin
// Initializing polyline options.
consumerController
.getConsumerMapStyle()
.addOnSuccessListener({ consumerMapStyle ->
{
consumerMapStyle.setPolylineStyleOptions(
PolylineType.ACTIVE_ROUTE,
PolylineOptions().color(Color.BLUE)
)
consumerMapStyle.setPolylineStyleOptions(
PolylineType.REMAINING_ROUTE,
PolylineOptions().color(Color.BLACK).width(5).visible(true)
)
}
})
// Reset polyline options to default values.
consumerMapStyle.setPolylineStyleOptions(PolylineType.ACTIVE_ROUTE, null)
consumerMapStyle.setPolylineStyleOptions(PolylineType.REMAINING_ROUTE, null)
Trafiğe duyarlı çoklu çizgiler
Çoklu çizginin trafik katmanı varsayılan olarak devre dışıdır. Etkinleştirildiğinde, segmentler normal olmayan trafik uzatmalarını temsil eden rota çoklu çizgisinin üzerine çizilir z-endeksi PolylineOptions.getZIndex() ve trafik koşuluna bağlı olarak bir ofset değeri.
Trafik koşulları, dört hız türü. Her hız türü için rengi özelleştirebilirsiniz.
"Trafiğe duyarlı çoklu çizgiler" özelliğini etkinleştirmek için bir TrafficStyle
nesnesi oluşturmanız gerekir. Bu nesne, daha sonra setPolylineTrafficStyle()
çağrısı yaparak ConsumerMapStyle
öğesine aktarılır.
Örnek
Java
// TrafficStyle is part of the Consumer SDK.
TrafficStyle trafficStyle = TrafficStyle.builder()
.setTrafficVisibility(true)
.setTrafficColor(SpeedType.NO_DATA, Color.GREY)
.setTrafficColor(SpeedType.NORMAL_VALUE, Color.BLUE)
.setTrafficColor(SpeedType.SLOW_VALUE, Color.ORANGE)
.setTrafficColor(SpeedType.TRAFFIC_JAM, Color.RED)
.build();
consumerMapStyle.setPolylineTrafficStyle(PolylineType.ACTIVE_ROUTE, trafficStyle);
Kotlin
// TrafficStyle is part of the Consumer SDK.
val trafficStyle =
TrafficStyle.builder()
.setTrafficVisibility(true)
.setTrafficColor(SpeedType.NO_DATA, Color.GREY)
.setTrafficColor(SpeedType.NORMAL_VALUE, Color.BLUE)
.setTrafficColor(SpeedType.SLOW_VALUE, Color.ORANGE)
.setTrafficColor(SpeedType.TRAFFIC_JAM, Color.RED)
.build()
consumerMapStyle.setPolylineTrafficStyle(PolylineType.ACTIVE_ROUTE, trafficStyle)
Bir yolculuğa odaklanmak için kameranın yakınlaştırmasını ayarlama
Varsayılan Konumum düğmesi yerleşik olarak bulunan kamera, cihazın konumunu merkeze alır. Varsa aktif bir Seyahat ve Sipariş İlerlemesi oturumunun olması durumunda, kameranın, cihazın konumu yerine yolculuğa odaklanmasını sağlar.
Yerleşik Android çözümü için Tüketici SDK'sı: AutoKamera
Cihaz konumu yerine yolculuğa odaklanmanızı sağlamak için Tüketici SDK'sı varsayılan olarak etkinleştirilmiş bir Otomatik Kamera özelliği sağlar. Kamera yakınlaştırır kullanarak Seyahat ve Sipariş İlerlemesi rotasına ve sonraki seyahat ara noktasına odaklanın.
Kamera davranışını özelleştirme
Kamera davranışı üzerinde daha fazla kontrole ihtiyacınız varsa devre dışı bırakabilir veya etkinleştirebilirsiniz
ConsumerController.setAutoCameraEnabled()
ile Otomatik Kamera.
ConsumerController.getCameraUpdate()
, önerilen kamera sınırlarını o anda döndürür. Şunları yapabilirsiniz:
ardından CameraUpdate
öğesini bağımsız değişken olarak sağlayın
GoogleMap.moveCamera()
veya GoogleMap.animateCamera()
.
Bulut tabanlı harita stilleri
Hem
ConsumerMapView
ve
ConsumerMapFragment
Sınıflar bulut tabanlı harita stilini destekler.
Bulut tabanlı harita stilleri kullanmak için, seçilen haritaların
oluşturucu LATEST
. Aşağıdaki örnekler,
en iyi uygulamaları paylaşacağız.
ConsumerMapView
ConsumerMapView
özelliğinde bulut tabanlı harita stilini kullanmak için
GoogleMapOptions
üzerindeki mapId
alanını dâhil edin ve GoogleMapOptions
ayarını
getConsumerGoogleMapAsync(ConsumerMapReadyCallback, Fragment,
GoogleMapOptions)
or getConsumerGoogleMapAsync(ConsumerMapReadyCallback, FragmentActivity,
GoogleMapOptions)
Ö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
Google Cloud'da bulut tabanlı harita stilini kullanmanın iki yolu vardır: ConsumerMapFragments:
- XML ile statik olarak.
newInstance
ile dinamik olarak.
XML ile statik olarak
Bulut tabanlı harita stilini XML ile kullanmak için
ConsumerMapFragment
, map:mapId
XML özelliğini belirtilen
mapId
. 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 stilini newInstance
ile kullanmak için
ConsumerMapFragment
, GoogleMapOptions
üzerinde mapId
alanını ayarlayıp
GoogleMapOptions
- newInstance
. 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
}
}