如何在React.js中编写以下Mapbox地图图层?

时间:2017-11-18 21:58:45

标签: javascript reactjs mapbox mapbox-gl-js mapbox-gl

我正在尝试使用ReactMapboxGl在地图集地图上创建一个多边形图层。我想将以下Mapbox Javascript代码转换为React.js:



map.on('load', function () {

    map.addLayer({
        'id': 'maine',
        'type': 'fill',
        'source': {
            'type': 'geojson',
            'data': {
                'type': 'Feature',
                'geometry': {
                    'type': 'Polygon',
                    'coordinates': [[[-67.13734351262877, 45.137451890638886],
                        [-66.96466, 44.8097],
                        [-68.03252, 44.3252],
                        [-69.06, 43.98],
                        [-70.11617, 43.68405],
                        [-70.64573401557249, 43.090083319667144],
                        [-70.75102474636725, 43.08003225358635],
                        [-70.79761105007827, 43.21973948828747],
                        [-70.98176001655037, 43.36789581966826],
                        [-70.94416541205806, 43.46633942318431],
                        [-71.08482, 45.3052400000002],
                        [-70.6600225491012, 45.46022288673396],
                        [-70.30495378282376, 45.914794623389355],
                        [-70.00014034695016, 46.69317088478567],
                        [-69.23708614772835, 47.44777598732787],
                        [-68.90478084987546, 47.184794623394396],
                        [-68.23430497910454, 47.35462921812177],
                        [-67.79035274928509, 47.066248887716995],
                        [-67.79141211614706, 45.702585354182816],
                        [-67.13734351262877, 45.137451890638886]]]
                }
            }
        },
        'layout': {},
        'paint': {
            'fill-color': '#088',
            'fill-opacity': 0.8
        }
    });
});




我收到以下错误:

 Line 29:  'type' is not defined  no-undef
 Line 30:  'data' is not defined  no-undef

我尝试从react-mapbox-gl导入类型和数据,但它不起作用。我当前的版本看起来像这样:



import ReactMapboxGl, {Layer, Feature } from "react-mapbox-gl";

class MapBoxCustom extends React.Component {
  render() {
    return (
      <Map
        style="mapbox://styles/mapbox/streets-v9"
        center={[-114.090194,51.066226]}
        containerStyle={{
          height: "100vh",
          width: "100vw"
        }}>
        <Layer
          id = 'Polygon'
          type= 'fill'
          source= {
            type = 'geojson',
            data = {
              'type': 'Feature',
              'geometry': {
                'type': 'Polygon',
                'coordinates': [[[-67.13734351262877, 45.137451890638886],
                [-66.96466, 44.8097],
              [-68.03252, 44.3252],
              [-69.06, 43.98],
              [-70.11617, 43.68405],
              [-70.64573401557249, 43.090083319667144],
              [-70.75102474636725, 43.08003225358635],
              [-70.79761105007827, 43.21973948828747],
              [-70.98176001655037, 43.36789581966826],
              [-70.94416541205806, 43.46633942318431],
              [-71.08482, 45.3052400000002],
              [-70.6600225491012, 45.46022288673396],
              [-70.30495378282376, 45.914794623389355],
              [-70.00014034695016, 46.69317088478567],
              [-69.23708614772835, 47.44777598732787],
              [-68.90478084987546, 47.184794623394396],
              [-68.23430497910454, 47.35462921812177],
              [-67.79035274928509, 47.066248887716995],
              [-67.79141211614706, 45.702585354182816],
              [-67.13734351262877, 45.137451890638886]]]
            }
          }
        }
        paint={{ "fill-color": "#81D8D0", "fill-opacity": 0.5 }}/>
      </Map>
    );
  }
}
&#13;
&#13;
&#13;

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

您在源道具中缺少括号,如source: { { yourData } }

           <Layer
              id = 'Polygon'
              type= 'fill'
              source= {{ //missing a bracket here
                type = 'geojson',
                data = {
                  'type': 'Feature',
                  'geometry': {
                    'type': 'Polygon',
                    'coordinates': [[[-67.13734351262877, 45.137451890638886],
                    [-66.96466, 44.8097],
                  [-68.03252, 44.3252],
                  [-69.06, 43.98],
                  [-70.11617, 43.68405],
                  [-70.64573401557249, 43.090083319667144],
                  [-70.75102474636725, 43.08003225358635],
                  [-70.79761105007827, 43.21973948828747],
                  [-70.98176001655037, 43.36789581966826],
                  [-70.94416541205806, 43.46633942318431],
                  [-71.08482, 45.3052400000002],
                  [-70.6600225491012, 45.46022288673396],
                  [-70.30495378282376, 45.914794623389355],
                  [-70.00014034695016, 46.69317088478567],
                  [-69.23708614772835, 47.44777598732787],
                  [-68.90478084987546, 47.184794623394396],
                  [-68.23430497910454, 47.35462921812177],
                  [-67.79035274928509, 47.066248887716995],
                  [-67.79141211614706, 45.702585354182816],
                  [-67.13734351262877, 45.137451890638886]]]
                }
              }
            }} // and here

答案 1 :(得分:0)

您的GeoJSON无效。每个要素都必须包含properties个对象。所以你可以添加:

    data = {
              'type': 'Feature',
              'properties': {},
              'geometry': {

我不确定这是你问题的原因。