Maplat Core에서 API에서 지도 표시 간 전환

Maplat Advent Calendar 5일째는 Maplat Core에서 API에서 지도 표시를 전환하는 방법입니다.

오늘 움직이는 것은 여기에서 확인할 수 있습니다. => CodeSandBox Maplat Advent Calendar day 5

우선, 지도를 전환하는 버튼을 추가하기 위해 htmlcss 에 조금 손을 넣자.

index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Maplat Advent Calendar Day5</title>
    <link rel="stylesheet" href="app.css" />
  </head>
  <body>
    <div class="mainview">
      <div id="map_div"></div>
    </div>
    <div class="button">
      <button id="gsi">GSI</button>
      <button id="osm">OSM</button>
      <button id="ojo">御城図</button>
      <button id="aki">秋元</button>
    </div>
  </body>
  <script src="app.js"></script>
</html>

app.css
.mainview {
  position: absolute;
  top: 5%;
  bottom: 5%;
  left: 5%;
  right: 5%;
}
.button {
  position: absolute;
  top: 95%;
  bottom: 0%;
  left: 5%;
  right: 5%;
}

흠, "나는 css 서투르다"라는 것이 한결같이 전해진다 css 네요.
그렇게 하는 것은 지도 영역 바로 아래에 버튼 4개 늘어놓은 것입니다.

이어서 모처럼 지도를 전환하기 때문에 지도의 수도 조금 늘려 2개에서 4개로 해봅시다.

apps/maplat_ac_day5.json
{
  "home_position": [139.5321, 36.249302],
  "default_zoom": 17,
  "start_from": "tatebayashi_ojozu",
  "sources": [
    {
      "mapID": "tatebayashi_ojozu",
      "setting_file": "https://s.maplat.jp/r/tatebayashimap/maps/tatebayashi_ojozu.json"
    },
    {
      "mapID": "tatebayashi_castle_akimoto",
      "setting_file": "https://s.maplat.jp/r/tatebayashimap/maps/tatebayashi_castle_akimoto.json"
    },
    "osm",
    "gsi"
  ]
}

보시다시피 tatebayashi_castle_akimotogsi의 두 가지지도 설정이 sources에 추가되었습니다.tatebayashi_castle_akimoto푸라토 다테바야시 에서 역시 정의되고 있는 아키모토가 지배 시대의 다테바야시성의 그림입니다.
오늘 역시 지도 자체의 설정 파일에 대한 자세한 설명은 나중에 돌립니다.gsiosm 유사한 설정이 사전 설정된 기본 지도로 지리원 지도를 나타냅니다.

이 네 개의 지도 사이에서 디스플레이를 전환해 봅시다.Javascript 로직은 이런 느낌이 됩니다.

app.js
import "@maplat/core/dist/maplat_core.css";
import { MaplatApp } from "@maplat/core";

var option = {
  appid: "maplat_ac_day5"
};

var app = new MaplatApp(option);
app.waitReady.then(function() {
  document.getElementById("gsi").addEventListener("click", function(e) {
    app.changeMap("gsi");
  });
  document.getElementById("osm").addEventListener("click", function(e) {
    app.changeMap("osm");
  });
  document.getElementById("ojo").addEventListener("click", function(e) {
    app.changeMap("tatebayashi_ojozu");
  });
  document.getElementById("aki").addEventListener("click", function(e) {
    app.changeMap("tatebayashi_castle_akimoto");
  });
});
app.waitReady 에서 Maplat 앱이 작동 준비가 될 때까지 기다린 후 각 버튼에 click 이벤트 핸들러가 주어지고 해당 콜백에서 app.changeMap({mapid}); 의 API가 호출됩니다.
이렇게하면 다음과 같이 API를 통한지도 전환이 가능합니다.

잠깐, 앱처럼 되어 왔어요!

내일은 드디어 마커에서도 표시시키고 싶습니다.

좋은 웹페이지 즐겨찾기