init method

void init()

Starts the JS Maps SDK into the target _div with rawOptions.

(Also initializes the geometry/traffic layers.)

The first part of this method starts the rendering of a gmaps.GMap inside of the target _div, with configuration from rawOptions. It then stores the created GMap in the _googleMap attribute.

Not everything is rendered with the initial rawOptions configuration, geometry and traffic layers (and possibly others in the future) have their own configuration and are rendered on top of a GMap instance later. This happens in the second half of this method.

This method is eagerly called from the GoogleMapsPlugin.buildView method so the internal GoogleMapsController of a Web Map initializes as soon as possible. Check _attachMapEvents to see how this controller notifies the plugin of it being fully ready (through the onTilesloaded.first event).

Failure to call this method would result in the GMap not rendering at all, and most of the public methods on this class no-op'ing.

Implementation

void init() {
  gmaps.MapOptions options = _configurationAndStyleToGmapsOptions(
      _lastMapConfiguration, _lastStyles);
  // Initial position can only to be set here!
  options = _applyInitialPosition(_initialCameraPosition, options);

  // Fully disable 45 degree imagery if desired
  if (options.rotateControl == false) {
    options.tilt = 0;
  }

  ///
  /// Create the map...
  /// div创建
  ///
  final gmaps.GMap map = _createMap(_div, options);
  _googleMap = map;

  _attachMapEvents(map);
  _attachGeometryControllers(map);

  // Now attach the geometry, traffic and any other layers...
  _renderInitialGeometry();

  ///
  /// 设置 gmap - darwing 参数
  ///
  _setTrafficLayer(map, _lastMapConfiguration.trafficEnabled ?? false);

  ///
  /// 设置 drawmanager google map
  ///
  if (_heatPoints.isEmpty) {
    _setDrawmanager(map);
  }

  ///
  /// 设置 visualization google map
  ///
  if (_heatPoints.isNotEmpty) {
    _setVisualization(map);
  }
}