栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

高德开放平台地图Flutter插件实现绘制圆

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

高德开放平台地图Flutter插件实现绘制圆

高德地图Flutter插件实现绘制圆

高德地图Flutter插件中目前的文档当中只提供了绘制线、面的功能,并未提供绘制圆的功能。但是目前有一个功能需要根据中心点与半径绘制圆,所以利用其提供的Polygon API实现绘制圆。具体的实现代码如下,希望能给有类似需求的小伙伴提供一种解决方案。

///Created by Qiaozi 20210930
import 'dart:math' as Math;
import 'package:amap_flutter_map/amap_flutter_map.dart';
import 'package:amap_flutter_base/amap_flutter_base.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:great_circle_distance2/great_circle_distance2.dart';
import 'package:workstyle/util/color.dart';
import 'package:workstyle/util/constant.dart';

import 'logic.dart';

class RelocationPage extends StatefulWidget {
  const RelocationPage({Key key}) : super(key: key);

  @override
  _RelocationPageState createState() => _RelocationPageState();
}

class _RelocationPageState extends State {
  AMapController _mapController;
  Map _polygons = {};
  String selectedPolygonId;

  @override
  Widget build(BuildContext context) {
    ///构建打卡范围坐标集合
    _add();
    final AMapWidget amap = AMapWidget(
      apiKey: AMapApiKey(androidKey: Constant.amapApiKeys, iosKey: Constant.amapApiKeys),
      onMapCreated: onMapCreated,
    ///将多边形添加到地图中
      polygons: Set.of(_polygons.values),
    );

    _changeCameraPosition();
    return Container(
      height: MediaQuery.of(context).size.height,
      width: MediaQuery.of(context).size.width,
      child: Column(
        mainAxisAlignment: MainAxisAlignment.start,
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: [
          Container(
            height: MediaQuery.of(context).size.height * 0.1,
            width: MediaQuery.of(context).size.width,
            child:Scaffold(
              appBar: AppBar(
                backgroundColor: Colors.white,
                brightness: Brightness.light,
                elevation: 0.2,
                leading: IconButton(
                    icon:materialColor['backIcon'],
                    onPressed: () {
                      Get.back();
                    }),
                title: Text('绘制圆', style: materialColor['centerTitle'],),
                centerTitle: true,
              ),
            ),
          ),
          Container(
            height: MediaQuery.of(context).size.height * 0.9,
            width: MediaQuery.of(context).size.width,
            child: amap,
          ),
        ],
      ),
    );
  }

  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');
  }

  ///创建打卡范围坐标点集合
  _add(){
    final Polygon polygon = Polygon(
      strokeColor: Colors.green,
      fillColor: Colors.grey.withOpacity(0.3),
      strokeWidth: 2,
      points: _createPoints(),
    );
    setState(() {
      selectedPolygonId = polygon.id;
      _polygons[polygon.id] = polygon;
    });
  }

  ///创建坐标点
  List  _createPoints(){
  ///controller.state.zone.value:半径
  ///controller.state.lat.value 中心点经度
  ///controller.state.lng.value 中心点纬度
    final List points = [];
    double r = 6371000.79;
    int numpoints = 360;
    double phase = 2 * Math.pi / numpoints;

    for(int i=0; i
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/284731.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号