يتناول هذا المستند كيفية تخصيص شكل الخريطة وأسلوبها والتحكّم في خيارات ملف العرض ومستوى ظهور البيانات. يمكنك إجراء ذلك بالطرق التالية:
- استخدام ميزة تصميم الخرائط المستندة إلى السحابة الإلكترونية
- ضبط خيارات نمط الخريطة مباشرةً في الرمز الخاص بك
تصميم الخريطة باستخدام ميزة "تصميم الخرائط" المستندة إلى السحابة الإلكترونية
يمكنك تخصيص شكل مكوّن الخرائط ومظهره باستخدام ميزة "تصميم الخرائط" المستندة إلى السحابة الإلكترونية. يمكنك إنشاء أنماط الخرائط وتعديلها في Google Cloud Console لأي من تطبيقاتك التي تستخدم "خرائط Google" بدون الحاجة إلى إجراء أي تغييرات على الرمز. لمزيد من المعلومات، يُرجى الاطّلاع على تصميم الخرائط المستندة إلى السحابة الإلكترونية.
تتيح كلتا الفئتَين
ConsumerMapView
و
ConsumerMapFragment
تصميم الخرائط المستنِد إلى السحابة الإلكترونية.
لاستخدام تصميم الخرائط المستند إلى السحابة الإلكترونية، تأكَّد من أنّ العارض المحدّد هو LATEST
. تعرض الأقسام التالية أمثلة حول كيفية استخدام
تصميم الخرائط المستندة إلى السحابة مع مشروعك.
ConsumerMapView
لاستخدام تصميم الخرائط المستنِدة إلى السحابة الإلكترونية في ConsumerMapView
، يجب ضبط الحقل
mapId
على GoogleMapOptions
وضبط GoogleMapOptions
على
getConsumerGoogleMapAsync(ConsumerMapReadCallback, Fragment,
GoogleMapOptions)
أو getConsumerGoogleMapAsync(ConsumerMapReadCallback, 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
هناك طريقتان لاستخدام تصميم الخرائط المستند إلى السحابة في ConumerMapFragments:
- استخدام ملف XML بشكل ثابت
- ديناميكيًا باستخدام
newInstance
بشكل ثابت مع ملف XML
لاستخدام تنسيق الخرائط المستندة إلى السحابة الإلكترونية مع ملف XML في
ConsumerMapFragment
، أضِف سمة XML map:mapId
مع
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
في مرجع واجهة برمجة التطبيقات JavaScript لـ "خرائط Google".
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
عددًا من عناصر بيانات المهام التي يمكن إظهارها باستخدام حزمة تطوير البرامج (SDK) الخاصة بالمستهلك.
عناصر بيانات المهام القابلة للتخصيص | |
---|---|
الخطوط المتعددة في المسار الوقت المقدَّر للوصول الوقت المقدر لإكمال المهمة |
المسافة المتبقية بالسيارة للوصول إلى المهمة عدد المحطات المتبقية الموقع الجغرافي للمركبة |
خيارات مستوى الرؤية لكلّ مهمة
يمكنك تخصيص إعدادات مستوى العرض حسب كل مهمة من خلال ضبط
TaskTrackingViewConfig
عند إنشاء مهمة أو تعديلها في
Fleet Engine. استخدِم خيارات مستوى العرض التالية لإنشاء معايير لتحديد مستوى عرض عنصر المهمة:
خيارات مستوى العرض | ||
---|---|---|
عدد المحطات المتبقية المدة المتبقية حتى وقت الوصول المقدَّر المسافة المتبقية للقيادة |
مرئي دائمًا غير مرئية مطلقًا |
لتوضيح ذلك، لنفترض أن أحد الأمثلة على التخصيص يضبط مستوى الرؤية لثلاثة عناصر بيانات باستخدام المعايير الموضحة في الجدول التالي. وتلتزم كل العناصر الأخرى بقواعد مستوى العرض التلقائية.
عنصر البيانات المطلوب تعديله | مستوى الرؤية | المعيار |
---|---|---|
خطوط متعددة للمسار | إظهار | وتبعد المركبة عن 3 محطات. |
الوصول | إظهار | مسافة القيادة المتبقية أقل من 5000 متر. |
عدد المحطات المتبقية | عدم الإظهار مطلقًا | وتبعد المركبة عن 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,
...
});