Javascript 如何获取谷歌地图中的所有标记

Javascript 如何获取谷歌地图中的所有标记,javascript,reactjs,google-maps,google-maps-react,Javascript,Reactjs,Google Maps,Google Maps React,我的项目中有googlemaps react,但我不知道如何从地图中获取所有标记 import React, { Component } from "react"; import { Map, InfoWindow, Marker, GoogleApiWrapper } from "google-maps-react"; import "../Body/Map.css"; import marker_icon from "../../img/marker_icon.png"; import ho

我的项目中有
googlemaps react
,但我不知道如何从地图中获取所有标记

import React, { Component } from "react";
import { Map, InfoWindow, Marker, GoogleApiWrapper } from "google-maps-react";
import "../Body/Map.css";
import marker_icon from "../../img/marker_icon.png";
import hover_icon from "../../img/hover_icon.png";
import { Grid, Row, Col } from "react-bootstrap";
/*global google*/

export class MapContainer extends Component {
  constructor(props) {
    super(props);

    this.state = {
      showingInfoWindow: false,
      activeMarker: {},
      selectedPlace: {}
    };
  }

  onMarkerClick = (props, marker, e) => {
    this.setState({
      selectedPlace: props,
      activeMarker: marker,
      showingInfoWindow: true
    });
  };

  onMapClicked = props => {
    if (this.state.showingInfoWindow) {
      this.setState({
        showingInfoWindow: false,
        activeMarker: null
      });
    }
  };

  addMarker = (mapProps, map) => {
    var marker = new google.maps.Marker({
      position: {},
      map: map
    });
  };

  render() {
    const google = window.google;
    const data = this.props.data;

    return (
      <div className="map-container">
        <Map
          google={this.props.google}
          className={"map"}
          zoom={1}
          onClick={this.onMapClicked}
          onReady={this.addMarker}
        >
          {data.map(item => (
            <Marker
              key={item.id}
              title={item.name}
              name={item.name}
              position={{ lat: item.lat, lng: item.lng }}
              onClick={this.onMarkerClick}
            />
          ))}
          <InfoWindow
            marker={this.state.activeMarker}
            visible={this.state.showingInfoWindow}
          >
            <div className="info">
              <h1>{this.state.selectedPlace.name}</h1>
            </div>
          </InfoWindow>
        </Map>
      </div>
    );
  }
}

export default GoogleApiWrapper({
  apiKey: "AIzaSyDLgdweTnvhPnUE5yzdxcMeK876cFtMaSk"
})(MapContainer);
import React,{Component}来自“React”;
从“GoogleMaps react”导入{Map,InfoWindow,Marker,GoogleApiWrapper};
导入“./Body/Map.css”;
从“../../img/marker_icon.png”导入标记图标;
从“../../img/hover_icon.png”导入悬停图标;
从“react bootstrap”导入{Grid,Row,Col};
/*全球谷歌*/
导出类MapContainer扩展组件{
建造师(道具){
超级(道具);
此.state={
ShowingInfo窗口:false,
活动标记:{},
所选地点:{}
};
}
onMarkerClick=(道具、记号笔、e)=>{
这是我的国家({
选择地点:道具,
活动标记器:标记器,
showingInfoWindow:真
});
};
onMapClicked=道具=>{
if(此.state.showiningInfo窗口){
这是我的国家({
ShowingInfo窗口:false,
活动标记:空
});
}
};
addMarker=(mapProps,map)=>{
var marker=new google.maps.marker({
位置:{},
地图:地图
});
};
render(){
const google=window.google;
const data=this.props.data;
返回(
{data.map(项=>(
))}
{this.state.selectedPlace.name}
);
}
}
导出默认GoogleApprapper({
apiKey:“AIzaSyDLgdweTnvhPnUE5yzdxcMeK876cFtMaSk”
})(地图容器);

<代码> > p>您可能要访问<代码>谷歌.MAP.Madio对象,如果是,可以考虑使用:

1) 分配
ref
属性以存储对
标记的引用
节点:

<Marker  ref={this.onMarkerMounted}
      key={item.id}
      title={item.name}
      name={item.name}
      position={{ lat: item.lat, lng: item.lng }}
/>  

我也有类似的问题。我想删除所有旧标记并添加一个新标记列表。这是我修复它的代码:

const MyMap = (props) => {

  const [markers, setMarkers] = React.useState([])

  React.useEffect(() => {
    var markerArr = []
    points.map(p => {
      markerArr.push(<Marker position={{lat: p.lat, lng: p.lng}} />)
      }
    )
    setMarkers(markerArr)
  }, [])

  const MarkerUpdater = (day) => {
    var markerArr = []
    points.map(p => {
      markerArr.push(
        <Marker position={{lat: p.lat, lng: p.lng}} />
        )
      }
    )
    setMarkers(markerArr)
  }

  return <Map> {markers} </Map>
}
constmymap=(道具)=>{
常量[markers,setMarkers]=React.useState([])
React.useffect(()=>{
var markerArr=[]
points.map(p=>{
markerArr.push()
}
)
设置标记(markerArr)
}, [])
常数MarkerUpdater=(天)=>{
var markerArr=[]
points.map(p=>{
马克拉尔推(
)
}
)
设置标记(markerArr)
}
返回{markers}
}
注意


你应该在任何你想更新标记的地方调用
markerUpdate

你说的“如何从地图上获取所有标记”是什么意思?你有
this.props.data
数组中的所有标记数据。我需要获得一个标记数组,并将其置于地图组件状态。是的,这就是我要寻找的!非常感谢你!很高兴知道!你可能也想考虑一下;是的,我做到了,没有什么比上帝更需要帮助的了。)
const MyMap = (props) => {

  const [markers, setMarkers] = React.useState([])

  React.useEffect(() => {
    var markerArr = []
    points.map(p => {
      markerArr.push(<Marker position={{lat: p.lat, lng: p.lng}} />)
      }
    )
    setMarkers(markerArr)
  }, [])

  const MarkerUpdater = (day) => {
    var markerArr = []
    points.map(p => {
      markerArr.push(
        <Marker position={{lat: p.lat, lng: p.lng}} />
        )
      }
    )
    setMarkers(markerArr)
  }

  return <Map> {markers} </Map>
}