إنشاء رسالة طلب
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
المطوّرون في المنطقة الاقتصادية الأوروبية
كما هو موضّح بإيجاز في نظرة عامة على خدمة "تحسين المسارات"، يتألف الطلب الأساسي من النموذج والشحنات والمركبات ككيانات مطلوبة:
- تتضمّن النموذج الإعدادات والقيود الخاصة بالطلب بأكمله، بما في ذلك
Shipments
وVehicles
.
- تمثّل الشحنات المهام أو الشحنات الفعلية التي تتضمّن
VisitRequest
خدماتVisitRequest
الاستلام والتسليم. تتضمّن الشحنات إعدادات وقيودًا محلية.
- تمثّل المركبات المركبات أو السائقين أو الموظفين. تتضمّن المركبات أيضًا إعدادات وقيودًا محلية.
تصف سمات كل كيان جزءًا من مشكلة التحسين على مستوى تفصيلي معيّن. يتم تطبيق القيود على مستوى النموذج على جميع الشحنات والمركبات، بينما تكون القيود والخصائص المحدّدة في الشحنات أو المركبات خاصة بشحنة أو مركبة واحدة.
للحصول على مستندات كاملة حول كل نوع من أنواع الرسائل، راجِع المستندات المرجعية الخاصة برسائل ShipmentModel
(REST وgRPC) وShipment
(REST وgRPC) وVehicle
(REST وgRPC).
OptimizeToursRequest
مكانًا للإقامة
تشمل بعض السمات الشائعة الاستخدام لرسالة OptimizeToursRequest
ذات المستوى الأعلى (REST أو gRPC) ما يلي:
- يشير
searchMode
إلى ما إذا كان سيتم عرض الحل الأول الذي يستوفي القيود المحدّدة أو العثور على أفضل حل ممكن خلال مهلة محدّدة.
- تحدّد السمة
considerRoadTraffic
ما إذا كان سيتم استخدام بيانات حركة المرور المباشرة
للتوجيه وتقدير الوقت المقدّر للوصول.
- تحدّد هذه السمة ما إذا كان سيتم عرض خطوط متعددة الأضلاع ورموز مميزة للطرق في الردّ أم لا.
populateTransitionPolylines
خصائص النموذج
تتضمّن بعض الخصائص الشائعة الاستخدام للرسالة ShipmentModel
(REST وgRPC) ما يلي:
- يمثّل
globalStartTime
أقرب وقت بدء للمسارات في جميع المركبات والشحنات. لا يمكن بدء عمليات النقل والشحن الأولى للمركبة قبل هذا الوقت.
- يمثّل
globalEndTime
أحدث وقت انتهاء للمسارات في جميع المركبات والشحنات. يجب إكمال جميع الشحنات وعمليات النقل المحدّدة قبل هذا الوقت.
سمات الشحنة
تشمل بعض الخصائص الشائعة الاستخدام للرسالة Shipment
(REST، gRPC) ما يلي:
- يمثّل
pickups[]
وdeliveries[]
المكان الذي يمكن فيه استلام الشحنة أو تسليمها. تستخدم سمتا pickups[]
وdeliveries[]
الرسالة VisitRequest
(REST وgRPC).
- تمثّل
loadDemands
الحمولة المطلوبة من المركبة لإكمال عملية الشحن. تمثّل السمة load_limits
(REST أو gRPC) الخاصة بالمركبات مقدار الحمولة التي يمكن أن تستوعبها المركبة في المرة الواحدة.
يمكنك الاطّلاع على مزيد من المعلومات عن التحميل في متطلبات التحميل وحدوده.
- يمثّل
penalty_cost
التكلفة التي يتم تكبّدها في حال تخطّي شحنة. يمكنك الاطّلاع على مزيد من المعلومات حول التكاليف في مَعلمات نموذج التكلفة.
سمات المركبة
تشمل بعض الخصائص الشائعة الاستخدام للرسالة Vehicle
(REST، gRPC) ما يلي:
- يمثّل
startLocation
المكان الذي يجب أن تبدأ فيه المركبة مسارها. هذه السمة اختيارية. في حال عدم تحديد ذلك، يبدأ مسار المركبة من الموقع الجغرافي للشحنة الأولى التي تم تعيينها.
- يمثّل
endLocation
المكان الذي يجب أن تنتهي فيه المركبة من مسارها. هذه السمة اختيارية. في حال عدم تحديد هذه السمة، ينتهي مسار المركبة عند الموقع الجغرافي لآخر شحنة تم تعيينها.
- يمثّل
startTimeWindows[]
الوقت الذي يمكن أن تبدأ فيه المركبة مسارها. هذه السمة اختيارية.
- يمثّل
endTimeWindows[]
الوقت الذي يمكن أن تبدأ فيه المركبة مسارها وتنتهي منه.
كلتا السمتين اختيارية.
- تمثّل
loadLimits
سعة المركبة المتاحة لتلبية متطلبات حمولة الشحنات. يمكنك الاطّلاع على مزيد من المعلومات حول متطلبات التحميل وحدوده في متطلبات التحميل وحدوده.
يبدو طلب المثال الكامل بتنسيق JSON على النحو التالي:
{
"model": {
"shipments": [
{
"pickups": [
{
"arrivalLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
}
}
],
"deliveries": [
{
"arrivalLocation": {
"latitude": 37.79581,
"longitude": -122.4218856
}
}
]
}
],
"vehicles": [
{
"startLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
},
"endLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
},
"costPerKilometer": 1.0
}
],
"globalStartTime": "2024-02-13T00:00:00.000Z",
"globalEndTime": "2024-02-14T06:00:00.000Z"
}
}
يستهلك كل من OptimizeTours
وBatchOptimizeTours
رسائل الطلبات مثل المثال أعلاه، ولكن بطرق مختلفة. قبل تقديم طلب لتحسين المسار، من المهم فهم الفرق بين الطريقتَين:
مقارنة OptimizeTours وBatchOptimizeTours
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-08-31 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-08-31 (حسب التوقيت العالمي المتفَّق عليه)"],[[["\u003cp\u003eRoute Optimization requests require defining a \u003ccode\u003eModel\u003c/code\u003e with \u003ccode\u003eShipments\u003c/code\u003e and \u003ccode\u003eVehicles\u003c/code\u003e to represent the optimization problem.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eModel\u003c/code\u003e sets global parameters, while \u003ccode\u003eShipments\u003c/code\u003e and \u003ccode\u003eVehicles\u003c/code\u003e have individual properties and constraints for pickups, deliveries, loads, and time windows.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eOptimizeToursRequest\u003c/code\u003e allows controlling the search mode, traffic considerations, and response details.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eOptimizeTours\u003c/code\u003e and \u003ccode\u003eBatchOptimizeTours\u003c/code\u003e offer synchronous and asynchronous request processing, respectively, with key differences in handling large or complex scenarios.\u003c/p\u003e\n"],["\u003cp\u003eYou can specify global start and end times for all vehicles and shipments within the \u003ccode\u003eShipmentModel\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Construct a request message\n\n**European Economic Area (EEA) developers** If your billing address is in the European Economic Area, effective on 8 July 2025, the [Google Maps Platform EEA Terms of Service](https://cloud.google.com/terms/maps-platform/eea) will apply to your use of the Services. Functionality varies by region. [Learn more](/maps/comms/eea/faq).\n\nAs briefly described in [Route Optimization Overview](/maps/documentation/route-optimization/overview), a basic request\nconsists of **Model** , **Shipments** , and **Vehicles** as required entities:\n\n- **Model** captures settings and constraints for the entire request, inclusive of both `Shipments` and `Vehicles`.\n- **Shipments** represent tasks or actual shipments that include pickup and delivery `VisitRequest`s. Shipments have local settings and constraints.\n- **Vehicles** represent vehicles, drivers, or personnel. Vehicles also have local settings and constraints.\n\nEach entity's properties describe part of an optimization problem at a\nparticular level of granularity. Model-wide constraints are applied to all\nshipments and vehicles, while constraints and properties specified on shipments\nor vehicles are specific to a single shipment or vehicle.\n\nFor complete documentation on each message type, see the reference documentation\nfor `ShipmentModel` ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.ShipmentModel)), `Shipment` ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel#Shipment), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.Shipment)),\nand `Vehicle` ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel#Vehicle), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.Vehicle)) messages.\n\n`OptimizeToursRequest` properties\n---------------------------------\n\nSome commonly used properties of the top-level `OptimizeToursRequest` message\n([REST](/maps/documentation/route-optimization/reference/rest/v1/projects/optimizeTours), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.OptimizeToursRequest)) include the following:\n\n- `searchMode` indicates whether to return the first solution that satisfies specified constraints or find the best possible solution within a set deadline.\n- `considerRoadTraffic` determines whether or not live traffic is used for routing and ETA estimation.\n- `populateTransitionPolylines` determines whether or not route polylines and route tokens are returned in the response.\n\nModel properties\n----------------\n\nSome commonly used properties of the `ShipmentModel` message ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel),\n[gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.ShipmentModel)) include:\n\n- `globalStartTime` represents the earliest start time of routes across all vehicles and shipments. No vehicle may start its first transitions and shipments before this time.\n- `globalEndTime` represents the latest end time of routes across all vehicles and shipments. All assigned shipments and transitions must be complete before this time.\n\nShipment properties\n-------------------\n\nSome commonly used properties of the `Shipment` message ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel#Shipment), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.Shipment))\ninclude:\n\n- `pickups[]` and `deliveries[]` represent where a shipment can be picked up or dropped off. `pickups[]` and `deliveries[]` properties both use the `VisitRequest` message ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel#VisitRequest), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.Shipment.VisitRequest)).\n- `loadDemands` represent the load required for a vehicle to complete a shipment. Vehicles' corresponding `load_limits` ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel#Vehicle.FIELDS.load_limits), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.Vehicle.FIELDS.repeated.google.maps.routeoptimization.v1.Vehicle.LoadLimitsEntry.google.maps.routeoptimization.v1.Vehicle.load_limits)) property represents how much load a vehicle can accommodate at one time. Read more about load in [Load Demands and Limits](/maps/documentation/route-optimization/load-demands-limits).\n- `penalty_cost` represents the cost incurred if a shipment is skipped. Read more on costs in [Cost Model Parameters](/maps/documentation/route-optimization/cost-model).\n\nVehicle properties\n------------------\n\nSome commonly used properties of the `Vehicle` message ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel#Vehicle), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.Vehicle))\ninclude:\n\n- `startLocation` represents where a vehicle must start its route. This property is optional. If not specified, the vehicle's route starts at the location of its first assigned shipment.\n- `endLocation` represents where a vehicle must end its route. This property is optional. If not specified, the vehicle's route ends at the location of its last assigned shipment.\n- `startTimeWindows[]` represents when a vehicle can start its route. This property is optional.\n- `endTimeWindows[]` represents when a vehicle can start and end its route. Both properties are optional.\n- `loadLimits` represent the vehicle's capacity available to meet shipments' load demands. Read more about load demands and limits in [Load Demands and\n Limits](/maps/documentation/route-optimization/load-demands-limits).\n\nA complete example request in JSON format looks like: \n\n {\n \"model\": {\n \"shipments\": [\n {\n \"pickups\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.73881799999999,\n \"longitude\": -122.4161\n }\n }\n ],\n \"deliveries\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.79581,\n \"longitude\": -122.4218856\n }\n }\n ]\n }\n ],\n \"vehicles\": [\n {\n \"startLocation\": {\n \"latitude\": 37.73881799999999,\n \"longitude\": -122.4161\n },\n \"endLocation\": {\n \"latitude\": 37.73881799999999,\n \"longitude\": -122.4161\n },\n \"costPerKilometer\": 1.0\n }\n ],\n \"globalStartTime\": \"2024-02-13T00:00:00.000Z\",\n \"globalEndTime\": \"2024-02-14T06:00:00.000Z\"\n }\n }\n\n`OptimizeTours` and `BatchOptimizeTours` both consume request messages like the\nexample above, but in different ways. Before making a Route Optimization\nrequest, it's important to understand the difference between the two methods:\n\n[Comparing OptimizeTours and BatchOptimizeTours](/maps/documentation/route-optimization/sync-vs-async)"]]