是的,谷歌地图API已经发生了变化,标记API现在是基于小部件而不是控制器。
来自
CHANGELOG.md。
“重大变化。将标记API更改为基于小部件,它原来是基于控制器的。还更改了示例应用程序以解决同样的问题。”
我从
github应用程序示例中复制了一些代码片段,我认为这对您很重要。
Map<MarkerId, Marker> markers = <MarkerId, Marker>{};
void _add() {
var markerIdVal = MyWayToGenerateId();
final MarkerId markerId = MarkerId(markerIdVal);
final Marker marker = Marker(
markerId: markerId,
position: LatLng(
center.latitude + sin(_markerIdCounter * pi / 6.0) / 20.0,
center.longitude + cos(_markerIdCounter * pi / 6.0) / 20.0,
),
infoWindow: InfoWindow(title: markerIdVal, snippet: '*'),
onTap: () {
_onMarkerTapped(markerId);
},
);
setState(() {
markers[markerId] = marker;
});
}
GoogleMap(
onMapCreated: _onMapCreated,
initialCameraPosition: const CameraPosition(
target: LatLng(-33.852, 151.211),
zoom: 11.0,
),
markers: Set<Marker>.of(markers.values),
)
我建议你在这里查看示例应用here。已更新到新API。