Flutter高德地图展示插件amap_view_muka的使用

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

Flutter高德地图展示插件amap_view_muka的使用

amap_view_muka

引入方式

pubspec.yaml文件中添加依赖:

dependencies:
  amap_view_muka: ^0.1.0

支持的功能

显示地图

  • ✅ 显示定位蓝点
  • ✅ 显示室内地图
  • ✅ 切换地图图层
  • ✅ 使用离线地图(目前只支持官方UI)
  • ✅ 显示英文地图
  • ✅ 自定义地图(写了方法但不起作用,不知道啥问题)

与地图交互

  • ✅ 控件交互
  • ✅ 手势交互
  • ✅ 调用方法交互
  • ✅ 地图截屏功能

在地图上绘制

  • ❌ 绘制点标记
  • ❌ 绘制线
  • ❌ 绘制面
  • ❌ 绘制热力图
  • ❌ 绘制3D模型
  • ❌ 点平滑移动
  • ❌ 绘制海量点图层

Android

AndroidManifest.xml文件中添加以下代码:

<meta-data android:name="com.amap.api.v2.apikey" android:value="你的key" />

iOS

Info.plist文件中添加以下代码:

<!-- 默认 -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>App需要您的同意,才能访问位置</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>App需要您的同意,才能访问位置</string>
<key>amap_key</key>
<string>你的key</string>

<!-- 导航 [后台持续定位只需要location] -->
<key>UIBackgroundModes</key>
<array>
    <string>location</string>
    <string>audio</string>
</array>

完整示例代码

以下是一个完整的示例代码,展示了如何使用amap_view_muka插件在Flutter中展示高德地图。

main.dart

import 'package:amap_location_muka/amap_location_muka.dart';
import 'package:flutter/material.dart';
import 'package:flutter_muka/flutter_muka.dart';
import 'package:permission_handler/permission_handler.dart';

import 'amap_search.dart';
import 'create_amap/amap.dart';
import 'create_amap/interactive.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化权限
  await [Permission.locationAlways, Permission.storage].request();

  // 设置高德地图API密钥
  AMapLocation.updatePrivacyAgree(true);
  AMapLocation.updatePrivacyShow(true, true);
  AMapLocation.setApiKey("6e630e675873f2a548f55ba99ee8c571", "56250708b9588800db63161534716f8c");

  runApp(MyApp());
}

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

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('高德地图示例'),
        ),
        body: ListView(
          children: [
            Column(
              children: [
                // 创建地图
                ListItem(
                  title: Text('创建地图'),
                  showArrow: true,
                  color: Colors.white,
                  showDivider: true,
                  onTap: () {
                    Navigator.push(
                      context,
                      MaterialPageRoute(builder: (context) => Amap()),
                    );
                  },
                ),
                // 与地图交互
                ListItem(
                  title: Text('与地图交互'),
                  showArrow: true,
                  color: Colors.white,
                  showDivider: true,
                  onTap: () {
                    Navigator.push(
                      context,
                      MaterialPageRoute(builder: (context) => Interactive()),
                    );
                  },
                ),
                // 在地图上绘制
                ListItem(
                  title: Text('在地图上绘制'),
                  showArrow: true,
                  color: Colors.white,
                  showDivider: true,
                ),
                // 获取地图数据
                ListItem(
                  title: Text('获取地图数据'),
                  showArrow: true,
                  color: Colors.white,
                  showDivider: true,
                ),
                // 当前位置
                ListItem(
                  title: Text('当前位置'),
                  showArrow: true,
                  color: Colors.white,
                  showDivider: true,
                  onTap: () {
                    Navigator.push(
                      context,
                      MaterialPageRoute(builder: (context) => AMapSearchLoc()),
                    );
                  },
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

// 自定义列表项组件
class ListItem extends StatelessWidget {
  final String title;
  final bool showArrow;
  final Color color;
  final bool showDivider;
  final VoidCallback onTap;

  const ListItem({
    required this.title,
    this.showArrow = false,
    this.color = Colors.blue,
    this.showDivider = false,
    required this.onTap,
  });

  [@override](/user/override)
  Widget build(BuildContext context) {
    return ListTile(
      title: Text(title, style: TextStyle(color: color)),
      trailing: showArrow ? Icon(Icons.arrow_right) : null,
      onTap: onTap,
      tileColor: Colors.grey[200],
      dense: true,
    );
  }
}

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

1 回复

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


amap_view_muka 是一个用于在 Flutter 应用中集成高德地图的插件。它提供了丰富的功能,包括地图展示、标记、路线规划等。以下是如何使用 amap_view_muka 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 amap_view_muka 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  amap_view_muka: ^0.0.1  # 请使用最新版本

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

2. 配置高德地图 SDK

在使用高德地图之前,你需要在高德开放平台注册并创建一个应用,获取 AppKey

Android 配置

android/app/src/main/AndroidManifest.xml 文件中添加以下配置:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yourapp">

    <application
        android:name=".MyApplication"
        android:label="Your App"
        android:icon="@mipmap/ic_launcher">
        
        <!-- 高德地图 AppKey -->
        <meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="YOUR_AMAP_APP_KEY" />
        
    </application>
</manifest>

iOS 配置

ios/Runner/Info.plist 文件中添加以下配置:

<key>AMapApiKey</key>
<string>YOUR_AMAP_APP_KEY</string>

3. 初始化地图

在你的 Flutter 应用中初始化高德地图。通常可以在 main.dart 中进行初始化:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await AMapViewMuka.init('YOUR_AMAP_APP_KEY');
  runApp(MyApp());
}

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

4. 展示地图

MapScreen 中展示地图:

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

class MapScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('高德地图示例'),
      ),
      body: AMapView(
        onMapCreated: (controller) {
          // 地图创建完成后的回调
        },
      ),
    );
  }
}

5. 添加标记

你可以在地图上添加标记:

AMapView(
  onMapCreated: (controller) {
    controller.addMarker(MarkerOptions(
      position: LatLng(39.90923, 116.397428), // 标记的位置
      title: '北京天安门', // 标记的标题
      snippet: '这是天安门广场', // 标记的副标题
    ));
  },
)
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!