searchLandmarkDetails static method

TaskHandler? searchLandmarkDetails(
  1. List<Landmark> results,
  2. void onComplete(
    1. GemError err
    )
)

Populate details for landmarks from upper zoom levels.

Retrieves full details for landmarks selected from higher zoom levels of the map retrived via operations such as GemMapController.cursorSelectionLandmarks. Landmarks from text search already include all the details Does not work with user-created landmarks.

Parameters

  • results: List of Landmark objects for which to retrieve details.
  • onComplete: Callback invoked when the operation completes. Provides:

Returns

  • TaskHandler?: TaskHandler for this operation if it could be started; otherwise null.

See also:

Implementation

static TaskHandler? searchLandmarkDetails(
  final List<Landmark> results,
  final void Function(GemError err) onComplete,
) {
  final EventDrivenProgressListener progListener =
      EventDrivenProgressListener();
  GemKitPlatform.instance.registerEventHandler(progListener.id, progListener);

  progListener.registerOnCompleteWithData((
    final int err,
    final String hint,
    final Map<dynamic, dynamic> json,
  ) {
    GemKitPlatform.instance.unregisterEventHandler(progListener.id);

    if (err == GemError.success.code || err == GemError.reducedResult.code) {
      onComplete(GemErrorExtension.fromCode(err));
    } else {
      onComplete(GemErrorExtension.fromCode(err));
    }
  });

  final LandmarkList resultsList = LandmarkList();
  results.forEach(resultsList.add);

  final OperationResult resultString = staticMethod(
    'SearchService',
    'searchLandmarkDetails',
    args: <String, dynamic>{
      'results': resultsList.pointerId,
      'listener': progListener.id,
    },
  );

  final GemError errorCode = GemErrorExtension.fromCode(
    resultString['result'],
  );

  if (errorCode != GemError.success) {
    onComplete(errorCode);
    return null;
  }

  return TaskHandlerImpl(progListener.id);
}