设置地图样式

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

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

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

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

以下示例展示了如何应用具有地图 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 时通过设置地图选项来自定义地图样式。以下示例展示了如何使用地图选项设置地图样式。如需详细了解可以设置哪些地图选项,请参阅 Google Maps JavaScript API 参考中的 mapOptions

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 站。
预计到达时间 显示 剩余行驶距离小于 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,
  ...
});

后续步骤