【发布时间】:2015-11-30 01:56:10
【问题描述】:
我想让谷歌地图使用 reactjs 全屏显示在浏览器中。
我的 CSS:
html, body, #map_canvas { height: 100%; margin: 0; padding: 0; width:100%; height:100%;}
我的组件定义如下:
class GMap extends React.Component {
render() {
return (<div className="GMap">
<div ref="map_canvas" id="map_canvas">
</div>
</div>)
}
componentDidMount() {
var mapOptions = {
center: { lat: -34.397, lng: 150.644},
zoom: 8
};
var map_canvas = ReactDOM.findDOMNode(this.refs.map_canvas);
this.map = new google.maps.Map(map_canvas,
mapOptions);
}
}
我的问题是什么都没有出现。如果我在 CSS 中指定 width:500px 和 height:500px 或某个任意值,我可以看到它,但如果我不这样做,我什么也看不到。我想在 React 中复制它:
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
html, body, #map_canvas { height: 100%; margin: 0; padding: 0;}
</style>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=API_KEY">
</script>
<script type="text/javascript">
function initialize() {
var mapOptions = {
center: { lat: -34.397, lng: 150.644},
zoom: 8
};
var map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map_canvas"></div>
</body>
</html>
另外,在这一行:<div ref="map_canvas" id="map_canvas"> 我是不是多余的 ref 和 id?
我正在使用 ES6,但对 JSX 解决方案持开放态度。我不想使用任何现有的“react-google-map-library”,因为我只想使用现有的库。
【问题讨论】:
标签: google-maps-api-3 reactjs ecmascript-6 react-jsx