Files
UAS_WEBGIS_DestraAuliaFazaA…/webgis-spbu/js/line.js
T
2026-06-10 16:50:45 +07:00

94 lines
2.6 KiB
JavaScript

window.getRoadColor = function (status) {
if (status === "Jalan Nasional") {
return "#dc3545";
}
if (status === "Jalan Provinsi") {
return "#007bff";
}
return "#28a745";
};
window.normalizeRoadStatus = function (value) {
var normalized = String(value || "").trim().toLowerCase();
if (normalized === "jalan nasional" || normalized === "nasional") {
return "Jalan Nasional";
}
if (normalized === "jalan provinsi" || normalized === "provinsi") {
return "Jalan Provinsi";
}
if (normalized === "jalan kabupaten" || normalized === "kabupaten") {
return "Jalan Kabupaten";
}
return "";
};
window.serializeGeometry = function (latlngs) {
return JSON.stringify(latlngs.map(function (point) {
return [
Number(point.lat.toFixed(6)),
Number(point.lng.toFixed(6))
];
}));
};
window.parseGeometry = function (geom) {
try {
var parsed = JSON.parse(geom);
return Array.isArray(parsed) ? parsed : [];
} catch (error) {
return [];
}
};
window.collectRoadData = async function () {
return window.openEditModal({
title: "Tambah Jalan",
subtitle: "Lengkapi atribut jalan untuk garis yang sudah digambar.",
fields: [
{ name: "nama", label: "Nama Jalan", value: "", required: true },
{
name: "status",
label: "Status Jalan",
type: "select",
value: "Jalan Nasional",
options: [
{ value: "Jalan Nasional", label: "Jalan Nasional" },
{ value: "Jalan Provinsi", label: "Jalan Provinsi" },
{ value: "Jalan Kabupaten", label: "Jalan Kabupaten" }
]
}
],
validate: function (data) {
if (!data.nama || !window.normalizeRoadStatus(data.status)) {
return "Nama dan status jalan wajib valid.";
}
return "";
}
});
};
window.buildRoadLayer = function (jalan) {
var coordinates = window.parseGeometry(jalan.geom).map(function (point) {
return L.latLng(point[0], point[1]);
});
if (coordinates.length < 2) {
return null;
}
return L.polyline(coordinates, {
color: window.getRoadColor(jalan.status),
weight: 4
}).bindPopup(
"<b>" + window.escapeHtml(jalan.nama) + "</b><br>" +
"Status: " + window.escapeHtml(jalan.status) + "<br>" +
"Panjang: " + window.formatMeters(jalan.panjang)
);
};