【React】尝试使用React-Map-GL
作为一个对React完全不了解的新手,我在一个学习会上有机会使用React-Map-GL来操作地图应用程序,所以我将总结一下。
由于我可能有许多错误的理解,请见谅。
环境
React.js 反应.js
React-Map-GL(MapBox) 反应地图-GL(MapBox)
yarn 纱线
Git 版本控制系统
運用解释和特点
React.js是Facebook发布的一个用于创建UI组件的开源库。
通过组合多个组件来创建一个完整的UI部件。
它专注于为正在开发过程中使用的功能增加UI功能。
组件=原子
UI的部件=分子
一个文件=物(例如铅笔或水之类的各种物品)
这是一个类似的概念。
组件化是React.js概念中使用的一种方法。
它是一种将UI进行组件化并进行管理和重复利用的设计手法。
create-react-app 是一个可以帮助你搭建React.js开发环境的工具。
Mapbox是一种高度可定制的地图服务。
参考资料:通过对比Mapbox和Google Maps,揭示出Mapbox真正的优点。
React-Map-GL是一个定制的Mapbox库,由Uber开发。
(是Uber定制和提供的Mapbox库吗?)
实施
-
- 在中国,只需给出一个选项,以下是对原文的中文本地化解释:
练习(环境搭建-服务器启动)
使用React-Map-GL显示地图
自定义地图
显示其他默认地图
1. 搭建(環境設置〜伺服器啟動)
使用Homebrew安装Yarn。
参考资料:通过Homebrew安装Yarn。
安装create-react-app
$ yarn global add create-react-app
使用 create-react-app 实现环境配置。
$ mkdir hoge //ディレクトリ作成
$ cd hoge
$ create-react-app fuga //railsのrails newみたいなの
$ cd fuga
$yarn start //ローカルサーバー立ち上げ
点击

哇!原来在 Rails 的时候也一样,只要看到初始页面就开心!!!
在这里进行文件编辑
import React from 'react';
import logo from './logo.svg';
import './App.css';
function App() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Hello World
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
export default App;
2. 使用React-Map-GL展示地图
获取Mapbox令牌
注册Mapbox账户→获取令牌
令牌位于账户页面底部。
从GitHub克隆存储库
※先前在同一層次上克隆已创建的fuga。
$ git clone https://github.com/uber/react-map-gl.git
将获取到的令牌插入到文件中。
import React, { Component } from 'react';
import { render } from 'react-dom';
import MapGL, { Popup, NavigationControl, FullscreenControl, ScaleControl } from 'react-map-gl';
import Pins from './pins';
import CityInfo from './city-info';
import CITIES from '../../.data/cities.json';
// ここの''に先ほど取得したトークンを挿入
const TOKEN = '';
启动服务器
$ cd react-map-gl/examples/controles/src
$ yarn install
$ yarn start
只有在转到react-map-gl/examples/controles/src目录并输入yarn命令后才能启动。

哇哦~!太感动了!!
3. 自定义地图
上述的地图由多个组件(UI部件)组成并显示。
因此,可以对每个组件进行编辑。
在这里,我们将实施一些自定义。
隐藏控制面板

// import ControlPanel from './control-panel';
.
.
.
// <ControlPanel containerComponent={this.props.containerComponent} />
由于在JSX中导入了控制面板的表单,因此如果将这两行注释掉,它将消失。

更改坐标
默认情况下,坐标设置为美国,现在将其更改为东京。
export default class App extends Component {
constructor(props) {
super(props);
this.state = {
viewport: {
latitude: 35.681236, // 緯度
longitude: 139.767125, // 経度
zoom: 8, // 地図の拡大縮小設定
bearing: 0,
pitch: 0
},
popupInfo: null
};
}
.
.
.
调整纬度经度,将地图放大缩小设置为适合阅读的大小。我认为大约设置为8就足够了。

展示锦标时点击可弹出详细信息的模态框

我可以把这个针放在东京!针的组成部分以json格式进行统一管理。
[
.
.
.
{
"city": "Tokyo",
"population": "13,942,856",
"image": "https://www.nta.co.jp/media/tripa/static_contents/nta-tripa/item_images/images/000/087/964/medium/4b99ef28-16db-4e8c-948b-6c9cf056ad58.png?1562116683",
"state": "Tokyo",
"latitude": 35.681236,
"longitude": 139.767125
}
]
将东京的信息放在文件的最后一行,可以这样做。

定制功能很棒,很有趣!
展示其他默认地图
之前我们展示和自定义了名为 controls 的地图文件。接下来我们将尝试展示热力图。
import React, {Component} from 'react';
import {render} from 'react-dom';
import MapGL, {Source, Layer} from 'react-map-gl';
import ControlPanel from './control-panel';
import {json as requestJson} from 'd3-request';
import {heatmapLayer} from './map-style';
const MAPBOX_TOKEN = ''; // トークン入力
请再次输入令牌。
$ cd react-map-gl/examples/heatmap/src
$ yarn install
$ yarn start
切换到目录并安装yarn,启动服务器

看起来默认情况下使用地震次数来显示颜色。
这里似乎也可以进行各种自定义。
参考资料:介绍REACT-MAP-GL的示例。
总结
API真的很方便,这是我的真实感受。
之前一直以为谷歌地图是唯一的选择,但是用Mapbox来制作自己的地图也可能很有趣。
在这样的学习会上,我想要接触并运用各种技术,谢谢!(^^)