Flutter标记创建插件marker_crafter的使用

Flutter标记创建插件marker_crafter的使用

Marker Crafter

pub package

Marker Crafter 是一个用于在地图上添加用户定义的文本标签的 Flutter 包。通过使用 Google Maps Flutter 包,您可以向地图上的标记添加自定义文本。

使用

  1. 首先,将 google_maps_flutter 包添加到您的项目中。 修改 pubspec.yaml 文件如下:
dependencies:
  flutter:
    sdk: flutter
  google_maps_flutter: ^2.0.10
  1. 然后,将 marker_crafter 包添加到您的项目中。 修改 pubspec.yaml 文件如下并添加包:
dependencies:
  flutter:
    sdk: flutter
  google_maps_flutter: ^2.0.10
  marker_crafter: ^1.1.3
  1. 接下来是一个示例代码:
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:marker_crafter/marker_crafter.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MapScreen(),
    );
  }
}

class MapScreen extends StatefulWidget {
  [@override](/user/override)
  _MapScreenState createState() => _MapScreenState();
}

class _MapScreenState extends State<MapScreen> {
  Set<Marker> markers = {};

  [@override](/user/override)
  void initState() {
    super.initState();
    addMarkers();
  }

  void addMarkers() async {
    MarkerCrafter marker = MarkerCrafter(
      text: "Marker Label",
      markerId: MarkerId("markerIdString"),
      position: LatLng(11.1203, 45.33),
    );

    bool success = await markers.addTextMarker(marker);
    if (success) {
      setState(() {});
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Marker Crafter Demo"),
      ),
      body: GoogleMap(
        initialCameraPosition: CameraPosition(
          target: LatLng(11.1203, 45.33),
          zoom: 10,
        ),
        markers: markers,
      ),
    );
  }
}

在这个示例中,我们使用 MarkerCrafter 类将一个标记添加到地图上。addTextMarker 函数接受一个 MarkerCrafter 实例,并根据给定的文本创建一个标记。


完整的示例代码

以下是从 GitHub 获取的完整示例代码:

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:marker_crafter/extension/marker_crafter_add_extension.dart';
import 'package:marker_crafter/marker_crafter.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MapScreen(),
    );
  }
}

class MapScreen extends StatefulWidget {
  const MapScreen({super.key});

  [@override](/user/override)
  State<MapScreen> createState() => _MapScreenState();
}

class _MapScreenState extends State<MapScreen> {
  Set<Marker> markers = {};

  [@override](/user/override)
  void initState() {
    super.initState();
    addMarkers();
  }

  void addMarkers() async {
    MarkerCrafter marker = MarkerCrafter(
      text: "1",
      markerId: const MarkerId("markerIdString"),
      position: const LatLng(41.087577, 28.809226),
      backgroundColor: Colors.red,
    );

    bool success = await markers.addTextMarker2(marker);
    if (success) {
      setState(() {});
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Marker Crafter Demo"),
      ),
      body: GoogleMap(
        initialCameraPosition: const CameraPosition(
          target: LatLng(41.087577, 28.809226),
          zoom: 10,
        ),
        markers: markers,
      ),
    );
  }
}

更多关于Flutter标记创建插件marker_crafter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter标记创建插件marker_crafter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用marker_crafter插件来创建标记(marker)的一个示例代码案例。marker_crafter插件通常用于在地图(如Google Maps)上创建和自定义标记。请注意,实际使用时需要确保已正确安装并配置了marker_crafter插件及其依赖项。

首先,确保在pubspec.yaml文件中添加marker_crafter依赖项:

dependencies:
  flutter:
    sdk: flutter
  marker_crafter: ^latest_version  # 替换为实际的最新版本号

然后,运行flutter pub get来安装依赖项。

接下来,是如何在Flutter应用中使用marker_crafter插件的示例代码:

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:marker_crafter/marker_crafter.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MapScreen(),
    );
  }
}

class MapScreen extends StatefulWidget {
  @override
  _MapScreenState createState() => _MapScreenState();
}

class _MapScreenState extends State<MapScreen> {
  final LatLng _center = LatLng(-34, 151); // 默认中心位置
  GoogleMapController? _controller;
  Set<Marker> _markers = Set<Marker>().obs;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Marker Crafter Example'),
      ),
      body: GoogleMap(
        mapType: MapType.normal,
        initialCameraPosition: CameraPosition(
          target: _center,
          zoom: 11.0,
        ),
        markers: _markers,
        onMapCreated: (GoogleMapController controller) {
          _controller = controller;
          _addMarker();
        },
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          _addCustomMarker();
        },
        tooltip: 'Add Custom Marker',
        child: Icon(Icons.add),
      ),
    );
  }

  void _addMarker() {
    setState(() {
      _markers.add(
        Marker(
          markerId: MarkerId('default_marker'),
          position: _center,
          infoWindow: InfoWindow(
            title: 'Default Marker',
            snippet: 'This is a default marker',
          ),
        ),
      );
    });
  }

  void _addCustomMarker() async {
    // 假设 marker_crafter 提供了某种自定义标记的方法
    // 这里是一个示例,实际方法可能不同,请参考 marker_crafter 的文档
    CustomMarker customMarker = await MarkerCrafter.createCustomMarker(
      position: _center,
      icon: BitmapDescriptor.defaultMarker, // 可以使用自定义图标
      infoWindow: InfoWindow(
        title: 'Custom Marker',
        snippet: 'This is a custom marker created using marker_crafter',
      ),
      // 其他可能的自定义属性
    );

    setState(() {
      _markers.add(Marker.fromMapId(customMarker.markerId)); // 假设有fromMapId方法
    });
  }
}

注意

  1. 上述代码中的MarkerCrafter.createCustomMarker和相关方法(如fromMapId)是假设的,因为marker_crafter插件的具体API可能会有所不同。请务必参考marker_crafter的官方文档或源码,了解如何正确地创建和添加自定义标记。
  2. google_maps_flutter插件用于显示地图和基本的标记。如果你使用的是其他地图服务,可能需要调整代码。
  3. 示例代码中的BitmapDescriptor.defaultMarker用于标记图标,你可以替换为自定义图标。

在实际项目中,请确保根据marker_crafter的文档和API参考进行实现,并处理任何必要的错误和异常情况。

回到顶部