gpt4 book ai didi

flutter - 标记在热重载后显示,但在我按下按钮时不显示。 ( flutter - 谷歌地图)

转载 作者:行者123 更新时间:2023-12-05 05:05:53 24 4
gpt4 key购买 nike

当我尝试在我的谷歌地图中放置一个标记时,它不会显示,直到我点击热重载。我是不是在某处遗漏了 setState()

我的问题是我不知道在哪里。这个包的文档真的很困惑,因为谷歌地图 Controller 从一开始就已经更新并发生了巨大的变化。许多指南根本无济于事,因为代码已更改。

import 'package:geolocator/geolocator.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:flutter/material.dart';
import 'package:mobile_app_dev/UI/base_widget.dart';
import 'package:mobile_app_dev/UI/widgets.dart';

import '../main.dart';

class myMapScreen extends StatefulWidget {
@override
myMapState createState() => myMapState();

}

class myMapState extends State<myMapScreen> {

PageController _pageController;
GoogleMapController mapController;
LatLng center = const LatLng(37.352727, -122.034227);
// Location location = new Location();
Position currentLocation;

final Set<Marker> _markers = {};

void _getLocation() async {
var currentLocation = await Geolocator()
.getCurrentPosition(desiredAccuracy: LocationAccuracy.best);

setState(() {
_markers.clear();
final marker = Marker(
markerId: MarkerId("curr_loc"),
position: LatLng(currentLocation.latitude, currentLocation.longitude),
infoWindow: InfoWindow(title: 'Your Location'),
icon: BitmapDescriptor.defaultMarker
);
_markers.add(marker);
});

currentLocation = currentLocation;
}


void _onMapCreated(GoogleMapController controller) {
mapController = controller;
}

@override
void initState() {
_markers.clear();
super.initState();
_pageController = PageController();
_getLocation();
}

@override
void dispose() {
_pageController.dispose();
super.dispose();
}

@override
Widget build(BuildContext context) {
return BaseWidget(builder: (context, sizingInformation) {
return Scaffold(
backgroundColor: MyApp.backgroundColor,
appBar: AppBar(
automaticallyImplyLeading: true,
backgroundColor: MyApp.appBarColor,
title: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[

Text(
'Map View',
style: TextStyle(
color: MyApp.whiteNoChangeColor,
fontSize: 25.0,
fontWeight: FontWeight.bold
),
),
],
),
centerTitle: true,
actions: <Widget>[
Padding(
padding: EdgeInsets.only(right: 20.0),
child: GestureDetector(
onTap: () async {
_getLocation();

},
child: Icon(
Icons.search,
size: 26.0,
),
)
)
],
),
body: Container(
height: sizingInformation.myScreenSize.height,
width: sizingInformation.myScreenSize.width,
child: Stack(
children: <Widget>[
GoogleMap(
onMapCreated: _onMapCreated,
initialCameraPosition: CameraPosition(
target: center,
zoom: 15.0,
),
myLocationEnabled: true,
mapType: MapType.hybrid,
compassEnabled: true,
markers: _markers,
),
Positioned(
child: FlatButton(
color: Colors.green,
child: Text("button"),
onPressed: (){
final marker = Marker(
markerId: MarkerId("curr_loc"),
position: center,
infoWindow: InfoWindow(title: 'Your Location'),
icon: BitmapDescriptor.defaultMarker
);
_markers.add(marker);
// _getLocation();
},
),
)


],
),
),
);
},
);
}
}

最佳答案

只需创建一个标记列表,首先您必须清除列表,然后在该列表上添加标记

  var markers = Set<Marker>();


addMarker(double lat, double lng, String id) {
var marker = Marker(
markerId: MarkerId(id),
position: LatLng(
lat,
lng,
),
infoWindow: InfoWindow(title: locationName),
onTap: () {},
);

markers.clear();
markers.add(marker);
}

关于flutter - 标记在热重载后显示,但在我按下按钮时不显示。 ( flutter - 谷歌地图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60274004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com