【发布时间】:2021-04-10 23:38:59
【问题描述】:
我正在尝试开发一种用户体验,为用户提供旅行地点列表,并在选择其中一个地点时,我希望它能够
- 向地图添加标记
- 显示信息窗口
- 提供导航到 位置。
我能够使用from this PR 的信息(似乎没有官方文档)从这里开始:
到这里:
但是,显示标记信息仍然不会使给定标记“激活”。当我选择标记时,插件的功能实际上会在右下角显示导航到给定位置的选项,如下所示:
我希望在列表底部选择场地,以便一键自动在第三张图像中显示所有三个标准。也就是说,再一次:
- 位置标记
- 信息窗口
- 导航到该位置的选项。
现在,用户必须点击底部列表中的条目,然后非常不直观地点击地图上的标记才能显示导航选项。 p>
我将如何以编程方式启动当用户从列表中选择项目时“点击”标记时发生的“点击”事件?
这是我当前用于更改视口、添加标记和显示信息窗口的代码:
Future<void> goSomewhere(id, name, distance, address, lat, lng) async {
final GoogleMapController controller = await _controller.future;
controller.animateCamera(CameraUpdate.newCameraPosition(
CameraPosition(target: LatLng(lat, lng), zoom: 14.0)));
setState(() {
_markers.add(Marker(
markerId: MarkerId(id),
position: LatLng(lat, lng),
infoWindow: InfoWindow(
title: name,
snippet: address,
),
onTap: () {
//_pageController.jumpToPage(i);
},
icon: BitmapDescriptor.defaultMarker,
));
print(MarkerId(id));
controller.showMarkerInfoWindow(MarkerId(id));
});
}
现在,我的解决方案确实添加了标记并显示了信息窗口,但出现了简短的为用户提供导航到位置的选项除非用户单击标记。在目前的状态下,我已经构建了一些可以提供非常次优的用户体验的东西。
我尝试过像highlighting the marker 这样的替代解决方案,但它并没有我想要的功能。我不明白在“选择”点击标记的插件中发生了什么事件,并且我发现“以编程方式”选择标记的所有尝试都会突出显示它。只需提供一些关于在单击标记时查找正在启动的事件的位置的指示会很有帮助。
【问题讨论】:
-
我真的不相信您可以以编程方式模拟标记的“点击” - 它只会响应用户的物理“点击”。而且,你能以编程方式让小方向/打开地图图标弹出吗?我也不相信你能做到这一点(至少,地图控制器或标记对象上肯定没有可用的方法来做到这一点)——我想这只是地图功能的固有部分。也许您最好在列表顶部(地图下方)有一个“在地图中打开”按钮,用户可以点击该按钮(如果他们实际上没有突出显示标记)
-
有几个不同的“地图启动器”颤振插件(我已经成功使用了这个pub.dev/packages/maps_launcher)。我和你在同一条船上,我想在 Flutter 中尝试和实现一些不同的事情——非常接近最终目标,然后就是你无法克服的最后一个障碍...... ...无论如何尝试在颤振社区/github中发布问题 - 人们总是非常敏感和乐于助人 - 但我能找到的所有问题都像你问的那样,都说它无法完成
-
非常感谢您的反馈!老实说,我非常气馁,因为这篇文章被严重否决了。我不知道还有什么方法可以问我在寻找什么,或者如何完成我想做的事情。我最终重新设计了我的用户体验 - 我做到了完全如你所描述的那样。如果您有兴趣,我计划用我的答案来回答这个问题!我的整个颤振之旅正是你所描述的,所以很高兴听到其他人也能感同身受。我也会查看 Flutter 社区/github - 谢谢!
-
这很酷。抱歉我帮不上忙(但很高兴我能帮上一点忙!):)
标签: flutter google-maps dart google-maps-flutter