Javascript 反应+;Google Maps JS API,从状态动态呈现标记
在React中,我试图用标记填充我的google地图,其中每个标记由我所在州的一组对象确定。现在,如果我有一个由22个对象组成的reducedSites数组,那么其中只有1-3个将作为标记渲染。无论有多少对象处于状态,情况似乎都是如此 更新 将Javascript 反应+;Google Maps JS API,从状态动态呈现标记,javascript,google-maps,reactjs,google-maps-api-3,Javascript,Google Maps,Reactjs,Google Maps Api 3,在React中,我试图用标记填充我的google地图,其中每个标记由我所在州的一组对象确定。现在,如果我有一个由22个对象组成的reducedSites数组,那么其中只有1-3个将作为标记渲染。无论有多少对象处于状态,情况似乎都是如此 更新 将组件作为Map的子组件,并使用数组设置position属性 <Map google={this.props.google} style={{width: '100%', height: '100%', position: 'rel
组件作为Map的子组件,并使用数组设置position属性
<Map google={this.props.google}
style={{width: '100%', height: '100%', position: 'relative'}}
className={'map'}
zoom={14}>
<Marker
name={'SOMA'}
position={{lat: this.state.markersArray[0].lat, lng: this.state.markersArray[0].lng}} />
</Marker>
</Map>
确保在更改positions数组的值时调用setState(),以便React在每次更改值时自动呈现DOM。这就是动态渲染的方式
将
组件作为Map的子组件,并使用数组设置position属性
<Map google={this.props.google}
style={{width: '100%', height: '100%', position: 'relative'}}
className={'map'}
zoom={14}>
<Marker
name={'SOMA'}
position={{lat: this.state.markersArray[0].lat, lng: this.state.markersArray[0].lng}} />
</Marker>
</Map>
确保在更改positions数组的值时调用setState(),以便React在每次更改值时自动呈现DOM。这就是动态渲染的方式
将
parseInt
更改为parseFloat将parseInt
更改为parseFloat
我不确定如何集成,因为我没有使用这个react组件,只是使用原始的谷歌api。它可能会让你的生活更轻松,只需npm安装——保存google maps react,然后在文件顶部从“google maps react”导入地图。但您现有的代码到底有什么问题?它没有呈现任何标记。如果我调用setMap:map
我会在使用forEach遍历标记时得到一个错误,该标记读取InvalidValueError:setMap:不是map的实例;而不是StreetViewPanorama的实例
。但是,如果我删除forEach迭代,没有错误,但仍然没有渲染标记。我更愿意学习如何在没有预先配置组件的情况下集成googlemaps。哦!这是因为您执行setMap(map),map引用元素。我想你指的是setMap(this.map)。还有你返回google.maps.Marker({setMap:this.map})的地方,我不确定我将如何集成它,因为我没有使用这个react组件,只是使用原始的google api。它可能会让你的生活更轻松,只需npm安装——保存google maps react,然后在文件顶部从“google maps react”导入地图。但您现有的代码到底有什么问题?它没有呈现任何标记。如果我调用setMap:map
我会在使用forEach遍历标记时得到一个错误,该标记读取InvalidValueError:setMap:不是map的实例;而不是StreetViewPanorama的实例
。但是,如果我删除forEach迭代,没有错误,但仍然没有渲染标记。我更愿意学习如何在没有预先配置组件的情况下集成googlemaps。哦!这是因为您执行setMap(map),map引用元素。我想你指的是setMap(this.map)。以及返回google.maps.Marker({setMap:this.map})的位置,返回new google.maps.Marker
的位置,MarkerOptions属性应该是map
而不是setMap
即map:map
。这将在地图上绘制标记。那么marker.setMap(map)
应该在你的代码中做什么呢?我就是这么做的,尽管状态包含超过20个标记,但仍然不会显示超过1-3个标记。你返回的地方是new google.maps.marker
MarkerOptions属性应该是map
而不是setMap
即map:map
。这将在地图上绘制标记。那么,marker.setMap(map)
应该在代码中做什么呢?我只是这么做了,尽管状态包含20个以上的标记,但仍然不会显示超过1-3个标记。