未为 class 'GoogleMapController' 定义方法 'removeMarker' 和 'addMarker'
The method 'removeMarker' and 'addMarker' isn't defined for the class 'GoogleMapController'
我正在添加 removeMarker 和 addMarker 但它显示了这个 -
方法 'addMarker' 没有为 class 'GoogleMapController' 定义。
尝试将名称更正为现有方法的名称,或定义一个名为 'addMarker'.dart(undefined_method)
的方法
未为 class“_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,
),
),
],
),
);
}
}
未为 class 'GoogleMapController' 定义方法 'addMarker'。
尝试将名称更正为现有方法的名称,或定义一个名为 'addMarker'.dart(undefined_method) 的方法
'MarkerOptions' 方法没有为 class '_GoogleMapsDemoState' 定义。
尝试将名称更正为现有方法的名称,或定义一个名为 'MarkerOptions'.dart(undefined_method) 的方法
快速解决...
偷看问题
如果我没记错的话,这篇文章应该能帮到你。
似乎 flutter 团队改变了一些东西,Google 地图 API 现在 Widget-based 并且不再基于控制器。
看看 flutter 的文档和我发布的 link。我认为这应该可以解决您的问题,因为您在错误的一端寻找解决方案。
可能有更好的方法,但以下方法对我有用 onCameraMove
事件以获得位置。如果有人有更清洁的方法请告诉我。
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;
});
}
}
我正在添加 removeMarker 和 addMarker 但它显示了这个 - 方法 'addMarker' 没有为 class 'GoogleMapController' 定义。 尝试将名称更正为现有方法的名称,或定义一个名为 'addMarker'.dart(undefined_method)
的方法未为 class“_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,
),
),
],
),
);
}
}
未为 class 'GoogleMapController' 定义方法 'addMarker'。 尝试将名称更正为现有方法的名称,或定义一个名为 'addMarker'.dart(undefined_method) 的方法 'MarkerOptions' 方法没有为 class '_GoogleMapsDemoState' 定义。 尝试将名称更正为现有方法的名称,或定义一个名为 'MarkerOptions'.dart(undefined_method) 的方法 快速解决... 偷看问题
如果我没记错的话,这篇文章应该能帮到你。
似乎 flutter 团队改变了一些东西,Google 地图 API 现在 Widget-based 并且不再基于控制器。
看看 flutter 的文档和我发布的 link。我认为这应该可以解决您的问题,因为您在错误的一端寻找解决方案。
可能有更好的方法,但以下方法对我有用 onCameraMove
事件以获得位置。如果有人有更清洁的方法请告诉我。
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;
});
}
}