divan/GanjooRazor/Pages/Map.cshtml
2021-11-05 15:29:35 +03:30

120 lines
3.8 KiB
Plaintext

@page
@model GanjooRazor.Pages.MapModel
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>نقشهٔ گنجور</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta charset="utf-8" />
<link href="/css/p8.css?version=13" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="/css/leaflet.css" />
<style type="text/css">
.leaflet-container {
background-color: #c5e8ff;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="~/js/leaflet.js"></script>
<script src="~/js/leaflet-providers.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/OverlappingMarkerSpiderfier-Leaflet/0.2.6/oms.min.js"></script>
<script>
var poetsgroups = [];
var poetGroupIndex = 0;
var map;
var oms;
var layerGroup;
var myGeoJSONPath = '/json/world.json';
var myCustomStyle = {
stroke: true,
weight: 1,
color: '#300',
}
$.getJSON(myGeoJSONPath, function (data) {
var map = L.map('map').setView([34, 53.6880], 5);
L.geoJson(data, {
clickable: false,
style: myCustomStyle
}).addTo(map);
L.tileLayer.provider('Stamen.Watercolor').addTo(map);
oms = new OverlappingMarkerSpiderfier(map, { keepSpiderfied: false });
poetsgroups = @(Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.PoetGroupsWithBirthPlaces, Newtonsoft.Json.Formatting.Indented)));
var rangeValues = [];
for (var i = 0; i < poetsgroups.length; i++) {
rangeValues.push(poetsgroups[i].Name);
}
$('#rangeText').text(poetsgroups[0].Name);
layerGroup = L.layerGroup().addTo(map);
var poets = poetsgroups[0].Poets;
for (var i = 0; i < poets.length; i++) {
var poet = poets[i];
var icon = L.icon({
iconUrl: poet.ImageUrl,
iconSize: [82, 100],
iconAnchor: [82, 100],
popupAnchor: [0, -28]
});
marker = L.marker([poet.BirthPlaceLatitude, poet.BirthPlaceLongitude], { icon: icon });
marker.addTo(layerGroup);
oms.addMarker(marker);
}
});
$(function () {
$('#rangeInput').on('input change', function () {
var val = $(this).val();
if (val >= 0 && val < poetsgroups.length) {
$('#rangeText').text(poetsgroups[val].Name);
var index = $(this).val();
layerGroup.clearLayers();
var poets = poetsgroups[index].Poets;
for (var i = 0; i < poets.length; i++) {
var poet = poets[i];
var icon = L.icon({
iconUrl: poet.ImageUrl,
iconSize: [82, 100],
iconAnchor: [82, 100],
popupAnchor: [0, -28]
});
var marker = L.marker([poet.BirthPlaceLatitude, poet.BirthPlaceLongitude], { icon: icon });
marker.addTo(layerGroup);
oms.addMarker(marker);
}
}
});
});
</script>
</head>
<body>
<div id="fa">
<div id="map" style="height: 500px"></div>
<input type="range" id="rangeInput" name="rangeInput" step="1" min="0" max="@Model.PoetGroupsWithBirthPlaces.Count" value="0">
<div class="century" id="rangeText">
</div>
</div>
</body>
</html>