🙆🏻‍♀️ [React] Openlayers (1) 🙆🏻‍♀️


関数化構成部品マッピングの表示
Openlayers?
GoogleやKakaoもAPIなどを利用してGISを開発していない.(コストの問題かも…)
そんな理由で会うOpenlayers!
オープンソースライブラリは、地図ベースのサービスの開発に役立ちます.
本文書の例はバニラJavaScriptであり,反応に応じて変換して適用する必要がある.
地理そのものが弱いので、ちょっと心配…☆㉨1乙I㈓㈓㈓.☆
まず、それぞれを記録したいと思います.
地図を表示
まず反応項目をCRAで簡単に生成する.
次に、ライブラリをガーゼadd olまたはnpm install olを使用してインストールします.
タイプスクリプトの場合は、@types/olもインストールする必要があります.
地図を表す構成部品に必要なモジュールをインポートします.
// MapTest.jsx
import React, { useEffect, useRef } from "react";

import { Map as OlMap, View } from "ol";
import { defaults as defaultControls } from "ol/control";
import { fromLonLat, get as getProjection } from "ol/proj";
import { Tile as TileLayer, Vector as VectorLayer } from "ol/layer";
import { XYZ, Vector as VectorSource } from "ol/source";
import "ol/ol.css";
Mapは資料構造Mapと重なると思って名前を修正しました.
export default function MapTest() {
  // OlMap 타겟 지정을 위해 사용 (id를 지정 대신)
  const mapContent = useRef(null);
  
  // 추후 객체를 추가하기 위한 레이어(점, 선, 도형)
  const initVectorLayer = new VectorLayer({
    source: new VectorSource(),
  });

  useEffect(() => {
    if (!mapContent.current) {
      return;
    }

    const map = new OlMap({
      controls: defaultControls({ zoom: false, rotate: false }).extend([]),
      layers: [
        new TileLayer({
          source: new XYZ({ url: "http://xdworld.vworld.kr:8080/2d/Base/202002/{z}/{x}/{y}.png" }),
        }),
        initVectorLayer,
      ],
      view: new View({
        projection: getProjection("EPSG:3857"),
        center: fromLonLat([127.296364, 37.503429]),
        zoom: 15,
        minZoom: 7,
        maxZoom: 20,
      }),
      target: mapContent.current,
    });

    return () => map.setTarget(undefined);
  }, []);



  return (
    <div className="gis-map-wrap">
      <div ref={mapContent}></div>
    </div>
  );
}
  • control:[ズーム](Zoom)ボタンなどのプリファレンスをオフにします.
  • 層:地図用の層設定.私たちがよく知っている地図を使うために、VworldのAPIを使いました.initVectorLayerは、オブジェクトを描画するレイヤーです.
  • view:地図の表示方法を設定できます.(ズーム、基点、座標系等)
  • target:地図を描く空間
  • ! 必ず地図のdivの大きさ(width,height)を描きます!決まります.
    次は...🤔
    描いた地図にオブジェクトを描く...!
    OpenLayers公式サイト