addCustomMarker method

  1. @override
dynamic addCustomMarker({
  1. required LatLng point,
  2. required String title,
  3. MapMarkerIconModel? icon,
  4. required List<MapButtonClass> buttons,
  5. List<String>? images,
  6. List<MapMarkerContentModel>? content,
})
override

Create marker on point with title, in this marker you may configure a button and its callback on point with title buttons with names and callbacks acts

Implementation

@override
addCustomMarker(
    {required LatLng point,
    required String title,
    MapMarkerIconModel? icon,
    required List<MapButtonClass> buttons,
    List<String>? images,
    List<MapMarkerContentModel>? content}) {

  // String buttIdsString = "[";
  // String namesStr = "[";
  //
  // List<String> buttIds = [];
  // for (var act in buttons) {
  //   String id = createUniqueUid(count: 6, isNumberEnabled: false);
  //
  //   buttIds.add(id);
  //   buttIdsString += '"$id", ';
  //   //print(id);
  //   super.markersAction[id] = act.act;
  //
  //   namesStr += '"${act.name}", ';
  // }
  //
  // buttIdsString += "]";
  // namesStr += "]";

  List<String> buttIds = [];

  for (int index = 0; index < buttons.length; index++) {
    String id = createUniqueUid(count: 6, isNumberEnabled: false);
    buttIds.add(id);

    buttons[index] = buttons[index]..id = id;

    //print(id);
    super.markersAction[id] = buttons[index].act;
  }

  String iconString = "'none', ";

  if(icon != null){
    iconString = "'";
    iconString += icon.toMapJs();

    iconString += "', ";
  }

  String buttonString = "'none', ";

  if(buttons.isNotEmpty){
    buttonString = "[";

    for(var but in buttons){
      buttonString += "'${but.toMapJs()}', ";
    }

    buttonString.substring(0, buttonString.length - 2);

    buttonString += "]";
  }


  String imagesString = "";

  if(images != null){
    imagesString = ", [";

    for(var img in images){
      imagesString += '"$img", ';
    }

    imagesString.substring(0, imagesString.length - 2);

    imagesString += "]";
  }


  String contentString = "";

  if(content != null){
    contentString = ", [";

    for(var cont in content){
      contentString += "'${cont.toMapJs()}', ";
    }

    contentString.substring(0, contentString.length - 2);

    contentString += "]";
  }


  print(
      "$buttonString"
      "$imagesString"
      "$contentString");


  NtkMapViewState.controller.runJavaScript("_addMarkerCustom("
      "${point.latitude}, "
      "${point.longitude}, "
      "'$title', "
      "$iconString"
      "$buttonString"
      "$imagesString"
      "$contentString"
  ")");
}