【发布时间】:2021-05-26 05:40:13
【问题描述】:
我有一个现有地图,它依赖于在 v3 Google Maps API 中对 Marker 的单个实例使用 setPosition 函数。我没有看到从@react-google-maps/api 导出的Marker 组件调用该函数的明显方法。
我想使用onMouseOver 和onMouseOut 事件来显示一个标记,其中包含用户在实时谷歌地图中鼠标悬停的任何特征的(摘要)信息。现有的 javascript 网站运行良好——它使用loadGeoJson 方法向地图添加大约 3,500 个功能。
文档和示例展示了如何在 render 方法中将 position 属性传递给 Marker 实例,但这仅提供静态标记位置。
在我当前的javascript 代码中,我在处理onMouseOver 事件时执行以下操作:
function mouseInToRegion(e) {
//...
dataMarker.setLabel({'text': 'some informative string'});
dataMarker.setPosition(e.latLng);
dataMarker.setVisible(true);
}
在上述片段中,dataMarker 是对在地图初始化期间(加载时)创建的单个标记实例的引用。
毫不奇怪,onMouseOut 处理程序除了调用 dataMarker.setVisible(false) 之外几乎没有什么作用。
如何使用@react-google-maps/api 完成类似的行为?
【问题讨论】:
-
FWIW,我已经能够使用看似 hack 的东西让它工作。当我渲染包含的 GoogleMap 实例时,我将
center属性作为使用useState钩子创建的状态变量传递(我将初始值作为属性传递给容器)。然后,我使用useRef捕获对底层 API 对象的引用并按上述方式操作它。它似乎工作。不过,如果可以的话,我还是更愿意使用Marker组件。
标签: google-maps react-google-maps