sej*_*l.8 5 android google-maps dart flutter
我正在使用 google_maps_flutter 插件来使用谷歌地图。我想在谷歌地图上绘制一个多边形,坐标从用户处获取。获取的坐标是“位置”对象的类型。
我已经尝试过使用map_view插件来绘制多边形。但这对我不起作用。
这是获取坐标的代码片段。
Geolocator geolocator = Geolocator();
StreamSubscription<Position> _positionStreamSubscription;
final List<Position> _positions = <Position>[];
void _toggleListening() {
if (_positionStreamSubscription == null) {
const LocationOptions locationOptions =
LocationOptions(accuracy: LocationAccuracy.best, distanceFilter: 10);
final Stream<Position> positionStream =
Geolocator().getPositionStream(locationOptions);
_positionStreamSubscription = positionStream.listen(
(Position position) => setState(() => _positions.add(position)));
_positionStreamSubscription.pause();
}
setState(() {
if (_positionStreamSubscription.isPaused) {
_positionStreamSubscription.resume();
} else {
_positionStreamSubscription.pause();
}
});
Run Code Online (Sandbox Code Playgroud)
好吧,如果您可以将对象的坐标转换Position为LatLng对象,那么您可以使用google_maps_flutter本身来绘制多边形。您可以看到它的参数之一允许使用Polygons。因此,仅以 google_maps_flutter 的示例为基础,我们将首先设置多边形:
Set<Polygon> myPolygon() {
List<LatLng> polygonCoords = new List();
polygonCoords.add(LatLng(37.43296265331129, -122.08832357078792));
polygonCoords.add(LatLng(37.43006265331129, -122.08832357078792));
polygonCoords.add(LatLng(37.43006265331129, -122.08332357078792));
polygonCoords.add(LatLng(37.43296265331129, -122.08832357078792));
Set<Polygon> polygonSet = new Set();
polygonSet.add(Polygon(
polygonId: PolygonId('test'),
points: polygonCoords,
strokeColor: Colors.red));
return polygonSet;
}
Run Code Online (Sandbox Code Playgroud)
然后只需将其提供给 GoogleMap 小部件即可。
GoogleMap(
polygons: myPolygon(),
mapType: MapType.normal,
initialCameraPosition: _kGooglePlex,
onMapCreated: (GoogleMapController controller) {
_controller.complete(controller);
},
),
Run Code Online (Sandbox Code Playgroud)
这将在 GooglePlex 附近绘制一个小三角形。
有关此功能的更多信息,您可以参考Maps SDK Shapes的 Android 文档。API 用法即使不相似也应该相同,因此您可以将其用作指南。
| 归档时间: |
|
| 查看次数: |
6096 次 |
| 最近记录: |