设置地图样式

本文档介绍了如何自定义地图的外观和风格,以及如何控制数据可见性和视口选项。为此,您可以执行以下操作:

  • 使用云端地图样式设置
  • 直接在自己的代码中设置地图样式选项

使用云端地图样式设置来设置地图样式

如需将地图样式应用于 JavaScript 消费者行程共享地图,请在创建 JourneySharingMapView 时指定 mapId和 任何其他 mapOptions

JourneySharingMapView

以下示例展示了如何使用地图 ID 应用地图样式。

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 设置为可见。

可自定义的任务数据元素

路线多段线

预计到达时间

预计任务完成时间

任务的剩余驾驶距离

剩余停靠点数

车辆位置

每个任务的可见性选项

您可以在 Fleet Engine 中创建或更新任务时设置 TaskTrackingViewConfig,以按任务自定义可见性配置。使用以下可见性选项创建条件,以确定任务元素的可见性:

可见性选项

剩余停靠点数

距离预计到达时间的时长

剩余驾驶距离

始终显示

永不显示

为了进行说明,假设一个自定义示例使用下表中显示的条件调整了三个数据元素的可见性。所有其他元素都遵循默认可见性规则。

要调整的数据元素 可见性 条件
路线多段线 显示 车辆距离不超过 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 剩余驾驶 距离至少为 3000 米时,车辆位置才可见。

停用自动调整

您可以停用自动调整,以阻止地图自动将视口调整为车辆和预计路线。以下示例展示了如何在配置行程共享地图视图时停用自动调整。

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,
  ...
});

后续步骤