如何在扑中当前位置上创建圆

时间:2019-01-16 06:33:20

标签: google-maps flutter flutter-layout

我正在从事flutter项目。在该项目上,我必须在Google地图上的当前位置绘制一个圆圈。任何人都有想法。

我想像这样

enter image description here

谢谢。

6 个答案:

答案 0 :(得分:3)

此功能现已在google_maps_flutter软件包中提供:

https://pub.dev/documentation/google_maps_flutter/latest/google_maps_flutter/Circle-class.html

部分示例:

Set<Circle> circles = Set.from([Circle(
    circleId: CircleId(id),
    center: LatLng(latitude, longitude),
    radius: 4000,
)]);

GoogleMap(
    mapType: MapType.normal,
    myLocationEnabled: true,
    myLocationButtonEnabled: true,
    initialCameraPosition: initialMapLocation,
    onMapCreated: (GoogleMapController controller) {
      _controller.complete(controller);
    },
    onCameraMove: null,
    circles: circles,
  );

答案 1 :(得分:0)

一种方法是更改​​标记的图标

            mapController.addMarker(MarkerOptions(
                position: LatLng(37.4219999, -122.0862462),
                icon: BitmapDescriptor.fromAsset('images/circle.png',),
              ),);

在android / ios上设置适当的权限后,在Google Maps选项上设置trackCameraPosition: truemyLocationEnabled: true,之后您可以按照以下代码在当前位置添加图片

           mapController.addMarker(MarkerOptions(
                position: mapController.cameraPosition.target,
                icon: BitmapDescriptor.fromAsset('images/circle.png',),
              ),);

这是一篇很棒的文章,其中介绍了您可以使用Google Maps for Flutter(开发者预览)插件article

进行的所有操作

答案 2 :(得分:0)

请记住,谷歌地图小部件是开发者预览版,版本为0.2。在接下来的几个月中,许多事情和能力可能会发生变化。

答案 3 :(得分:0)

https://github.com/flutter/plugins/pull/1136上有一个具有此功能的开放式拉取请求

但是Google团队未接受它,因为进行提交的许可证存在问题。我不知道这是否会合并。有很多请求请求被接受,但是没有被集成。

答案 4 :(得分:0)

如果使用flutter_map插件,则可以轻松绘制半径圆。这是代码。

FlutterMap(
    options: MapOptions(
        center: LatLng(latitude, longitude),
        zoom: 16.0
    ),
    layers: [
        TileLayerOptions(
            urlTemplate: "map url",
            additionalOptions:  {
            "accessToken" : "xxx",
            "id" : "map id"
            }
        ), 
        MarkerLayerOptions(
            markers: Marker( //marker
                width: 25.0,
                height: 25.0,
                point: LatLng(latitude, longitude),
                builder: (context) {
                return Container(
                    child: IconButton(
                        icon: Icon(Icons.my_location),
                        iconSize: 25.0,
                        color: Color(0xff9045f7),
                        onPressed: () {
                            print('marker tapped');
                        },
                        ),
                    );
                }
            )
        ),
        CircleLayerOptions(
            circles: CircleMarker( //radius marker
                point: LatLng(latitude, longitude),
                color: Colors.blue.withOpacity(0.3),
                borderStrokeWidth: 3.0,
                borderColor: Colors.blue,
                radius: 100 //radius
            )
        )
    ],
),)

答案 5 :(得分:0)

您可以使用 google_maps_flutter 插件,代码如下:

circles: Set.from([Circle( circleId: CircleId('currentCircle'),
      center: LatLng(position.latitude,position.longitude),
      radius: 4000,
          fillColor: Colors.blue.shade100.withOpacity(0.5),
          strokeColor:  Colors.blue.shade100.withOpacity(0.1),
    ),],),