【问题标题】:flutter googlemap zoomcontrol position颤动谷歌地图缩放控制位置
【发布时间】:2020-06-23 14:10:59
【问题描述】:

我正在使用 google_maps_flutter 包在应用程序中创建地图。我正在使用以下功能

GoogleMap(
                        initialCameraPosition: CameraPosition(
                            target: _locationCoords, zoom: 12.0),
                        markers: Set.from(allMarkers),
                        onMapCreated: mapCreated,
                        zoomControlsEnabled: true,
                        zoomGesturesEnabled: true,
                        scrollGesturesEnabled: true,
                        compassEnabled: true,
                      )

问题在于缩放控件。我可以看到缩放控件出现,但我想将缩放控件的位置更改为出现在右侧。是否可以更改缩放控件的位置。

【问题讨论】:

  • google_maps_flutter 包中似乎还没有更改缩放控制位置的选项

标签: google-maps flutter


【解决方案1】:

我没有找到任何解决方案,所以我创建了自定义缩放控件并使用地图控制器将它们添加到地图上。

Positioned(
      top: 100,
      left: 5,
      child: Card(
        elevation: 2,
        child: Container(
          color: Color(0xFFFAFAFA),
          width: 40,
          height: 100,
          child: Column(
            children: <Widget>[
              IconButton(
                  icon: Icon(Icons.add),
                  onPressed: () async {
                    var currentZoomLevel = await _controller.getZoomLevel();

                    currentZoomLevel = currentZoomLevel + 2;
                    _controller.animateCamera(
                      CameraUpdate.newCameraPosition(
                        CameraPosition(
                          target: locationCoords,
                          zoom: currentZoomLevel,
                        ),
                      ),
                    );
                  }),
              SizedBox(height: 2),
              IconButton(
                  icon: Icon(Icons.remove),
                  onPressed: () async {
                    var currentZoomLevel = await _controller.getZoomLevel();
                    currentZoomLevel = currentZoomLevel - 2;
                    if (currentZoomLevel < 0) currentZoomLevel = 0;
                    _controller.animateCamera(
                      CameraUpdate.newCameraPosition(
                        CameraPosition(
                          target: locationCoords,
                          zoom: currentZoomLevel,
                        ),
                      ),
                    );
                  }),
            ],
          ),
        ),
      ),
    );

【讨论】:

  • 对于更一般的方法,无需对某些坐标进行动画处理:var currentZoomLevel = await myStore.mapController.getZoomLevel(); currentZoomLevel = currentZoomLevel + 2; myStore.mapController.animateCamera(CameraUpdate.zoomTo(currentZoomLevel));
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-21
  • 2012-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-18
相关资源
最近更新 更多