API

วิธีแสดงข้อมูลวัตถุ 3 มิติ (3D) บนแผนที่ Map API

3d-map-api

บทความนี้จะแนะนำวิธีการใช้แผนที่ออนไลน์ (Map API) ในการแสดงผลข้อมูลวัตถุ 3 มิติ (3D) เหมาะสำหรับโจทย์ติดตามทรัพย์สิน (asset management) มีขั้นตอนง่าย ๆ ดังนี้

วิธีซ้อนชั้นข้อมูล 3 มิติ (3D)

1. สมัครคีย์ Map API ได้ที่ https://map.longdo.com/console

2. นำโค้ดตัวอย่างด้านล่างนี้ไปใช้ได้เลย (อย่าลืมเปลี่ยน key api)

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Create Map Sample | Longdo Map</title>
<style type="text/css">
    html {
        height: 100%;
    }
    body {
        margin: 0px;
        height: 100%;
    }
    #map {
        height: 100%;
    }
</style>
<script type="text/javascript" src="https://api.longdo.com/map3/?key=[YOUR-KEY-API]"></script>
<script>
var map;

function init() {
    map = new longdo.Map({
        placeholder: document.getElementById('map'),
        zoom: 17,
        pitch: 45,
        location: [100.530358, 13.721821],
        lastView: false
    });

    map.Event.bind("ready", function () {
        const scale = 2;
        const data = [
            {
            coordinates: [100.530358, 13.721821, 0],
            scale: [scale, scale, scale],
            color: [0, 255, 0, 255],
            translation: [0, 0, 0],
            },
        ];
        const layer = new window.deck.MapboxLayer({
            id: "scenegraph-layer",
            type: window.deck.ScenegraphLayer,
            data,
            scenegraph:
            "https://maplibre.org/maplibre-gl-js/docs/assets/34M_17/34M_17.gltf",
            getPosition: (d) => d.coordinates,
            getScale: (d) => d.scale,
            // getColor: (d) => d.color,
            getTranslation: (d) => d.translation,
            getOrientation: (d) => d.orientation,
            opacity: 1,
            _lighting: "pbr",
            parameters: {
                depthTest: true,
            },
        }); // สร้าง object เป็น layer
        map.Layers.insert("", layer);
    });
}
</script>
</head>
<body onload="init();">
    <div id="map"></div>
</body>
</html>

ผลลัพธ์ที่ได้

การแสดงผลข้อมูล 3 มิติ

โดยที่ในส่วนของ `scenegraph` สามารถใส่เป็น url ของวัตถุ 3 มิติได้ ทั้งในรูปแบบ .glb (binary) และ .gltf (application/json) file format

ผู้ใช้สามารถปรับแต่งขนาด (scale), สี (color) หรือตำแหน่งการจัดวางได้เองทันที


สามารถดูตัวอย่างเพิ่มเติมได้ที่ https://deck.gl/docs/api-reference/mesh-layers/scenegraph-layer#getorientation

Leave a Reply