我正在添加removeMarker和addMarker,但它显示了这一点- 未为类“ GoogleMapController”定义方法“ addMarker”。 尝试将名称更正为现有方法的名称,或定义一个名为“ addMarker”的方法。dart(undefined_method)
未为类“ _GoogleMapsDemoState”定义方法“ MarkerOptions”。 尝试将名称更正为现有方法的名称,或定义一个名为“ MarkerOptions”的方法。dart(undefined_method) 快速解决... 偷看问题
import 'package:location/location.dart';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
// import 'package:map_view/map_view.dart';
class GoogleMapsDemo extends StatefulWidget {
@override
_GoogleMapsDemoState createState() => _GoogleMapsDemoState();
}
class _GoogleMapsDemoState extends State<GoogleMapsDemo> {
GoogleMapController mapController;
Location location = Location();
Marker marker;
@override
void initState() {
super.initState();
location.onLocationChanged().listen((location) async {
if (marker != null) {
mapController.removeMarker(marker);
}
marker = await mapController?.addMarker(MarkerOptions(
position: LatLng(location["latitude"], location["longitude"]),
));
mapController?.moveCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: LatLng(
location["latitude"],
location["longitude"],
),
zoom: 20.0,
),
),
);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
Container(
height: MediaQuery.of(context).size.height,
width: MediaQuery.of(context).size.width,
child: GoogleMap(
onMapCreated: (GoogleMapController controller) {
mapController = controller;
},
initialCameraPosition: CameraPosition(
target: const LatLng(45.521563, -122.677433),
zoom: 11.0,
),
myLocationButtonEnabled: true,
myLocationEnabled: true,
),
),
],
),
);
}
}
未为类“ GoogleMapController”定义方法“ addMarker”。 尝试将名称更正为现有方法的名称,或定义一个名为“ addMarker”的方法。dart(undefined_method) 没有为“ _GoogleMapsDemoState”类定义“ MarkerOptions”方法。 尝试将名称更正为现有方法的名称,或定义一个名为“ MarkerOptions”的方法。dart(undefined_method) 快速解决... 偷看问题
答案 0 :(得分:1)
如果我没有完全误解,这篇文章应该会对您有所帮助。 https://stackoverflow.com/a/55000503/11620670
似乎扑朔迷离的团队做出了一些改变,并且Google Maps API现在基于Widget,而不再基于控制器。
看看flutter的文档和我发布的链接。我认为这应该可以解决您的问题,因为您在错误的一端寻求解决方案。
问候
答案 1 :(得分:0)
Puede que haya una major forma pero a mi mefuncionócon el evento onCameraMove
para obtener laposicióndel mapa。 si alguien tiene una forma mas limpia me gustaria saberlo tambien。
class _GoogleMapsDemoState extends State<GoogleMapsDemo> {
// ...
LatLng currentLatLng = LatLng(0, 0); //Your inital location -> you need get real location xD
Widget build(BuildContext context) {
return GoogleMap(
// ...
onCameraMove: (position) {
print(position);
currentLatLng = LatLng(position.target.latitude, position.target.longitude);
},
);
}
void _add() {
// ...
final Marker marker = Marker(
markerId: markerId,
position: currentLatLng,
infoWindow: InfoWindow(title: markerIdVal, snippet: '*'),
onTap: () {
// ...
},
onDragEnd: (LatLng position) {
//...
},
);
setState(() {
markers[markerId] = marker;
});
}
}