เอกสารนี้อธิบายวิธีปรับแต่งรูปลักษณ์ของแผนที่ รวมถึงวิธีควบคุมการแสดงข้อมูลและตัวเลือกวิวพอร์ต ซึ่งทำได้ด้วยวิธีต่อไปนี้
- ใช้การจัดรูปแบบแผนที่ในระบบคลาวด์
- ตั้งค่าตัวเลือกรูปแบบแผนที่ในโค้ดของคุณเองโดยตรง
จัดรูปแบบแผนที่ด้วยการจัดรูปแบบแผนที่ในระบบคลาวด์
ปรับแต่งรูปลักษณ์ของคอมโพเนนต์แผนที่โดยใช้การจัดรูปแบบแผนที่ในระบบคลาวด์ คุณสร้างและแก้ไขสไตล์แผนที่ใน Google Cloud Console สําหรับแอปที่ใช้ Google Maps โดยไม่ต้องเปลี่ยนแปลงโค้ด ดูข้อมูลเพิ่มเติมได้ที่การจัดรูปแบบแผนที่ในระบบคลาวด์
ทั้งคลาส ConsumerMapView
และ ConsumerMapFragment
รองรับการจัดรูปแบบแผนที่ในระบบคลาวด์
หากต้องการใช้การจัดรูปแบบแผนที่ในระบบคลาวด์ ให้ตรวจสอบว่าโปรแกรมแสดงผลแผนที่ที่เลือกคือ LATEST
ส่วนต่อไปนี้แสดงตัวอย่างวิธีใช้การจัดรูปแบบแผนที่แบบระบบคลาวด์กับโปรเจ็กต์
ConsumerMapView
หากต้องการใช้การจัดรูปแบบแผนที่ที่อิงตามระบบคลาวด์ใน ConsumerMapView
ให้ตั้งค่าช่อง mapId
ใน GoogleMapOptions
แล้วส่ง GoogleMapOptions
ไปยัง getConsumerGoogleMapAsync(ConsumerMapReadyCallback, Fragment,
GoogleMapOptions) หรือ getConsumerGoogleMapAsync(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,
...
});