Flutter地图展示插件flutter_map_arcgis的使用

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

Flutter地图展示插件 flutter_map_arcgis 的使用

flutter_map_arcgis 是一个用于在Flutter应用中集成ArcGIS地图服务的插件。它支持显示点、多边形和折线等要素图层,并且可以自定义渲染样式和交互事件。

当前支持的功能

  • 要素图层(点、多边形、折线)
  • 更多功能正在开发中

使用方法

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加以下依赖项:

dependencies:
  flutter_map: any
  flutter_map_arcgis: any # 或者 Pub 上的最新版本
  dio: any # 或者 Pub 上的最新版本

2. 配置地图

接下来,你可以将 flutter_map_arcgis 插件添加到你的 FlutterMap 中,并通过 FeatureLayerOptions 进行配置。

示例代码

import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:flutter_map_arcgis/flutter_map_arcgis.dart';
import 'package:latlong2/latlong.dart';

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

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

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('ArcGIS Map Example')),
        body: Padding(
          padding: EdgeInsets.all(8.0),
          child: Column(
            children: [
              Flexible(
                child: FlutterMap(
                  options: MapOptions(
                    center: LatLng(35.611909, -82.440682), // 地图中心点
                    zoom: 14.0,
                  ),
                  children: [
                    // 基础瓦片图层
                    TileLayer(
                      urlTemplate: 'http://{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}',
                      subdomains: ['mt0', 'mt1', 'mt2', 'mt3'],
                    ),
                    // 点要素图层
                    FeatureLayer(
                      FeatureLayerOptions(
                        "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Landscape_Trees/FeatureServer/0",
                        "point",
                        render: (dynamic attributes) {
                          // 根据属性进行渲染
                          return PointOptions(
                            width: 30.0,
                            height: 30.0,
                            builder: const Icon(Icons.pin_drop, color: Colors.green),
                          );
                        },
                        onTap: (attributes, LatLng location) {
                          print('Attributes: $attributes');
                          print('Location: $location');
                        },
                      ),
                    ),
                    // 多边形要素图层(注释掉的部分)
                    // FeatureLayer(
                    //   FeatureLayerOptions(
                    //     "https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/services/USA_Congressional_Districts/FeatureServer/0",
                    //     "polygon",
                    //     render: (dynamic attributes) {
                    //       return PolygonOptions(
                    //         borderColor: Colors.red,
                    //         color: Colors.black45,
                    //         borderStrokeWidth: 2,
                    //         isFilled: true,
                    //       );
                    //     },
                    //     onTap: (attributes, LatLng location) {
                    //       print(attributes);
                    //     },
                    //   ),
                    // ),
                    // 折线要素图层(注释掉的部分)
                    // FeatureLayer(
                    //   FeatureLayerOptions(
                    //     "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/ArcGIS/rest/services/Denver_Streets_Centerline/FeatureServer/0",
                    //     "polyline",
                    //     render: (dynamic attributes) {
                    //       return PolygonLineOptions(
                    //         borderColor: Colors.red,
                    //         color: Colors.red,
                    //         borderStrokeWidth: 2,
                    //       );
                    //     },
                    //     onTap: (attributes, LatLng location) {
                    //       print(attributes);
                    //     },
                    //   ),
                    // ),
                  ],
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何使用 flutter_map_arcgis 插件在 Flutter 应用中展示 ArcGIS 地图的示例代码。这个插件允许你使用 ArcGIS 的服务来展示地图图层。

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

dependencies:
  flutter:
    sdk: flutter
  flutter_map: ^0.x.x  # 请使用最新版本号
  flutter_map_arcgis: ^0.x.x  # 请使用最新版本号

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

接下来,你可以在你的 Flutter 应用中使用这些插件来展示 ArcGIS 地图。以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:flutter_map_arcgis/flutter_map_arcgis.dart';
import 'package:latlong2/latlong2.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('ArcGIS Map Example'),
        ),
        body: ArcGisMapExample(),
      ),
    );
  }
}

class ArcGisMapExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // ArcGIS MapServer 服务 URL
    final String mapServerUrl =
        'https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/World_Imagery/MapServer';

    return FlutterMap(
      options: MapOptions(
        center: LatLng(0.0, 0.0), // 地图中心点
        zoom: 2.0, // 初始缩放级别
      ),
      layers: [
        TileLayerOptions(
          tileProvider: ArcGisTileProvider(
            urlTemplate: mapServerUrl,
            subDomains: [''], // 根据需要设置子域
          ),
        ),
      ],
    );
  }
}

在这个示例中,我们做了以下几件事情:

  1. 引入必要的包:我们导入了 flutter/material.dartflutter_map/flutter_map.dartflutter_map_arcgis/flutter_map_arcgis.dart
  2. 定义主应用:在 MyApp 类中,我们设置了 MaterialApp 和 Scaffold,其中包含了我们的地图示例组件 ArcGisMapExample
  3. 定义地图组件:在 ArcGisMapExample 类中,我们创建了一个 FlutterMap 组件,并设置了地图选项(包括中心点和缩放级别)。
  4. 添加 ArcGIS 图层:我们使用 TileLayerOptionsArcGisTileProvider 来添加 ArcGIS 地图服务图层。你需要提供 ArcGIS MapServer 服务的 URL。

确保你替换了 mapServerUrl 变量中的 URL 为有效的 ArcGIS MapServer 服务 URL。如果你使用的是自己的 ArcGIS 服务,你需要提供正确的服务 URL。

这个示例展示了如何使用 flutter_map_arcgis 插件在 Flutter 应用中展示 ArcGIS 地图。根据你的需求,你可以进一步自定义和扩展这个示例。

回到顶部