パッケージ、リポジトリ、アプリカテゴリを検索

パッケージ詳細v0.1.1+2

google_maps_flutter_heatmap

iOSおよびAndroidアプリケーションにGoogle Mapsを統合するためのFlutterプラグイン。ヒートマップサポート付き。

30日間ダウンロード
5
いいね数
21
Pub ポイント
40

パッケージをインストール

flutter pub add google_maps_flutter_heatmap

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

iOSおよびAndroidアプリにGoogleマップを統合できるFlutterプラグインで、組み込みのヒートマップ可視化機能を備えています。このプラグインは、データポイントを使用して地図上に密度ベースのヒートマップを表示でき、地理空間データの表現を強化します。Flutterアプリケーション内でスムーズに動作するように設計されており、最適なパフォーマンスを実現するためにネイティブのGoogleマップSDKを利用しています。ヒートマップは、交通密度、ユーザー活動、イベントのクラスタリングなどのパターンを可視化するのに役立ちます。このパッケージはGitHubでメンテナンスされており、pub経由で追加できます。

用途

  • 地理データ密度の可視化
  • ユーザー活動ホットスポットの表示
  • 交通や移動パターンの分析
  • イベント濃度のマッピング
  • 場所に基づく分析の強化

主な機能

  • ヒートマップレイヤーのレンダリングをサポート
  • Google Maps SDK と統合
  • リアルタイムヒートマップの更新
  • カスタマイズ可能なヒートマップの色と強度
  • 軽量で実装が簡単

適している対象

  • 場所ベースのアプリケーションにおけるデータ可視化
  • 空間分析を必要とするモバイルアプリ
  • 高密度ポイントデータを備えたアプリケーション
  • FlutterでGoogle Mapsを使用する開発者
  • インタラクティブマップレイヤーが必要なプロジェクト

注意事項

  • Google Maps API キーが必要です
  • iOSおよびAndroidプラットフォームに限定
  • 非常に大きなデータセットではヒートマップのパフォーマンスが低下する可能性があります
  • 外部のGoogleマップSDKに依存
  • 本番デプロイには追加の構成が必要になる場合があります

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

Google Maps for Flutter (Developers Preview)

Find and sponsor issues pub package Flutter CI

A Flutter plugin that provides a Google Maps widget with heatmap support.

Developers Preview Status

The plugin relies on Flutter's new mechanism for embedding Android and iOS views. As that mechanism is currently in a developers preview, this plugin should also be considered a developers preview.

Known issues are tagged with the platform-views and/or maps labels.

To use this plugin on iOS you need to opt-in for the embedded views preview by adding a boolean property to the app's Info.plist file, with the key io.flutter.embedded_views_preview and the value YES.

The API exposed by this plugin is not yet stable, and we expect some breaking changes to land soon.

Usage

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

Getting Started

Get an API key at https://cloud.google.com/maps-platform/.

Android

Specify your API key in the application manifest android/app/src/main/AndroidManifest.xml:

<manifest ...
  <application ...
    <meta-data android:name="com.google.android.geo.API_KEY"
               android:value="YOUR KEY HERE"/>
iOS

Specify your API key in the application delegate ios/Runner/AppDelegate.m:

#include "AppDelegate.h"
#include "GeneratedPluginRegistrant.h"
#import "GoogleMaps/GoogleMaps.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GMSServices provideAPIKey:@"YOUR KEY HERE"];
  [GeneratedPluginRegistrant registerWithRegistry:self];
  return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
@end

Or in your swift code, specify your API key in the application delegate ios/Runner/AppDelegate.swift:

import UIKit
import Flutter
import GoogleMaps

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
  ) -> Bool {
    GMSServices.provideAPIKey("YOUR KEY HERE")
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

Opt-in to the embedded views preview by adding a boolean property to the app's Info.plist file with the key io.flutter.embedded_views_preview and the value YES.

Both

You can now add a GoogleMap widget to your widget tree.

The map view can be controlled with the GoogleMapController that is passed to the GoogleMap's onMapCreated callback.

Sample Usage
import 'dart:async';

import 'package:flutter/material.dart';
import 'package:google_maps_flutter_heatmap/google_maps_flutter_heatmap.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Google Maps Demo',
      home: MapSample(),
    );
  }
}

class MapSample extends StatefulWidget {
  @override
  State<MapSample> createState() => MapSampleState();
}

class MapSampleState extends State<MapSample> {
  Completer<GoogleMapController> _controller = Completer();
  final Set<Heatmap> _heatmaps = {};
  static final CameraPosition _kGooglePlex = CameraPosition(
    target: LatLng(37.42796133580664, -122.085749655962),
    zoom: 14.4746,
  );
  LatLng _heatmapLocation = LatLng(37.42796133580664, -122.085749655962);
  static final CameraPosition _kLake = CameraPosition(
      bearing: 192.8334901395799,
      target: LatLng(37.43296265331129, -122.08832357078792),
      tilt: 59.440717697143555,
      zoom: 19.151926040649414);

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: GoogleMap(
        mapType: MapType.hybrid,
        initialCameraPosition: _kGooglePlex,
        heatmaps: _heatmaps,
        onMapCreated: (GoogleMapController controller) {
          _controller.complete(controller);
        },
      ),
      floatingActionButton: FloatingActionButton.extended(
        onPressed: _goToTheLake,
        label: Text('To the lake!'),
        icon: Icon(Icons.directions_boat),
      ),
      floatingActionButton: FloatingActionButton.extended(
        onPressed: _addHeatmap,
        label: Text('Add Heatmap'),
        icon: Icon(Icons.add_box),
      ),
    );
  }
  void _addHeatmap(){
    setState(() {
      _heatmaps.add(
        Heatmap(
          heatmapId: HeatmapId(_heatmapLocation.toString()),
          points: _createPoints(_heatmapLocation),
          radius: 20,
          visible: true,
          gradient:  HeatmapGradient(
            colors: <Color>[Colors.green, Colors.red], startPoints: <double>[0.2, 0.8]
          )
        )
      );
    });
  }
  //heatmap generation helper functions
  List<WeightedLatLng> _createPoints(LatLng location) {
    final List<WeightedLatLng> points = <WeightedLatLng>[];
    //Can create multiple points here
    points.add(_createWeightedLatLng(location.latitude,location.longitude, 1));
    points.add(_createWeightedLatLng(location.latitude-1,location.longitude, 1)); 
    return points;
  }

  WeightedLatLng _createWeightedLatLng(double lat, double lng, int weight) {
    return WeightedLatLng(point: LatLng(lat, lng), intensity: weight);
  }

  Future<void> _goToTheLake() async {
    final GoogleMapController controller = await _controller.future;
    controller.animateCamera(CameraUpdate.newCameraPosition(_kLake));
  }
}

See the example directory for a complete sample app.

カテゴリー

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。