Note: This release is in preview. Features described here don’t become generally available until the latest general availability date that Salesforce announces for this release. Before then, and where features are noted as beta, pilot, or developer preview, we can’t guarantee general availability within any particular time frame or at all. Make your purchase decisions only on the basis of generally available products and features.

Create a Route

The CreateRoute() Apex method creates a record that includes a list of waypoints that reps access in Salesforce Maps. The record doesn't include a route between waypoints.

Signature

1maps__Route__c maps.API.CreateRoute(map<string,object> options)
Where,
  • maps__Route__c is a Salesforce Maps route record containing a list of waypoints.
  • maps is the namespace that's available after you install Salesforce Maps.
  • API is the class that contains the global methods exposed to developers.
  • CreateRoute() is the method.

Allocations

This method requires 2–25 waypoints.

Sample Code

This code returns a maps__Route__c record of waypoints of accounts with billing addresses in Atlanta.

If you invoke methods within a flow, process builder, or trigger, avoid uncommitted work errors when you perform one of the following.

  • Call the methods through a future method
  • Call the methods as queueable

Different processes refresh the token, such as plotting a route or schedule. The refresh process is almost immediate after each qualifying action occurs.

Warning

Input Format of Waypoints

1{
2version: '1', // Required. Version of the API endpoint. Must be '1'.
3name: 'String', // Name of the new route record.
4date: Date, // Time and date in Epoch format that the route is created for. Default is the current time and date.
5waypoints: [ {recordId:String, lat:Decimal, lng:Decimal, address:String, order: Integer, baseobjectid: String, markerlayerid: String, notes:String}, {...} ] // List of waypoint objects.
6}

Example

1// Create a list of waypoints.
2List<Map<String,Object>> waypoints = new List<Map<String,Object>>();
3
4// Retrieve the list of billing addresses from the database and
5// add them to the waypoints object.
6List<Account> accountList = [Select Id,BillingStreet,BillingCity,BillingState,BillingPostalcode, BillingLatitude,BillingLongitude From Account Where BillingCity = 'Atlanta' LIMIT 25];
7
8for(Integer i = 0; i < accountList.size(); i++){
9    Account thisAccount = accountList[i];
10    String address = thisAccount.BillingCity + ', ' + thisAccount.BillingState + ' ' + thisAccount.BillingPostalCode;
11    waypoints.add(new Map<String,Object>{
12        'lat' => thisAccount.BillingLatitude,
13        'lng' => thisAccount.BillingLongitude,
14        'address' => address,
15        'recordId' => thisAccount.id,
16        'baseobjectid' => 'a0N0t000002hEyvEAE',
17        'markerlayerid' => 'a0v0t000001wE91AAE',
18        'order' => i + 1
19    });
20}
21
22// Build the request.
23Map<String,Object> request = new Map<String,Object>();
24request.put('version','1');
25request.put('name','Atlanta Accounts Route');
26request.put('waypoints',waypoints);
27
28// Call the CreateRoute() method with the waypoints.
29maps__Route__c response = maps.API.CreateRoute(request);
30
31// Log the route record output in JSON format.
32system.debug(JSON.serialize(response));

Sample Response

This method returns a maps__Route__c record, which inserts the waypoints that appear in Salesforce Maps. This JSON response illustrates the essential data stored in the route record.

1{
2  "attributes": {
3    "type": "maps__Route__c",
4    "url": "/services/data/v51.0/sobjects/maps__Route__c/a0y0t000001ht8HAAQ"
5  },
6  "Name": "Atlanta Accounts Route",
7  "maps__Date__c": "2021-05-04",
8  "Id": "a0y0t000001ht8HAAQ"
9}