Initial import
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
$lat = $_GET['lat'] ?? 42.698334;
|
||||
$lon = $_GET['lon'] ?? 23.319941;
|
||||
$dist = $_GET['dist'] ?? 50;
|
||||
?>
|
||||
<link rel="stylesheet" href="<?= Yii::$app->params['portal'] ?>/_public/plugins/leafletjs/leaflet.css">
|
||||
<script src="<?= Yii::$app->params['portal'] ?>/_public/plugins/leafletjs/leaflet.js"></script>
|
||||
<style>
|
||||
#map {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
body {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
.leaflet-left {
|
||||
right: 10px;
|
||||
left: auto;
|
||||
}
|
||||
.leaflet-control-attribution.leaflet-control a {
|
||||
display: none;
|
||||
}
|
||||
.leaflet-control-container {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
<div id="map"></div>
|
||||
|
||||
<script>
|
||||
let lang = '<?= Yii::$app->language ?>'
|
||||
let host = '<?= Yii::$app->params['portal'] ?>'
|
||||
let addedPoints = [];
|
||||
let mapOptions = {
|
||||
center: [<?=$lat ?>, <?= $lon ?>],
|
||||
zoom: 13
|
||||
}
|
||||
let map = new L.map('map', mapOptions);
|
||||
let layer = new L.TileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
|
||||
map.addLayer(layer);
|
||||
let marker = new L.Marker([<?=$lat?>, <?= $lon?>]);
|
||||
marker.addTo(map);
|
||||
|
||||
let icon = L.icon({
|
||||
iconUrl: '/_public/plugins/leafletjs/images/pin-b.png',
|
||||
iconSize: [40, 40]
|
||||
});
|
||||
let iconBlue = L.icon({
|
||||
iconUrl: '/_public/plugins/leafletjs/images/point-blue.png',
|
||||
iconSize: [30, 30]
|
||||
});
|
||||
|
||||
marker.setIcon(icon)
|
||||
|
||||
function addPoints() {
|
||||
const xhr = new XMLHttpRequest()
|
||||
xhr.open('get', `${host}/${lang}/remote/get-nearest-objects/?lat=<?= $lat ?>&lon=<?= $lon ?>&dist=<?= $dist ?>&explorer=1`)
|
||||
if(addedPoints.length > 0) {
|
||||
addedPoints.forEach(pointToDelete => {
|
||||
map.removeLayer(pointToDelete)
|
||||
})
|
||||
}
|
||||
xhr.responseType = 'json';
|
||||
xhr.onload = function () {
|
||||
if (xhr.response) {
|
||||
const points = xhr.response;
|
||||
points.forEach(p => {
|
||||
if (p.latitude !== '<?= $lat?>' && p.longitude !== '<?= $lon?>') {
|
||||
let point = new L.Marker([p.latitude, p.longitude]);
|
||||
point.setIcon(iconBlue)
|
||||
point.addTo(map);
|
||||
addedPoints.push(point)
|
||||
point.addEventListener('click', () => {
|
||||
window.parent.postMessage(JSON.stringify(p), '*');
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
xhr.send();
|
||||
}
|
||||
setTimeout(function () {
|
||||
addPoints()
|
||||
}, 50)
|
||||
</script>
|
||||
Reference in New Issue
Block a user