【发布时间】:2020-09-22 17:39:27
【问题描述】:
我想知道如何将自定义标记与谷歌地图绘图控件一起使用。我想这样做是因为我需要在用户点击地图时放置一个标记并让它打开一个信息窗口(点击时)并在那里有一些自定义操作(按钮等)。
我为此使用 react 和 @react-google-maps/api,但这可能不是重点,因为它只是 Google 提供的 Maps Javascript API 的封装。
从docs 可以将google.maps.MarkerOptions 提供给google.maps.drawing.DrawingManagerOptions。不幸的是,没有提供自定义Marker 来呈现的选项。
我尝试使用google.maps.drawing.DrawingManager 公开的markercomplete() 回调,因为它具有新创建的Marker 作为参数,然后执行以下操作:
const handleNewMarker = (marker) => {
marker.addListener('click', function() {
setActiveMarker(marker);
});
}
我的地图组件将是这样的:
<GoogleMap
zoom={18}
center={latLng}
>
{activeMarker && <CustomInfoWindow anchor={activeMarker} />}
<DrawingManager
options={{
markerOptions: {
clickable: true,
draggable: true,
},
}}
onMarkerComplete={handleNewMarker}
/>
</GoogleMap>
虽然这行得通,但对于生产来说根本不可行,由于某种原因,InfoWindow 需要太多时间才能出现在屏幕上,这种方法可能会导致内存泄漏,我不知道为什么。
我可能在这里遗漏了一些东西,但在我的研究中,我没有发现一个人试图使用绘图工具创建自定义标记,只是自己自定义标记,这相对容易做到。我的理想情况是,因为我使用的是 React,所以创建一个 CustomMarker 组件,里面有一个 CustomInfoWindow,然后告诉绘图控件,“嘿,只要用户尝试使用这个标记,就可以使用它用你的绘图工具画一个新的标记”。
谢谢。
编辑
这是我的意思的屏幕截图,屏幕截图中的标记是使用“新标记”绘图控件放置在那里的,我需要“新标记”绘图控件来放置我定义的自定义标记。
【问题讨论】:
标签: javascript reactjs google-maps-api-3 react-google-maps