使用React的WebGL:使用Leaflet和Pixi.js在地图上绘制对象

你打算做什么?

在React应用中,我们将使用react-leaflet-pixi-overlay来在地图上绘制对象。

试试看

在React应用程序中绘制地图。

创建React应用程序并安装库。
使用Leaflet的React包装器react-leaflet。

npx create-react-app leaflet-pixi-sample
cd leaflet-pixi-sample
npm install react-leaflet --save

根据示例的指导,修改App.js。

import 'leaflet/dist/leaflet.css'
import { MapContainer, TileLayer } from 'react-leaflet'

function App() {
  return (
    <div className="App">
      {/* MapContainer コンポーネントの中に地図タイルやマーカーを配置する */}
      <MapContainer
        // center:地図の初期中心点を指定
        center={[35.658581, 139.745433]}
        // zoom:地図の初期ズームサイズを指定
        zoom={17}
        style={{
          width: '500px',
          height: '500px',
          margin: 'auto',
        }}
      >
        {/* TileLayer コンポーネントで地図タイルを配置する */}
        <TileLayer
          // attribution:地図の出典を表示
          attribution='&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
          // url:地図タイル取得先を指定
          url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
        />
      </MapContainer>
    </div>
  )
}

export default App

执行项目。

npm start
image.png

2. 使用Pixi.js在地图上绘制对象。

使用react-leaflet-pixi-overlay,这是一个使用Pixi.js绘制Leaflet叠加层的库的React封装。

npm install react-leaflet-pixi-overlay --save

用中文将 App.js 进行修改,尝试在地图上放置标记。

import 'leaflet/dist/leaflet.css'
import { MapContainer, TileLayer } from 'react-leaflet'
import PixiOverlay from 'react-leaflet-pixi-overlay'

function App() {
  return (
    <div className="App">
      {/* MapContainer コンポーネントの中に地図タイルやマーカーを配置する */}
      <MapContainer
        // center:地図の初期中心点を指定
        center={[35.658581, 139.745433]}
        // zoom:地図の初期ズームサイズを指定
        zoom={17}
        style={{
          width: '500px',
          height: '500px',
          margin: 'auto',
        }}
      >
        {/* TileLayer コンポーネントで地図タイルを配置する */}
        <TileLayer
          // attribution:地図の出典を表示
          attribution='&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
          // url:地図タイル取得先を指定
          url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
        />
        {/* PixiOverlay コンポーネントで地図上にオブジェクトを配置する */}
        <PixiOverlay
          markers={[
            {
              id: '0',
              iconColor: 'green',
              position: [35.658581, 139.745433],
            },
            {
              id: '1',
              iconColor: 'orange',
              position: [35.6576, 139.7489],
              // ポップアップやクリックイベント、ツールチップも設定できます
              popup: '芝公園',
              popupOpen: true,
              onClick: () => alert('Clicked!'),
              tooltip: 'Tooltip!',
            },
          ]}
        />
      </MapContainer>
    </div>
  )
}

export default App

执行项目。

npm start
image.png

最后

我想要放置大量标记并进行性能验证。
看起来在 react-leaflet-pixi-overlay 中,可以放置自定义图标,但更复杂的对象,如多边形和热力图,则需要使用 Leaflet.PixiOverlay 进行绘制或直接操作 WebGL。

广告
将在 10 秒后关闭
bannerAds