react-google-maps水平对齐MarkerWithLabel

时间:2018-11-29 15:43:41

标签: reactjs google-maps-api-3 google-maps-markers marker react-google-maps

我要创建一个上面带有标签的标记,然后再进行创建,因此我可以单击该标记,然后打开信息框。我有:

<MarkerWithLabel labelAnchor={{x: 0, y: 25}} icon={marker_icons[post.type]} key={post.id} position={{lat: post.location.lat, lng: post.location.lon}}>
    <div style={{fontSize: 14}}>{post.prefix + " " + post.name}</div>
</MarkerWithLabel>

当前看起来像左边的标签,但是我想使标签看起来像右边的标签,我该怎么做?

enter image description here

2 个答案:

答案 0 :(得分:1)

对于使用@react-google-maps/api 而不是
react-google-maps 模块的任何人

是的,我认为它们是不同的 npm 包 o_O

无论如何 < Marker/> 组件 有这个道具
这是我怎么做的

<Marker
label={"Label onTop? pls"}

icon={{
url: "some_img_link",
labelOrigin: new maps.Point(25, -10),
}}

position={{
lat: 26.259,
lng: -80.27,
}}
/>

如果你像我一样是个菜鸟;/你想知道我是怎么知道 labelOrigin 的..这些花哨的库......我希望他们使用谷歌的 api

这是那个东西的链接

https://developers.google.com/maps/documentation/javascript/reference/marker#Icon.labelOrigin

祝你好运

答案 1 :(得分:0)

align 标签,可以考虑以下选项:

  • 指定标签容器(divwidth并通过text-align属性将center设置为labelStyle
  • 根据标签容器的宽度设置labelAnchor属性

以下示例在标签上方显示标签,标签内容垂直居中对齐

const Map = (props) => {

    const labelSize = { width: 220};
    const labelPadding = 8;

    return (
      <GoogleMap 
        defaultZoom={props.zoom}
        defaultCenter={props.center}
      >
        {props.places.map(place => {
          return (
            <MarkerWithLabel
              labelStyle={{ textAlign: "center", width:labelSize.width + 'px', backgroundColor: "#7fffd4", fontSize: "14px", padding:  labelPadding + "px"}}
              labelAnchor={{ x: (labelSize.width/2) + labelPadding , y: 80 }}
              key={place.id}
              position={{ lat: place.lat, lng: place.lng }}>
              <span>{place.name}</span>
            </MarkerWithLabel>
          );
        })}
      </GoogleMap>
    );
}

Demo