google-maps - 修复中心的谷歌地图标记
问题描述
在我的颤振应用程序中。我正在使用google_maps_plugin
. 链接是https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter。我想在拖动地图后将标记固定在地图中心而不移动。我希望它喜欢http://jsfiddle.net/UuDA6/
在我MarkerOption
用于放置标记的代码中。
MarkerOptions options = new MarkerOptions(
alpha: 1.0,
anchor: Offset(0.5, 1.0),
consumeTapEvents: false,
draggable: false,
flat: false,
icon: BitmapDescriptor.defaultMarker,
infoWindowAnchor: Offset(0.5, 0.0),
infoWindowText: InfoWindowText.noText,
position: LatLng(17.411439, 78.5486697),
rotation: 0.0,
visible: true,
zIndex: 0.0,
);
但是在position
我想知道如何给出地图的中心。
如果有人对此有想法,请分享。
解决方案
实际上,通过google_maps_flutter: ^0.4.0的新更新,我们可以轻松实现上述要求。
这是演示链接。
Map<MarkerId, Marker> _markers = <MarkerId, Marker>{};
int _markerIdCounter = 0;
Completer<GoogleMapController> _mapController = Completer();
Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: GoogleMap(
markers: Set<Marker>.of(_markers.values),
onMapCreated: _onMapCreated,
initialCameraPosition: CameraPosition(
target: Constants.LOCATION_SRI_LANKA,
zoom: 12.0,
),
myLocationEnabled: true,
onCameraMove: (CameraPosition position) {
if(_markers.length > 0) {
MarkerId markerId = MarkerId(_markerIdVal());
Marker marker = _markers[markerId];
Marker updatedMarker = marker.copyWith(
positionParam: position.target,
);
setState(() {
_markers[markerId] = updatedMarker;
});
}
},
),
)
void _onMapCreated(GoogleMapController controller) async {
_mapController.complete(controller);
if ([INITIAL_LOCATION] != null) {
MarkerId markerId = MarkerId(_markerIdVal());
LatLng position = [INITIAL_LOCATION];
Marker marker = Marker(
markerId: markerId,
position: position,
draggable: false,
);
setState(() {
_markers[markerId] = marker;
});
Future.delayed(Duration(seconds: 1), () async {
GoogleMapController controller = await _mapController.future;
controller.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: position,
zoom: 17.0,
),
),
);
});
}
}
String _markerIdVal({bool increment = false}) {
String val = 'marker_id_$_markerIdCounter';
if (increment) _markerIdCounter++;
return val;
}
推荐阅读
- python - 为什么我会收到“NameError: name 'self' is not defined”?
- firebase - 如何保护 Next.Js 应用程序像数据库一样应用 Firebase?
- spring-boot - ActiveMQ 负载均衡
- php - 为什么代码(ajax)在移动浏览器中不起作用
- javascript - 使用 CSS 关键帧、动画和反应在容器 div 内水平滑动图像
- qt - 使用 SQL 在 QT 中创建包含大量列的表的最简单方法?
- next.js - SyntaxError:不能在 nextjs 的模块外使用 import 语句
- php - 每当我在自定义查询中使用 meta_key 时,我都没有得到预期的结果
- angular8 - 如何在 angular 8 mat table 上获取搜索结果计数
- reactjs - 如何使用 AntDesign 将自定义添加按钮添加到水平选项卡