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(
  List<Landmark> results,
  void Function(GemError err) onComplete,
) {
  final EventDrivenProgressListener progListener =
      EventDrivenProgressListener();
  GemKitPlatform.instance.registerEventHandler(progListener.id, progListener);

  progListener.registerOnCompleteWithData((
    int err,
    String hint,
    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);
}