เอกสารนี้ครอบคลุมถึงวิธีปรับแต่งรูปลักษณ์ของแผนที่และการควบคุม ระดับการเข้าถึงข้อมูลและวิวพอร์ต ซึ่งทำได้หลายวิธี ดังนี้
- ใช้การจัดรูปแบบแผนที่ในระบบคลาวด์
- ตั้งค่าตัวเลือกรูปแบบแผนที่ในโค้ดของคุณเองโดยตรง
จัดรูปแบบแผนที่ด้วยการจัดรูปแบบแผนที่ในระบบคลาวด์
ปรับแต่งรูปลักษณ์ของคอมโพเนนต์แผนที่โดยใช้การจัดรูปแบบแผนที่ในระบบคลาวด์ คุณสร้างและแก้ไขสไตล์แผนที่ใน Google Cloud Console สําหรับแอปที่ใช้ Google Maps โดยไม่ต้องเปลี่ยนแปลงโค้ด ดูข้อมูลเพิ่มเติมได้ที่การจัดรูปแบบแผนที่ในระบบคลาวด์
ทั้ง
ConsumerMapView
และ
ConsumerMapFragment
ชั้นเรียนจะรองรับการจัดรูปแบบแผนที่ในระบบคลาวด์
หากต้องการใช้การจัดรูปแบบแผนที่ในระบบคลาวด์ โปรดตรวจสอบว่าแผนที่ที่เลือก
โหมดแสดงภาพคือ LATEST
ส่วนต่อไปนี้จะแสดงตัวอย่างวิธีใช้
การจัดรูปแบบแผนที่ในระบบคลาวด์พร้อมกับโปรเจ็กต์ของคุณ
ConsumerMapView
หากต้องการใช้การจัดรูปแบบแผนที่ในระบบคลาวด์ใน ConsumerMapView
ให้ตั้งค่า
ฟิลด์ mapId
บน GoogleMapOptions
และส่งต่อ GoogleMapOptions
ไปยัง
getConsumerGoogleMapAsync(ConsumerMapReadyCallback, Fragment,
GoogleMapOptions)
หรือ get ConsumerGoogleMapAsync(consumerMapReadyCallback, FragmentActivity,
GoogleMapOptions)
ตัวอย่าง
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 มี 2 วิธีดังนี้
- แบบคงที่กับ XML
- แบบไดนามิกด้วย
newInstance
แบบคงที่ที่มี XML
หากต้องการใช้การจัดสไตล์แผนที่แบบระบบคลาวด์กับ XML ใน ConsumerMapFragment
ให้เพิ่มแอตทริบิวต์ map:mapId
XML ที่มี mapId
ที่ระบุ โปรดดูตัวอย่างต่อไปนี้
<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
หากต้องการใช้การจัดรูปแบบแผนที่ในระบบคลาวด์กับ newInstance
ใน ConsumerMapFragment
ให้ตั้งค่าช่อง mapId
ใน GoogleMapOptions
และส่ง GoogleMapOptions
ไปยัง newInstance
โปรดดูตัวอย่างต่อไปนี้
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
}
}
หากต้องการใช้รูปแบบแผนที่กับแผนที่การแชร์เส้นทางของผู้บริโภค JavaScript ของคุณ ให้ระบุ
mapId
และ
อื่นๆ
mapOptions
เมื่อคุณสร้าง JourneySharingMapView
ตัวอย่างต่อไปนี้แสดงวิธีใช้รูปแบบแผนที่ที่มีรหัสแผนที่
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.
});
จัดรูปแบบแมปโดยตรงในโค้ดของคุณเอง
นอกจากนี้คุณยังสามารถปรับแต่งรูปแบบแผนที่ได้โดยตั้งค่าตัวเลือกแผนที่เมื่อคุณสร้าง
JourneySharingMapView
ตัวอย่างต่อไปนี้แสดงวิธีจัดรูปแบบแผนที่โดยใช้ตัวเลือกแผนที่ ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกแผนที่ที่คุณตั้งค่าได้
mapOptions
ในข้อมูลอ้างอิง 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" }
]
}
]
}
});
ควบคุมระดับการมองเห็นข้อมูลงานของ SDK
คุณควบคุมการแสดงผลของวัตถุงานบางอย่างบนแผนที่ได้โดยใช้กฎการแสดงผล
ระดับการเข้าถึงเริ่มต้นของข้อมูลงาน
โดยค่าเริ่มต้น ข้อมูลสำหรับงานที่มอบหมายให้กับยานพาหนะจะปรากฏเมื่อ ยานพาหนะอยู่ภายในรัศมี 5 ป้ายของสถานที่งาน ระดับการเข้าถึงจะสิ้นสุดเมื่องาน เสร็จสมบูรณ์หรือยกเลิก
ตารางนี้แสดงระดับการเข้าถึงเริ่มต้นสําหรับงานแต่ละประเภท คุณสามารถ คุณจะปรับแต่งระดับการเข้าถึงได้หลายงาน แต่ไม่ใช่ทั้งหมด โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับประเภทงานในหัวข้อประเภทงานในคู่มืองานที่กำหนดเวลาไว้
ประเภทงาน | การแสดงผลเริ่มต้น | ปรับแต่งได้ไหม | คำอธิบาย |
---|---|---|---|
งานที่ไม่พร้อมใช้งาน | ไม่แสดง | ไม่ได้ | ใช้สำหรับหยุดพักของผู้ขับและเติมน้ำมัน หากเส้นทางไปยังงานนำส่ง ยังมีจุดจอดยานพาหนะอื่นด้วย ซึ่งจะไม่แสดงป้ายจอดรถดังกล่าว หากมีเฉพาะงานที่ไม่พร้อมใช้งาน เวลาถึงโดยประมาณและเวลาทํางานเสร็จโดยประมาณจะยังคงแสดงสําหรับงานการนำส่ง |
เปิดงานเกี่ยวกับยานพาหนะ | แสดง | ใช่ | ระดับการเข้าถึงจะสิ้นสุดเมื่องานเสร็จสมบูรณ์หรือยกเลิกแล้ว คุณปรับแต่งระดับการแชร์ของงานยานพาหนะแบบเปิดได้ ดูปรับแต่งระดับการมองเห็นของงานยานพาหนะที่เปิดอยู่ |
งานยานพาหนะที่ปิด | ไม่แสดง | ไม่ได้ | คุณไม่สามารถปรับแต่งระดับการเข้าถึงงานของยานพาหนะที่ปิดไปแล้วได้ |
ปรับแต่งระดับการแชร์งานยานพาหนะที่เปิดอยู่
อินเทอร์เฟซ TaskTrackingInfo
มีองค์ประกอบข้อมูลงานจำนวนมาก
ที่มองเห็นได้ด้วย Consumer SDK
องค์ประกอบข้อมูลงานที่กำหนดเองได้ | |
---|---|
โพลีไลน์เส้นทาง เวลาถึงโดยประมาณ เวลาโดยประมาณที่งานจะเสร็จสมบูรณ์ |
ระยะทางการขับรถที่เหลืออยู่ไปยังงาน จํานวนป้ายจอดรถที่เหลือ ตำแหน่งของรถ |
ตัวเลือกระดับการเข้าถึงต่องาน
คุณสามารถปรับแต่งการกำหนดค่าระดับการเข้าถึงตามแต่ละงานได้โดยการตั้งค่า TaskTrackingViewConfig
เมื่อสร้างหรืออัปเดตงานภายใน Fleet Engine ใช้ตัวเลือกระดับการเข้าถึงต่อไปนี้เพื่อสร้างเกณฑ์เพื่อกำหนดระดับการเข้าถึงขององค์ประกอบงาน
ตัวเลือกการแสดงผล | ||
---|---|---|
จำนวนป้ายที่เหลือ ระยะเวลาจนถึงเวลาถึงโดยประมาณ ระยะทางในการขับขี่ที่เหลือ |
แสดงเสมอ ไม่แสดง |
ตัวอย่างเช่น สมมติว่าการปรับแต่งตัวอย่างปรับระดับการมองเห็นขององค์ประกอบข้อมูล 3 รายการโดยใช้เกณฑ์ที่แสดงในตารางต่อไปนี้ ส่วนองค์ประกอบอื่นๆ ทั้งหมดจะเป็นไปตามกฎการแสดงผลเริ่มต้น
องค์ประกอบข้อมูลที่จะปรับ | ระดับการแชร์ | เกณฑ์ |
---|---|---|
โพลีไลน์เส้นทาง | แสดง | รถอยู่ในช่วง 3 ป้าย |
ETA | แสดง | ระยะทางขับรถที่เหลือน้อยกว่า 5,000 เมตร |
จำนวนป้ายที่เหลือ | ไม่แสดง | ยานพาหนะอยู่ภายใน 3 ป้ายจอด |
ตัวอย่างต่อไปนี้แสดงการกําหนดค่านี้
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"estimatedArrivalTimeVisibility": {
"remainingDrivingDistanceMetersThreshold": 5000
},
"remainingStopCountVisibility": {
"never": true
}
}
กฎการระบุเส้นทางและตำแหน่งของยานพาหนะ
เส้นประกอบของเส้นทางจะมองไม่เห็น เว้นแต่ว่าตำแหน่งของยานพาหนะจะมองเห็นได้ มิเช่นนั้นระบบจะอนุมานตำแหน่งของยานพาหนะจากจุดสิ้นสุดของเส้นประกอบ
หลักเกณฑ์เหล่านี้จะช่วยให้คุณระบุชุดค่าผสมที่ถูกต้องสำหรับตัวเลือกเส้นทาง เส้นประกอบ และระดับการแชร์ตำแหน่งของยานพาหนะ
ตัวเลือกการแสดงผลเดียวกัน | เกณฑ์การแสดงผล | คำแนะนำ |
---|---|---|
ตั้งค่าตัวเลือกเส้นประกอบเส้นทางให้แสดงตลอดเวลา | ตั้งค่าตำแหน่งของรถให้แสดงอยู่เสมอ | |
ตั้งค่าตำแหน่งของยานพาหนะเป็น "ไม่แสดงเลย" | ตั้งค่าเส้นประกอบของเส้นทางให้มองไม่เห็น | |
ตัวเลือกระดับการเข้าถึงมีดังนี้
|
ตั้งค่าตัวเลือกรูปหลายเหลี่ยมของเส้นทางเป็นค่าที่น้อยกว่าหรือเท่ากับค่าที่กำหนดไว้สำหรับตำแหน่งยานพาหนะ เช่น "taskTrackingViewConfig": { "routePolylinePointsVisibility": { "remainingStopCountThreshold": 3 }, "vehicleLocationVisibility": { "remainingStopCountThreshold": 5 }, } |
|
ตัวเลือกการแชร์ต่างๆ | เกณฑ์การแสดงผล | คำแนะนำ |
ตำแหน่งของยานพาหนะแสดงอยู่ | กรณีนี้จะเกิดขึ้นเมื่อทั้งตำแหน่งของรถยนต์และ เป็นไปตามตัวเลือกการแสดงเส้นประกอบ เช่น "taskTrackingViewConfig": { "routePolylinePointsVisibility": { "remainingStopCountThreshold": 3 }, "vehicleLocationVisibility": { "remainingDrivingDistanceMetersThreshold": 3000 }, } ในตัวอย่างนี้ ตำแหน่งของรถจะปรากฏเมื่อ จำนวนการหยุดอย่างน้อย 3 และการขับขี่ที่เหลือ มีระยะทางอย่างน้อย 3,000 เมตร |
ปิดใช้การปรับขนาดอัตโนมัติ
คุณสามารถหยุดแผนที่ไม่ให้ปรับวิวพอร์ตให้พอดีกับยานพาหนะโดยอัตโนมัติได้ และเส้นทางที่คาดไว้ด้วยการปิดใช้การปรับให้พอดีอัตโนมัติ ตัวอย่างต่อไปนี้ แสดงวิธีปิดใช้การปรับให้พอดีอัตโนมัติเมื่อกำหนดค่าการแชร์เส้นทาง มุมมองแผนที่
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,
...
});