如何解决Flutter Google Maps:如何在运行后更改地图类型?
按下图所示的按钮时,我试图从normal
更改为satellite
,但出现一个错误,提示setMapType不存在。
mapController.setMapType(MapType.satellite);
有人知道我在做什么错吗?
解决方法
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:search_map_place/search_map_place.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
String apiKEY;
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Search Map Place Demo',home: MapSample(),);
}
}
class MapSample extends StatefulWidget {
@override
State<MapSample> createState() => MapSampleState();
}
class MapSampleState extends State<MapSample> {
Completer<GoogleMapController> _mapController = Completer();
final CameraPosition _initialCamera = CameraPosition(
target: LatLng(-20.3000,-40.2990),zoom: 14.0000,);
var maptype = MapType.normal;
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomPadding: false,body: Stack(
children: <Widget>[
GoogleMap(
mapType: maptype,initialCameraPosition: _initialCamera,onMapCreated: (GoogleMapController controller) {
_mapController.complete(controller);
},),],floatingActionButton: FloatingActionButton(
backgroundColor: Colors.white,foregroundColor: Colors.black,child: const Icon(Icons.my_location),onPressed: () {
setState(() {
this.maptype=MapType.satellite;
});
},);
}
}
,
-
创建一个变量:
MapType _currentMapType = MapType.normal;
-
在您的 Google 地图小部件中,将地图类型链接到您的变量:
googleMap = new GoogleMap( mapType: _currentMapType,//etc
-
创建一个用于交换地图类型的浮动按钮小部件:
floatingActionButton: FloatingActionButton( child: Icon(Icons.layers),onPressed: _toggleMapType,heroTag: null,
-
创建将切换地图类型的 onPressed 方法:
void _toggleMapType(){ setState(() { _currentMapType = (_currentMapType == MapType.normal) ? MapType.satellite : MapType.normal; }); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。