微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 React 中使用带有 Mapbox 的本地 GeoJSON 文件 - 在 react 中导入 geojson- 使用 mapbox 数据加载

如何解决如何在 React 中使用带有 Mapbox 的本地 GeoJSON 文件 - 在 react 中导入 geojson- 使用 mapbox 数据加载

美好的一天,

我在 React 中使用 MapBox 制作带有多边形图层的地图。问题是我必须为多边形层使用本地 GeoJSON 文件,而我不能使用 URL。我见过一些解决方案,但在 React 中没有。

这是带有有效 URL 的代码

import React,{ Component } from "react";
import ReactMapBoxGL,{ Source,Layer } from "react-map-gl";

class MapBox extends Component {
  state = {
    viewport: {
      width: "100vw",height: "90vh",latitude: 44.065256,longitude: -125.075801,zoom: 4,},};
  render() {
    return (
      <div className="MapBox">
        <ReactMapBoxGL
          {...this.state.viewport}
          onViewportChange={(viewport) => this.setState({ viewport })}
          mapStyle="mapBox://styles/mapBox/outdoors-v11"
          mapBoxApiAccesstoken="pk.eyJ1IjoiY2FybGF2ZGIiLCJhIjoiY2o0ZTM3d293MHRraTMydWZ5aGVtajdldSJ9.BMk1gf9OXguMOhEqcP43eg"
        >
          <Source
            id="oregonjson"
            type="geojson"
#Here is the URL:
            data="https://raw.githubusercontent.com/glynnbird/usstatesgeojson/master/oregon.geojson"
          />
          <Layer
            id="anything"
            type="fill"
            source="oregonjson"
            paint={{ "fill-color": "#228b22","fill-opacity": 0.4 }}
          />
        </ReactMapBoxGL>
      </div>
    );
  }
}

export default MapBox;

本地文件名称是“oregon_local.geojson”,与 URL 完全相同。

代替 URL,我尝试过:

<Source
    id="oregonjson"
    type="geojson"
    data={require("../diagrams/oregon_local.geojson")}
/>

这给出了一个错误

Error {message: "Input data is not a valid GeoJSON object."}

我也试过:

<Source
     id="oregonjson"
     type="geojson"
     data={"file://D:/diagrams/oregon_local.geojson"}
/>

这给出了错误

Not allowed to load local resource

我也试过:

<Source
   id="oregonjson"
   type="geojson"
   data={"http://../diagrams/oregon_local.geojson"}
/>

这给出了错误

Error {message: "Failed to fetch"}

如何在 React 中使用 MapBox 将本地 GeoJSON 加载为多边形图层?

Here is a link to the Sandbox

解决方法

你可以通过几种方式做到这一点。

- 在 react 中导入 geojson

将 geojson 文件扩展名更改为 json

import oregon_local from './assets/oregon.json'
...
<Source id="oregonjson" type="geojson" data={oregon_local} >
...

如果您的 geojson 文件文件很小,这种方式是可以的,因为它将被捆绑到您的 javascript 中。

- 使用 mapbox 数据加载

将您的 geojson 文件放在 public/data 文件夹中

<Source type="geojson" data="/data/oregon.geojson" >
...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。