我有一个疑问,我使用ReactJS来分离模块,我有一个名为InitialMap的类,我将其导出到app.js:
import React from 'react';
import loadGoogleMapsAPI from 'load-google-maps-API';
const MAP_STYLES = {
height: '450px',
width: '100%'
}
const OPTIONS = {
center: {
lat: 41.850033,
lng: -87.6500523
},
zoom: 13,
}
const API_CONFIG = {
key:'My_Key xxxxxxx',
language: 'en'
}
export default class InitialMap extends React.Component{
componentWillUnmount() {
const allScripts = document.getElementsByTagName( 'script' );
[].filter.call(
allScripts,
( scpt ) => scpt.src.indexOf( 'My_Key xxxxxxx' ) >= 0
)[ 0 ].remove();
window.google = {};
}
componentDidMount() {
loadGoogleMapsAPI( API_CONFIG ).then( googleMaps => {
new googleMaps.Map( this.refs.map, OPTIONS );
}).catch( err => {
console.warning( 'Something went wrong loading the map', err );
});
}
render() {
return (
<div id="page-wrapper">
<div id= "page-header">
<div ref="map" style={MAP_STYLES}>
</div>
</div>
</div>
)
}
}
地图显示在屏幕上,但我需要放置标记!
问题在于我不知道如何使用Fusion Tables图层来使用标记,例如由Google显示红点!
仅使用脚本文件+ index.html <div id="map"><div>
中的id它正在运行,但我需要将其用于特定的React模块,并在app.js文件中调用它。
在Google的文档中就是这样的一个例子:
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 41.850033, lng: -87.6500523},
zoom: 11
});
var layer = new google.maps.FusionTablesLayer({
query: {
select: '\'Geocodable address\'',
from: '1mZ53Z70NsChnBMm-qEYmSDOvLXgrreLTkQUvvg'
}
});
layer.setMap(map);
}
在我的代码中(我需要放置这个var层!!!)
如果有人可以提供帮助,我会很感激! PS:我是React JS的新手!
答案 0 :(得分:0)
如果您在页面上加载API,它应该以完全相同的方式工作,只需在创建时将您的地图实例保存在您的课程中,然后您就可以在其他调用中使用它。
loadGoogleMapsAPI( API_CONFIG ).then( googleMaps => {
this.map = new googleMaps.Map( this.refs.map, OPTIONS );
var layer = new google.maps.FusionTablesLayer({
query: {
select: '\'Geocodable address\'',
from: '1mZ53Z70NsChnBMm-qEYmSDOvLXgrreLTkQUvvg'
}
});
layer.setMap(this.map);
}).catch( err => {
console.warning( 'Something went wrong loading the map', err );
});