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>
}