loplat_plengi 1.0.5 copy "loplat_plengi: ^1.0.5" to clipboard
loplat_plengi: ^1.0.5 copied to clipboard

loplat plengi(Place Engine) SDK plugin project.

loplat_plengi #

loplat plengi(Place Engine) SDK plugin project.

Supported platforms #

  • Flutter Android(plengi v2.1.1.3.1)
  • Flutter iOS(MiniPlengi v1.4.2.2)
Android iOS
Support SDK 16+ 9.0+

Usage #

To use this plugin, add loplat_plengi as a dependency in your pubspec.yaml file.

Examples #

Here are small examples that show you how to use the API.

Receive location data

To see detail location data, please visit loplat developer site.

import 'dart:isolate';
import 'dart:ui';
import 'dart:convert';
import 'package:loplat_plengi/loplat_plengi.dart';

/// The name associated with the UI isolate's [SendPort].
const String isolateName = 'isolate';

/// A port used to communicate from a background isolate to the UI isolate.
final ReceivePort port = ReceivePort();

/// The background port
SendPort? uiSendPort;

/// The callback for loplat plengi
Future<bool> callback(String msg) async {
  String locationInfo = getLocationInfo(msg);
  print('result: $locationInfo');

  // This will be null if we're running in the background.
  uiSendPort ??= IsolateNameServer.lookupPortByName(isolateName);
  uiSendPort?.send(null);
  return true;
}

String getLocationInfo(String log) {
  if (log.isEmpty) {
    return '';
  }
  Map<String,dynamic> jsonData = jsonDecode(log);
  String inNear = '';
  String locationInfo = '';
  if (jsonData['place'] != null) {
    if (jsonData['place']['accuracy'] >= jsonData['place']['threshold']) {
      inNear = '[IN]';
    } else {
      inNear = '[NEAR]';
    }
    locationInfo += '  $inNear${jsonData['place']['name']},'
        '${jsonData['place']['tags']}(${jsonData['place']['loplat_id']}),'
        '${jsonData['place']['floor']}F,${jsonData['place']['accuracy']}/${jsonData['place']['threshold']}';
  }
  if (jsonData['complex'] != null) {
    locationInfo += '\n  [${jsonData['complex']['id']}]${jsonData['complex']['name']}';
  }
  if (jsonData['area'] != null) {
    locationInfo += '\n  [${jsonData['area']['id']}]${jsonData['area']['tag']},${jsonData['area']['name']}';
  }
  if (jsonData['district'] != null) {
    locationInfo += '\n  ${jsonData['district']['lv1_name']} ${jsonData['district']['lv2_name']} ${jsonData['district']['lv3_name']}';
  }
  if (jsonData['location'] != null) {
    locationInfo += '\n  ${jsonData['location']['lat']}, ${jsonData['location']['lng']}';
  }
  if (jsonData['ad'] != null) {
    locationInfo += '\n  ${jsonData['ad']['campaign_id']}, ${jsonData['ad']['title']}, ${jsonData['ad']['body']}';
  }
  return locationInfo;
}

Future<void> main() async {
  /// Register the UI isolate's SendPort to allow for communication from the background isolate.
  IsolateNameServer.registerPortWithName(
    port.sendPort,
    isolateName,
  );

  runApp(const MyApp());

  /// After runApp, register callback
  LoplatPlengiPlugin.setListener(callback);
}
2
likes
100
pub points
0%
popularity

Publisher

unverified uploader

loplat plengi(Place Engine) SDK plugin project.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

Apache-2.0 (LICENSE)

Dependencies

flutter

More

Packages that depend on loplat_plengi