在 google_maps_flutter 中获取可见标记

Das*_*tha 5 google-maps flutter flutter-dependencies

使用Google Maps for Flutter我在地图上的不同位置放置了一些标记。我的 Flutter 应用程序上有一个单独的 RaisingButton,仅当其中一个或多个标记当前在地图上可见时,我才需要显示该按钮。

如何才能实现这一目标?我为 Google Maps API 找到了一个有点类似的解决方案,但我需要在 Flutter 上使用 google_maps_flutter。

小智 6

LatLngBounds有一个特定的方法,称为which 与\'scontains()一起工作。GoogleMapControllergetVisibleRegion()

\n\n

来自官方文档:

\n\n
contains(LatLng point) \xe2\x86\x92 bool\nReturns whether this rectangle contains the given LatLng.\n
Run Code Online (Sandbox Code Playgroud)\n\n

用法:

\n\n
Completer<GoogleMapController> _controller = Completer();\n\nstatic final CameraPosition _positionCenter = CameraPosition(\n    target: LatLng(40.730610, -73.935242),\n    zoom: 3.5,\n);\n\nFuture<LatLngBounds> _getVisibleRegion() async {\n    final GoogleMapController controller = await _controller.future;\n    final LatLngBounds bounds = await controller.getVisibleRegion();\n    return bounds;\n}\n\n@override\nWidget build(BuildContext context) {\n    void checkMarkers() async {\n        LatLngBounds bounds = await _getVisibleRegion();\n        Set<Marker> markers = Set<Marker>.of(markers.values);\n\n        markers.forEach((marker) {\n            print(\'Position: ${ marker.position } - Contains: ${ bounds.contains(marker.position) }\');\n        });\n    }\n\n    return GoogleMap(\n        mapType: MapType.normal,\n        markers: Set<Marker>.of(markers.values),\n        initialCameraPosition: _positionCenter,\n        onCameraIdle: () {\n            checkMarkers();\n        },\n        onMapCreated: (GoogleMapController controller) async {\n            _controller.complete(controller);\n            checkMarkers();\n        },\n    );\n}\n
Run Code Online (Sandbox Code Playgroud)\n


Ran*_*rtz 0

google_maps_flutter是 0.0.3 版本的开发者预览版。请稍等一下,直到推出更多功能。