gpt4 book ai didi

google-maps - 动态添加标记以 flutter 谷歌地图

转载 作者:IT老高 更新时间:2023-10-28 12:46:34 25 4
gpt4 key购买 nike

我正在使用 Flutter 制作一个使用 map 的移动应用程序。我们决定使用谷歌地图,我们使用的 flutter 插件是:

google_maps_flutter: ^0.5.7

我了解向 map 添加标记的工作方式如下:

Map<MarkerId, Marker> markers = <MarkerId, Marker>{};
Marker _marker = new Marker(
icon: BitmapDescriptor.defaultMarker,
markerId: _markerId,
position: LatLng(34.024441,-5.0310968),
infoWindow: InfoWindow(title: "userMarker", snippet: '*'),
);
GoogleMap _map;

@override
void initState(
markers[_markerId] = _marker;
_map = new GoogleMap(
/* other properties irrelevant to this prob */
markers: Set<Marker>.of(_markers.values),
);
);

上面的代码片段确实有效,我可以在 map 上看到标记。但是修改标记或尝试添加另一个标记(如下面的片段)不起作用。

FloatingActionButton(
onPressed: () {
setState(() {
_marker = new Marker(
icon: BitmapDescriptor.defaultMarker,
markerId: _markerId,
position: LatLng(currentLocation.latitude, currentLocation.longitude),
infoWindow: InfoWindow(title: "userMarker", snippet: '*'),
onTap: () {
debugPrint("Marker Tapped");
},
);
markers[_markerId] = _marker; // What I do here is modify the only marker in the Map.
});
markers.forEach((id,marker) { // This is used to see if the marker properties did change, and they did.
debugPrint("MarkerId: $id");
debugPrint("Marker: [${marker.position.latitude},${marker.position.longitude}]");
});
});
)

我的意图是使用另一个插件 (geoLocator) 来获取用户的位置数据并更改我拥有的唯一标记,以便它可以跟踪他的 Action 。 debugPrint 显示数据确实在发生变化,但我在 map 中看不到任何变化(我更改的初始标记使用的位置与我测试时使用的位置不同)。

最佳答案

如果你没有特别的理由使用 Map 数据结构,这就是我过去所做的。

我的 State

中有 MarkerSet
Set<Marker> markers = Set();

把它交给 map 小部件。标记:标记

GoogleMap(
onMapCreated: _onMapCreated,
myLocationEnabled: true,
initialCameraPosition:
CameraPosition(target: LatLng(0.0, 0.0)),
markers: markers,
)

然后在 setState 方法中将我正在使用搜索结果构建并且您将使用用户位置构建的标记添加到 Set of Marker。

// Create a new marker
Marker resultMarker = Marker(
markerId: MarkerId(responseResult.name),
infoWindow: InfoWindow(
title: "${responseResult.name}",
snippet: "${responseResult.types?.first}"),
position: LatLng(responseResult.geometry.location.lat,
responseResult.geometry.location.lng),
);
// Add it to Set
markers.add(resultMarker);

编辑:我刚刚注意到您在 initState 中使用了 GoogleMap 小部件,您需要将其移至 build 方法如果您想每次都使用新的状态值重建它。

关于google-maps - 动态添加标记以 flutter 谷歌地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55987785/

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