-
Notifications
You must be signed in to change notification settings - Fork 1
/
Map.html
91 lines (78 loc) · 2.57 KB
/
Map.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<html>
<head>
<meta charset='utf-8' />
<title></title>
<meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
<script src='https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.js'></script>
<link href='https://unpkg.com/maplibre-gl@2.4.0/dist/maplibre-gl.css' rel='stylesheet' />
<style>
body {
margin: 0;
padding: 0;
}
#map {
position: absolute;
top: 0;
bottom: 0;
width: 100%;
}
</style>
</head>
<body>
<div id='map'></div>
<script>
const apiKey = get('apiKey');
const map = new maplibregl.Map({
container: 'map', // container id
attributionControl: true,
pitch: 0,
antialias: true,
hash: true,
style: 'https://vectormaps-resources.myptv.com/styles/latest/standard.json',
transformRequest: (url, resourceType) => {
if (resourceType === 'Tile' && url.startsWith('https://api.myptv.com')) {
return {
url: url + '?apiKey=' + apiKey
}
}
},
zoom: 0 // starting zoom
});
// Add controls to the map.
map.addControl(new maplibregl.NavigationControl());
map.on('click', function (e) {
CefSharp.PostMessage({ Event: "click", Lng: e.lngLat.lng, Lat: e.lngLat.lat });
});
var currentMarkers = [];
function setLocations(locationStr) {
// remove markers
if (currentMarkers !== null) {
for (var i = currentMarkers.length - 1; i >= 0; i--) {
currentMarkers[i].remove();
}
}
var llb = new maplibregl.LngLatBounds();
var locations = JSON.parse(locationStr);
locations.forEach(l => {
const mapLocation = [l.ReferencePosition.Longitude, l.ReferencePosition.Latitude];
llb.extend(mapLocation);
// Add a marker with popup
const marker = new maplibregl.Marker()
.setLngLat(mapLocation)
.addTo(map);
const popup = new maplibregl.Popup()
.setLngLat(mapLocation)
.setHTML(l.FormattedAddress)
.addTo(map);
marker.setPopup(popup);
currentMarkers.push(marker)
});
map.fitBounds(llb, { padding: 30, maxZoom: 16 });
}
function get(name){
if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search))
return decodeURIComponent(name[1]);
}
</script>
</body>
</html>