Flutter地图展示插件amap_flutter_map的使用

发布于 1周前 作者 gougou168 来自 Flutter

Flutter地图展示插件amap_flutter_map的使用

基于高德开放平台地图SDK的flutter插件。

使用方法

使用Flutter插件,请参考在Flutter里使用Packages,添加amap_flutter_map的引用。

准备工作

  1. 登录高德开放平台官网申请ApiKey。Android平台申请配置key请参考Android获取key, iOS平台申请配置请参考iOS获取key。
  2. 引入高德地图SDK,Android平台请参考Android Studio配置工程, iOS平台请参考ios安装地图SDK。
  3. iOS端插件使用特殊配置: Flutter 1.22.0 之前(之后的版本可以不添加该配置),iOS端的UiKitView还只是preview状态,默认是不支持的,需要手动打开开关,在iOS工程的info.plist添加如下配置:
<key>io.flutter.embedded_views_preview</key>
<string>YES</string>

使用示例

以下是一个简单的示例,展示了如何在Flutter应用中使用amap_flutter_map插件来展示地图。

import 'package:amap_flutter_map_example/base_page.dart';
import 'package:flutter/material.dart';

import 'package:amap_flutter_map/amap_flutter_map.dart';
import 'package:amap_flutter_base/amap_flutter_base.dart';

class ShowMapPage extends BasePage {
  ShowMapPage(String title, String subTitle) : super(title, subTitle);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return _ShowMapPageBody();
  }
}

class _ShowMapPageBody extends StatefulWidget {
  [@override](/user/override)
  State<StatefulWidget> createState() => _ShowMapPageState();
}

class _ShowMapPageState extends State<_ShowMapPageBody> {
  static final CameraPosition _kInitialPosition = const CameraPosition(
    target: LatLng(39.909187, 116.397451),
    zoom: 10.0,
  );
  List<Widget> _approvalNumberWidget = List<Widget>();

  [@override](/user/override)
  Widget build(BuildContext context) {
    final AMapWidget map = AMapWidget(
      initialCameraPosition: _kInitialPosition,
      onMapCreated: onMapCreated,
    );

    return ConstrainedBox(
      constraints: BoxConstraints.expand(),
      child: Stack(
        alignment: Alignment.center,
        children: [
          Container(
            height: MediaQuery.of(context).size.height,
            width: MediaQuery.of(context).size.width,
            child: map,
          ),
          Positioned(
              right: 10,
              bottom: 15,
              child: Container(
                alignment: Alignment.centerLeft,
                child: Column(
                    mainAxisAlignment: MainAxisAlignment.start,
                    children: _approvalNumberWidget),
              ))
        ],
      ),
    );
  }

  AMapController _mapController;

  void onMapCreated(AMapController controller) {
    setState(() {
      _mapController = controller;
      getApprovalNumber();
    });
  }

  /// 获取审图号
  void getApprovalNumber() async {
    // 普通地图审图号
    String mapContentApprovalNumber =
        await _mapController?.getMapContentApprovalNumber();
    // 卫星地图审图号
    String satelliteImageApprovalNumber =
        await _mapController?.getSatelliteImageApprovalNumber();
    setState(() {
      if (null != mapContentApprovalNumber) {
        _approvalNumberWidget.add(Text(mapContentApprovalNumber));
      }
      if (null != satelliteImageApprovalNumber) {
        _approvalNumberWidget.add(Text(satelliteImageApprovalNumber));
      }
    });
    print('地图审图号(普通地图): $mapContentApprovalNumber');
    print('地图审图号(卫星地图): $satelliteImageApprovalNumber');
  }
}

更多关于Flutter地图展示插件amap_flutter_map的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter地图展示插件amap_flutter_map的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个使用 amap_flutter_map 插件在 Flutter 应用中展示高德地图的示例代码。这个示例将展示如何初始化地图、设置地图的中心点以及添加一些基本的地图控件。

首先,确保你已经在 pubspec.yaml 文件中添加了 amap_flutter_map 依赖:

dependencies:
  flutter:
    sdk: flutter
  amap_flutter_map: ^x.y.z  # 请替换为最新版本号

然后,运行 flutter pub get 以获取依赖。

接下来,在你的 Flutter 应用中,你可以按照以下步骤使用 amap_flutter_map

  1. 初始化高德地图的 API Key

    在使用高德地图服务之前,你需要在高德开放平台申请一个 API Key。确保你已经获得了 API Key,并在你的 Flutter 应用中进行配置。

  2. 创建地图页面

    创建一个新的 Dart 文件(例如 map_page.dart),并在其中编写以下代码:

import 'package:flutter/material.dart';
import 'package:amap_flutter_map/amap_flutter_map.dart';
import 'package:amap_flutter_map/models/amap_options.dart';
import 'package:amap_flutter_map/models/camera_position.dart';

class MapPage extends StatefulWidget {
  @override
  _MapPageState createState() => _MapPageState();
}

class _MapPageState extends State<MapPage> {
  final String apiKey = '你的高德地图API Key';  // 在这里替换为你的API Key

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('高德地图展示'),
      ),
      body: AMapWidget(
        apiKey: apiKey,
        options: AMapOptions(
          cameraPosition: CameraPosition(
            target: LatLng(39.906901, 116.397972),  // 北京天安门坐标
            zoom: 14.0,
          ),
          zoomControlsEnabled: true,
          compassEnabled: true,
          myLocationEnabled: true,
        ),
      ),
    );
  }
}
  1. 在主应用中引入地图页面

    在你的主应用 Dart 文件(例如 main.dart)中,引入并展示 MapPage

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter 高德地图示例',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MapPage(),
    );
  }
}
  1. 运行应用

    现在,你可以运行你的 Flutter 应用,应该会看到一个展示北京天安门附近区域的高德地图。

这个示例展示了如何使用 amap_flutter_map 插件在 Flutter 应用中集成和展示高德地图。你可以根据需要进一步自定义地图的样式和功能,例如添加标记、多边形、路线规划等。更多高级用法请参考 amap_flutter_map 的官方文档和示例。

回到顶部