FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Flutter SDK(非公式)の使い方【位置情報検索の使い方】

f:id:mbaasdevrel:20200110154553p:plain

FlutterはDartで書かれたフレームワークになります。元々iOSやAndroidといったスマートフォン向けでしたが、今ではWebやWindows、macOSといったマルチプラットフォームで動作します。Flutter/Dartを覚えることで、多くの環境に対してアプリケーション開発が可能になります。

NCMBでは公式SDKを提供していませんが、非公式に開発を進めているFlutter SDKがあります。元々ベータとして0.1系でしたが、大幅な機能変更に合わせて v2 になりました。

この記事では、初期化の方法と位置情報検索の使い方を紹介します。

インストール

pubspec.yaml を編集します。

dependencies:
  ncmb: ^2.0.2

そして dart pub get でインストールできます。

使い方

任意のファイル上でライブラリを読み込みます。

import 'package:ncmb/ncmb.dart';

そしてNCMBオブジェクトを初期化します。

NCMB('APPLICATION_KEY', 'CLIENT_KEY');

基本的な使い方

まずは基本的なHello worldをデータストアに保存してみます。まずデータストアのオブジェクトを作ります。

var item = NCMBObject('Item')

そして位置情報を保存する際には NCMBGeoPoint を使います。

var latitude = 35.6585805;
var longitude = 139.7454329;
var geo = NCMBGeoPoint(latitude, longitude);
item.set('geo', geo);

後は通常通り保存するだけです。

await item.save();

位置情報検索

位置情報検索は全部で5つのメソッドが用意してあります。たとえば、ある一点の付近にあるデータを取得するnear検索は次のように行います。

var query = NCMBQuery('Station');
var geo = NCMBGeoPoint(35.6585805, 139.7454329);
query
  ..near('geo', geo)
  ..limit(5); // 付近の5件を取得
var ary = await query.fetchAll();

この他、次のメソッドがあります。

  • withinKilometers(String key, NCMBGeoPoint value, int maxDistance)
  • withinMiles(String key, NCMBGeoPoint value, int maxDistance)
  • withinRadians(String key, NCMBGeoPoint value, int maxDistance)
  • withinSquare(String key, NCMBGeoPoint southWestVertex, NCMBGeoPoint northEastVertex)

withinSquareは2つの位置情報を指定して検索を行い、2点間にあるオブジェクトを取得します。

var query = NCMBQuery('Station');
var geo1 = NCMBGeoPoint(35.6584168, 139.7286786);
var geo2 = NCMBGeoPoint(35.6848414, 139.7697154);
query
  ..withinSquare('geo', geo1, geo2);
var ary = await query.fetchAll();

スマートフォンでは位置情報の取得や、位置情報に基づいた情報提供が大事です。これらの検索条件はよく使われるでしょう。

コード

コードはオープンソースで、GitHub上で公開しています。ライセンスはMIT Licenseになります。

NCMBMania/ncmb-dart: NCMB library for Dart and Flutter.

Flutter依存の部分を削除していますので、純粋なDartライブラリとして利用可能です。また、ネイティブアプリ部分も削除していますので、Flutter for Webでも利用可能です。

まとめ

Flutterを覚えればiOS、Androidアプリともに一つのコードで書けるようになります。DartはJavaScriptライクな言語で、JavaScriptをマスターしている人であれば、それほど苦労せずにDartを書けるようになるでしょう。ぜひFlutterを使ったアプリ開発にNCMBをご利用ください!

ncmb | Dart Package

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。