fix(master-land): update function getLocation()
This commit is contained in:
parent
91d2396bdb
commit
786d771653
|
@ -26,6 +26,7 @@ public function create()
|
|||
|
||||
public function store(Request $request)
|
||||
{
|
||||
dd($request->all());
|
||||
$customMessage = [
|
||||
'owner.required' => 'Nama pemilik wajib diisi',
|
||||
'owner.max' => 'Nama pemilik maksimal 25 karakter',
|
||||
|
|
|
@ -1,5 +1,15 @@
|
|||
var map, drawnItems, drawControl, googleHybrid, iconMarker;
|
||||
var currentMarker = null;
|
||||
var btnLocation = document.getElementById("location-btn");
|
||||
var form = document.getElementById("add-form");
|
||||
var addressContainer = form.querySelector("#address-container");
|
||||
var addressField = form.querySelector("#address-field");
|
||||
var mapContainer = form.querySelector("#map-container");
|
||||
var latField = form.querySelector("#lat");
|
||||
var lngField = form.querySelector("#lng");
|
||||
var polygonField = form.querySelector("#polygon");
|
||||
var loading = form.querySelector("#loading");
|
||||
var btnContainer = form.querySelector("#add-footer");
|
||||
|
||||
function initMap() {
|
||||
map = L.map("map", {
|
||||
|
@ -63,244 +73,257 @@ function getLocation() {
|
|||
return;
|
||||
}
|
||||
|
||||
btnLocation.innerHTML = ``;
|
||||
btnLocation.innerHTML = `<span class="d-flex align-items-center">
|
||||
<span class="flex-grow-1 me-2">
|
||||
Loading...
|
||||
</span>
|
||||
<span class="spinner-border flex-shrink-0" role="status">
|
||||
<span class="visually-hidden">Loading...</span>
|
||||
</span>
|
||||
</span>`;
|
||||
btnLocation.disabled = true;
|
||||
|
||||
navigator.geolocation.getCurrentPosition(
|
||||
function (position) {
|
||||
loading.style.display = "none";
|
||||
|
||||
mapContainer.style.display = "block";
|
||||
map.invalidateSize();
|
||||
|
||||
var lat = position.coords.latitude;
|
||||
var lng = position.coords.longitude;
|
||||
|
||||
map.setView([lat, lng], 16);
|
||||
fetch(
|
||||
`https://nominatim.openstreetmap.org/reverse?lat=${lat}&lon=${lng}&format=json&accept-language=id`
|
||||
)
|
||||
.then((response) => response.json())
|
||||
.then((data) => {
|
||||
btnLocation.classList.add("d-none");
|
||||
addressContainer.style.display = "block";
|
||||
mapContainer.style.display = "block";
|
||||
map.invalidateSize();
|
||||
|
||||
if (currentMarker) {
|
||||
map.removeLayer(currentMarker);
|
||||
}
|
||||
var address = `Desa ${data.address.village}, Kecamatan ${
|
||||
data.address.township ? data.address.township : `-`
|
||||
}, Kabupaten ${data.address.city}, Provinsi ${
|
||||
data.address.state
|
||||
}`;
|
||||
addressField.value = address;
|
||||
|
||||
currentMarker = L.marker([lat, lng], {
|
||||
icon: iconMarker,
|
||||
draggable: true,
|
||||
}).addTo(map);
|
||||
map.setView([lat, lng], 16);
|
||||
|
||||
currentMarker.on("dragend", onPointerDragend);
|
||||
if (currentMarker) {
|
||||
map.removeLayer(currentMarker);
|
||||
}
|
||||
|
||||
currentMarker
|
||||
.bindPopup(
|
||||
`<div class="text-center"><b>Anda berada di sini</b><br />Silahkan tentukan petak lahan.<br />Pastikan lokasi anda sudah benar.</div>`
|
||||
)
|
||||
.openPopup();
|
||||
currentMarker = L.marker([lat, lng], {
|
||||
icon: iconMarker,
|
||||
draggable: true,
|
||||
}).addTo(map);
|
||||
|
||||
latField.value = lat;
|
||||
lngField.value = lng;
|
||||
currentMarker.on("dragend", onPointerDragend);
|
||||
|
||||
currentMarker
|
||||
.bindPopup(
|
||||
`<div class="text-center"><b>Anda berada di sini</b><br />Silahkan tentukan petak lahan.<br />Pastikan lokasi anda sudah benar.</div>`
|
||||
)
|
||||
.openPopup();
|
||||
|
||||
latField.value = lat;
|
||||
lngField.value = lng;
|
||||
})
|
||||
.catch((error) => {
|
||||
alert("Error: " + error.message);
|
||||
});
|
||||
},
|
||||
function (error) {
|
||||
alert("Error: " + error.message);
|
||||
}
|
||||
);
|
||||
}
|
||||
// var provinceField = form.querySelector("#province-field");
|
||||
// var provinceVal = new Choices(provinceField);
|
||||
|
||||
var form = document.getElementById("add-form");
|
||||
var provinceField = form.querySelector("#province-field");
|
||||
var provinceVal = new Choices(provinceField);
|
||||
// var regencyContainer = form.querySelector("#regency-container");
|
||||
// var regencyField = form.querySelector("#regency-field");
|
||||
// var regencyVal = new Choices(regencyField, {
|
||||
// shouldSort: false,
|
||||
// });
|
||||
|
||||
var regencyContainer = form.querySelector("#regency-container");
|
||||
var regencyField = form.querySelector("#regency-field");
|
||||
var regencyVal = new Choices(regencyField, {
|
||||
shouldSort: false,
|
||||
});
|
||||
|
||||
var districtContainer = form.querySelector("#district-container");
|
||||
var districtField = form.querySelector("#district-field");
|
||||
var districtVal = new Choices(districtField, {
|
||||
shouldSort: false,
|
||||
});
|
||||
|
||||
var addressContainer = form.querySelector("#address-container");
|
||||
var addressField = form.querySelector("#address-field");
|
||||
|
||||
var mapContainer = form.querySelector("#map-container");
|
||||
var latField = form.querySelector("#lat");
|
||||
var lngField = form.querySelector("#lng");
|
||||
|
||||
var polygonField = form.querySelector("#polygon");
|
||||
var loading = form.querySelector("#loading");
|
||||
|
||||
var btnContainer = form.querySelector("#add-footer");
|
||||
// var districtContainer = form.querySelector("#district-container");
|
||||
// var districtField = form.querySelector("#district-field");
|
||||
// var districtVal = new Choices(districtField, {
|
||||
// shouldSort: false,
|
||||
// });
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
initMap();
|
||||
if (provinceField.value !== "") {
|
||||
getRegencies(provinceField.value);
|
||||
}
|
||||
// if (provinceField.value !== "") {
|
||||
// getRegencies(provinceField.value);
|
||||
// }
|
||||
});
|
||||
|
||||
function getRegencies(provinceId) {
|
||||
regencyContainer.style.display = "none";
|
||||
districtContainer.style.display = "none";
|
||||
addressContainer.style.display = "none";
|
||||
loading.style.display = "block";
|
||||
mapContainer.style.display = "none";
|
||||
// function getRegencies(provinceId) {
|
||||
// regencyContainer.style.display = "none";
|
||||
// districtContainer.style.display = "none";
|
||||
// addressContainer.style.display = "none";
|
||||
// loading.style.display = "block";
|
||||
// mapContainer.style.display = "none";
|
||||
|
||||
const url = "/location/get-regency/" + provinceId;
|
||||
$.ajax({
|
||||
url: url,
|
||||
type: "GET",
|
||||
success: function (response) {
|
||||
if (response.success) {
|
||||
loading.style.display = "none";
|
||||
const data = response.data;
|
||||
// const url = "/location/get-regency/" + provinceId;
|
||||
// $.ajax({
|
||||
// url: url,
|
||||
// type: "GET",
|
||||
// success: function (response) {
|
||||
// if (response.success) {
|
||||
// loading.style.display = "none";
|
||||
// const data = response.data;
|
||||
|
||||
regencyVal.clearStore();
|
||||
regencyVal.clearChoices();
|
||||
// regencyVal.clearStore();
|
||||
// regencyVal.clearChoices();
|
||||
|
||||
regencyVal.value = "";
|
||||
regencyVal.setChoices([
|
||||
{
|
||||
value: "",
|
||||
label: "Pilih Kabupaten",
|
||||
selected: true,
|
||||
disabled: true,
|
||||
},
|
||||
]);
|
||||
// regencyVal.value = "";
|
||||
// regencyVal.setChoices([
|
||||
// {
|
||||
// value: "",
|
||||
// label: "Pilih Kabupaten",
|
||||
// selected: true,
|
||||
// disabled: true,
|
||||
// },
|
||||
// ]);
|
||||
|
||||
if (Array.isArray(data)) {
|
||||
regencyVal.setChoices(
|
||||
data.map((regency) => ({
|
||||
value: regency.id,
|
||||
label: regency.name,
|
||||
selected: false,
|
||||
disabled: false,
|
||||
}))
|
||||
);
|
||||
// if (Array.isArray(data)) {
|
||||
// regencyVal.setChoices(
|
||||
// data.map((regency) => ({
|
||||
// value: regency.id,
|
||||
// label: regency.name,
|
||||
// selected: false,
|
||||
// disabled: false,
|
||||
// }))
|
||||
// );
|
||||
|
||||
regencyContainer.style.display = "block";
|
||||
} else {
|
||||
mapContainer.style.display = "block";
|
||||
mapContainer.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function (xhr, status, error) {
|
||||
mapContainer.style.display = "block";
|
||||
mapContainer.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
},
|
||||
});
|
||||
}
|
||||
// regencyContainer.style.display = "block";
|
||||
// } else {
|
||||
// mapContainer.style.display = "block";
|
||||
// mapContainer.innerHTML =
|
||||
// "<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
// error: function (xhr, status, error) {
|
||||
// mapContainer.style.display = "block";
|
||||
// mapContainer.innerHTML =
|
||||
// "<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
// },
|
||||
// });
|
||||
// }
|
||||
|
||||
function getDistricts(regencyId) {
|
||||
districtContainer.style.display = "none";
|
||||
addressContainer.style.display = "none";
|
||||
loading.style.display = "block";
|
||||
mapContainer.style.display = "none";
|
||||
// function getDistricts(regencyId) {
|
||||
// districtContainer.style.display = "none";
|
||||
// addressContainer.style.display = "none";
|
||||
// loading.style.display = "block";
|
||||
// mapContainer.style.display = "none";
|
||||
|
||||
const url = "/location/get-district/" + regencyId;
|
||||
$.ajax({
|
||||
url: url,
|
||||
type: "GET",
|
||||
success: function (response) {
|
||||
if (response.success) {
|
||||
loading.style.display = "none";
|
||||
const data = response.data;
|
||||
// const url = "/location/get-district/" + regencyId;
|
||||
// $.ajax({
|
||||
// url: url,
|
||||
// type: "GET",
|
||||
// success: function (response) {
|
||||
// if (response.success) {
|
||||
// loading.style.display = "none";
|
||||
// const data = response.data;
|
||||
|
||||
districtVal.clearStore();
|
||||
districtVal.clearChoices();
|
||||
// districtVal.clearStore();
|
||||
// districtVal.clearChoices();
|
||||
|
||||
districtVal.value = "";
|
||||
districtVal.setChoices([
|
||||
{
|
||||
value: "",
|
||||
label: "Pilih Kecamatan",
|
||||
selected: true,
|
||||
disabled: true,
|
||||
},
|
||||
]);
|
||||
// districtVal.value = "";
|
||||
// districtVal.setChoices([
|
||||
// {
|
||||
// value: "",
|
||||
// label: "Pilih Kecamatan",
|
||||
// selected: true,
|
||||
// disabled: true,
|
||||
// },
|
||||
// ]);
|
||||
|
||||
if (Array.isArray(data)) {
|
||||
districtVal.setChoices(
|
||||
data.map((district) => ({
|
||||
value: district.id,
|
||||
label: district.name,
|
||||
selected: false,
|
||||
disabled: false,
|
||||
}))
|
||||
);
|
||||
// if (Array.isArray(data)) {
|
||||
// districtVal.setChoices(
|
||||
// data.map((district) => ({
|
||||
// value: district.id,
|
||||
// label: district.name,
|
||||
// selected: false,
|
||||
// disabled: false,
|
||||
// }))
|
||||
// );
|
||||
|
||||
districtContainer.style.display = "block";
|
||||
} else {
|
||||
mapContainer.style.display = "block";
|
||||
mapContainer.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function (xhr, status, error) {
|
||||
mapContainer.style.display = "block";
|
||||
mapContainer.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
},
|
||||
});
|
||||
}
|
||||
// districtContainer.style.display = "block";
|
||||
// } else {
|
||||
// mapContainer.style.display = "block";
|
||||
// mapContainer.innerHTML =
|
||||
// "<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
// error: function (xhr, status, error) {
|
||||
// mapContainer.style.display = "block";
|
||||
// mapContainer.innerHTML =
|
||||
// "<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
// },
|
||||
// });
|
||||
// }
|
||||
|
||||
function showmap(districtId) {
|
||||
loading.style.display = "block";
|
||||
if (!navigator.geolocation) {
|
||||
alert("Geolocation tidak didukung oleh browser ini.");
|
||||
return;
|
||||
}
|
||||
// function showmap(districtId) {
|
||||
// loading.style.display = "block";
|
||||
// if (!navigator.geolocation) {
|
||||
// alert("Geolocation tidak didukung oleh browser ini.");
|
||||
// return;
|
||||
// }
|
||||
|
||||
navigator.geolocation.getCurrentPosition(
|
||||
function (position) {
|
||||
loading.style.display = "none";
|
||||
// navigator.geolocation.getCurrentPosition(
|
||||
// function (position) {
|
||||
// loading.style.display = "none";
|
||||
|
||||
mapContainer.style.display = "block";
|
||||
map.invalidateSize();
|
||||
// mapContainer.style.display = "block";
|
||||
// map.invalidateSize();
|
||||
|
||||
addressContainer.style.display = "block";
|
||||
// addressContainer.style.display = "block";
|
||||
|
||||
var lat = position.coords.latitude;
|
||||
var lng = position.coords.longitude;
|
||||
// var lat = position.coords.latitude;
|
||||
// var lng = position.coords.longitude;
|
||||
|
||||
map.setView([lat, lng], 16);
|
||||
// map.setView([lat, lng], 16);
|
||||
|
||||
if (currentMarker) {
|
||||
map.removeLayer(currentMarker);
|
||||
}
|
||||
if (currentMarker || currentMarkerEdit) {
|
||||
map.removeLayer(currentMarker);
|
||||
}
|
||||
// if (currentMarker) {
|
||||
// map.removeLayer(currentMarker);
|
||||
// }
|
||||
// if (currentMarker || currentMarkerEdit) {
|
||||
// map.removeLayer(currentMarker);
|
||||
// }
|
||||
|
||||
var iconMarker = L.icon({
|
||||
iconUrl: "/assets/images/marker.png",
|
||||
iconSize: [50, 50],
|
||||
iconAnchor: [25, 50],
|
||||
popupAnchor: [0, -50],
|
||||
});
|
||||
// var iconMarker = L.icon({
|
||||
// iconUrl: "/assets/images/marker.png",
|
||||
// iconSize: [50, 50],
|
||||
// iconAnchor: [25, 50],
|
||||
// popupAnchor: [0, -50],
|
||||
// });
|
||||
|
||||
currentMarker = L.marker([lat, lng], {
|
||||
icon: iconMarker,
|
||||
draggable: true,
|
||||
}).addTo(map);
|
||||
// currentMarker = L.marker([lat, lng], {
|
||||
// icon: iconMarker,
|
||||
// draggable: true,
|
||||
// }).addTo(map);
|
||||
|
||||
currentMarker.on("dragend", onPointerDragend);
|
||||
// currentMarker.on("dragend", onPointerDragend);
|
||||
|
||||
currentMarker
|
||||
.bindPopup(
|
||||
`<div class="text-center"><b>Anda berada di sini</b><br />Silahkan tentukan petak lahan.<br />Pastikan lokasi anda sudah benar.</div>`
|
||||
)
|
||||
.openPopup();
|
||||
// currentMarker
|
||||
// .bindPopup(
|
||||
// `<div class="text-center"><b>Anda berada di sini</b><br />Silahkan tentukan petak lahan.<br />Pastikan lokasi anda sudah benar.</div>`
|
||||
// )
|
||||
// .openPopup();
|
||||
|
||||
latField.value = lat;
|
||||
lngField.value = lng;
|
||||
},
|
||||
function (error) {
|
||||
alert("Error: " + error.message);
|
||||
}
|
||||
);
|
||||
}
|
||||
// latField.value = lat;
|
||||
// lngField.value = lng;
|
||||
// },
|
||||
// function (error) {
|
||||
// alert("Error: " + error.message);
|
||||
// }
|
||||
// );
|
||||
// }
|
||||
|
||||
function onPointerDragend() {
|
||||
if (!currentMarker) return;
|
||||
|
|
|
@ -55,11 +55,12 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<button class="btn btn-success" type="button" onclick="getLocation()">Dapatkan Lokasi Lahan!</button>
|
||||
<div class="mb-3 text-end">
|
||||
<button id="location-btn" class="btn btn-success btn-load" type="button"
|
||||
onclick="getLocation()">Dapatkan Lokasi Lahan!</button>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
{{-- <div class="mb-3">
|
||||
<label for="province-field" class="form-label">Provinsi</label>
|
||||
<select name="province_id" id="province-field" class="form-control" required
|
||||
onchange="getRegencies(this.value)">
|
||||
|
@ -101,11 +102,11 @@
|
|||
<div class="spinner-border text-primary" role="status">
|
||||
<span class="visually-hidden">Loading...</span>
|
||||
</div>
|
||||
</div>
|
||||
</div> --}}
|
||||
|
||||
<div class="mb-3" id="address-container" style="display: none">
|
||||
<label for="address-field" class="form-label">Alamat</label>
|
||||
<textarea name="address" id="address-field" rows="3" class="form-control"
|
||||
<textarea name="address" id="address-field" rows="3" class="form-control" readonly
|
||||
placeholder="Masukan Alamat, cnth: Jl. Jend. Sudirman No. 12" required></textarea>
|
||||
<div class="invalid-feedback">
|
||||
Masukan Alamat
|
||||
|
|
Loading…
Reference in New Issue