问题
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
class NewMap extends StatefulWidget {
@override
_NewMapState createState() => _NewMapState();
}
class _NewMapState extends State<NewMap> {
GoogleMapController _controller;
Position position;
Widget _child;
Map<MarkerId, Marker> markers = <MarkerId, Marker>{};
BitmapDescriptor pinLocationIcon;
@override
void initState() {
_child = SpinKitRipple(
itemBuilder: (BuildContext context, int index) {
return DecoratedBox(
decoration: BoxDecoration(
color: index.isEven ? Colors.grey : Color(0xffffb838),
),
);
},
);
getCurrentLocation();
populateClients();
setCustomMapPin();
super.initState();
}
void getCurrentLocation() async {
Position res = await getCurrentPosition();
setState(() {
position = res;
_child = mapWidget();
});
}
populateClients() {
FirebaseFirestore.instance.collection('map').get().then((docs) {
if (docs.docs.isNotEmpty) {
for (int i = 0; i < docs.docs.length; ++i) {
initMarker(docs.docs[i].data(), docs.docs[i].id);
}
}
});
}
void initMarker(tomb, tombId) {
var markerIdVal = tombId;
final MarkerId markerId = MarkerId(markerIdVal);
final Marker marker = Marker(
markerId: markerId,
position: LatLng(tomb['location'].latitude, tomb['location'].longitude),
icon: pinLocationIcon,
);
setState(() {
markers[markerId] = marker;
});
}
void setCustomMapPin() async {
pinLocationIcon = await BitmapDescriptor.fromAssetImage(
ImageConfiguration(devicePixelRatio: 2.5), 'assets/images/pin.png');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
iconTheme: IconThemeData(color: Color(0xffffb838)),
centerTitle: true,
backgroundColor: Colors.white,
),
body: _child,
);
}
Widget mapWidget() {
return Stack(
children: <Widget>[
GoogleMap(
initialCameraPosition: CameraPosition(
target: LatLng(position.latitude, position.longitude),
zoom: 10,
),
markers: Set<Marker>.of(markers.values),
onMapCreated: (GoogleMapController controller) {
_controller = controller;
},
compassEnabled: true,
myLocationEnabled: true,
),
SizedBox(
height: 26,
),
],
);
}
}
This is my code when i try to print on the console the lat long values are printed so that the values are read from the firestore. The map is properly displaying the current location is also being displayed. As i understand the markers are been created as i can get the lat long printed to the console But the markers are not displaying on the map.
How can i solve this issue
回答1:
The trick is with the IDE, thanks to Muthu Thavamani I was able to identify that there are no bugs in the code.
It happens due to the built of of the application, after removing it the issue is being solved
Try
flutter clean
command in the IDE terminal
来源:https://stackoverflow.com/questions/66032598/flutter-map-markers-not-displaying