首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义标记作为React组件-google-maps api

自定义标记作为React组件-google-maps api
EN

Stack Overflow用户
提问于 2021-07-13 14:47:16
回答 1查看 2.9K关注 0票数 1

我们正在从google-map-react转换为react-google-maps-api,这意味着更多的本地Google体验。

在进行更改之前,我们能够将自定义标记作为一个反应性组件加载,如下所示:

代码语言:javascript
复制
<GoogleMaps>
  <UserPinContainer lat={userLocation.lat} lng={userLocation.lng}>
    <Tidal.Icon type="UserLocation" text="User" />
  </UserPinContainer>
</GoogleMaps>

从他们最初的lib google-map-react文档中可以看出:

与默认的Google标记、气球和其他地图组件不同,您可以在地图上呈现出凉爽的动画反应组件。

虽然这很好,但它证明了这个库脱离了本地API.

然而,使用新的标记反应API -google-maps api,React组件是不可能的。他们只期望string | google.maps.Icon | google.maps.Symbol;类型,例如:

代码语言:javascript
复制
<Marker
    icon={{
        path: google.maps.SymbolPath.CIRCLE,
        scale: 7,
    }}
    position={centers[0]}
/>

代码语言:javascript
复制
<Marker position={{ lat: userLocation.lat, lng: userLocation.lng }}>
    <Tidal.Icon img type="UserLocation" text="User" />
</Marker>

我想我可以创建一个真正的定制标记,比如:

代码语言:javascript
复制
const newMarker = new window.google.maps.Marker(MyComponent)

但没有这样的运气。

解决这个问题的好办法是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-01-06 15:49:57

也许现在回答有点晚了,但是如果有帮助的话,您可以使用OverlayView组件而不是标记,它的工作原理实际上是一样的,您必须作为子级传递一个react组件。

代码语言:javascript
复制
  <GoogleMap
    id="overlay-view-example"
    mapContainerStyle={mapContainerStyle}
    zoom={11}
    center={center}
  >
    <OverlayView
      position={center}
      mapPaneName={OverlayView.OVERLAY_MOUSE_TARGET}
    >
      <div style={divStyle}>
        <h1>OverlayView</h1>

        <button
          onClick={onClick}
          type='button'
        >
          Click me
        </button>
      </div>
    </OverlayView>
  </GoogleMap>

这是从doc:https://react-google-maps-api-docs.netlify.app/#overlayview中获取的一个示例

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68364660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档