谷歌地图反应填充多个标记

时间:2019-11-09 03:06:12

标签: javascript reactjs google-map-react

我目前正在尝试通过使用地图功能用标记填充我的Google地图。我似乎没什么可填充的。是否存在我不了解的限制或缺少某些东西?我尝试用更简单的方法替换FontAwesomeIcon,但无法渲染。如果您在GoogleMapReact组件中多次复制粘贴FontAwesomeIcon,它似乎可以工作,但我似乎无法使其与地图一起工作。任何建议将不胜感激。

render() {
        const {center, zoom} = this.props;

        const listingPins = this.props.testList.map((listing, index) => {
            console.log(listing);
            if (listing.coordinates.lat === null || listing.coordinates.lng === null){
                return null
            } else{
                return <FontAwesomeIcon icon={faHome} size={"2x"} key={index} listing={listing} lat={listing.coordinates.lat} lng={listing.coordinates.lat} />
            }
        });
        console.log("TEST");
        console.log(listingPins);

        return (
            <div style={{ height: '100vh', width: '100%' }}>
                <GoogleMapReact
                    bootstrapURLKeys={{ key: "key" }}
                    center={center}
                    zoom={zoom}
                >
                    {listingPins}
                </GoogleMapReact>
            </div>
        );
    }

2 个答案:

答案 0 :(得分:0)

要在地图上显示多个标记,您必须将标记数组作为子代传递到GoogleMapReact组件并在其上进行映射。

return (
        <div style={{ height: '100vh', width: '100%' }}>
          <GoogleMapReact>
             {props.listingPins.map(pin => (
               <Marker
                  position={{ lat: pin.latitude, lng: pin.longitude }}
                  key={pin.id}
               />
             ))}
          </GoogleMapReact>
        </div>
     );

答案 1 :(得分:0)

const createMarker = ({ map, maps }: Mapprops) => {
    const markers = props.listingPins.map(data => {
      return new maps.Marker({ position: data });
    });
  };
<GoogleMapReact
   bootstrapURLKeys={{ key: "key" }}
   center={center}
   zoom={zoom}
   onGoogleApiLoaded={createMarker}
   >
</GoogleMapReact>

这将为您创建标记。

您需要确保数据对象采用以下格式:

data: {
    lat: number
    lng: number
    }