-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathvermont2023.html
117 lines (105 loc) · 5.65 KB
/
vermont2023.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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<!DOCTYPE html>
<html lang='en'>
<head>
<title>Vermont 2023</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8">
<link rel="shortcut icon" href="favicon.ico">
<!-- load Bootstrap CSS for mobile devices -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/css/bootstrap.min.css" integrity="sha512-t4GWSVZO1eC8BM339Xd7Uphw5s17a86tIZIj8qRxhnKub6WoyhnrxeCIMeAqBPgdZGlCcG2PrZjMc+Wr78+5Xg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<!-- Load Leaflet from CDN-->
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin="" />
<script src="https://unpkg.com/[email protected]/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script>
<!-- load jQuery -->
<script src="https://code.jquery.com/jquery-3.7.0.min.js" integrity="sha256-2Pmvv0kuTBOenSvLm6bvfBSSHrUJ+3A7x6P5Ebd07/g=" crossorigin="anonymous"></script>
<!-- Load Esri Leaflet from CDN -->
<script src="https://unpkg.com/esri-leaflet"></script>
<!-- load Font-Awesome -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.min.css">
<!-- load Leaflet.locatecontrol -->
<script src="https://cdn.jsdelivr.net/leaflet.locatecontrol/0.52.0/L.Control.Locate.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/leaflet.locatecontrol/0.52.0/L.Control.Locate.min.css"/>
<!-- load Leaflet-plugins to read GPX and KML -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-plugins/1.9.0/layer/vector/GPX.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-plugins/1.9.0/layer/vector/KML.min.js"></script>
<!-- Esri Leaflet Geocoder -->
<link rel="stylesheet" href="https://unpkg.com/esri-leaflet-geocoder/dist/esri-leaflet-geocoder.css">
<script src="https://unpkg.com/esri-leaflet-geocoder"></script>
<!-- load leaflet-hash from local directory -->
<script src="src/leaflet-hash.js"></script>
<!-- load distance markers with geometry from local directory; see also style.css -->
<!-- <script src="src/leaflet.geometryutil.js" type="text/javascript"></script>
<script src="src/leaflet-distance-marker.js" type="text/javascript"></script> -->
<!-- load leaflet-sidebar from local directory -->
<link rel="stylesheet" href="src/L.Control.Sidebar.css" />
<script src="src/L.Control.Sidebar.js"></script>
<!-- load custom css -->
<link rel="stylesheet" href="style.css"/>
</head>
<body>
<div id="map"></div>
<script>
var map = L.map('map', {
center: [43.16,-72.69],
zoom: 8,
zoomControl: false, // add later to reposition
scrollWheelZoom: false,
tap: false
});
map.attributionControl
.setPrefix("Download <a href='https://github.com/jackdougherty/bikemapcode' target='_blank'>Routes and Code on GitHub</a>, made with <a href='https://leafletjs.com' title='A JS library for interactive maps'>Leaflet</a>");
var controlLayers = L.control.layers( null, null, {
position: "topright",
collapsed: false
}).addTo(map);
new L.control.zoom({position: "topright"}).addTo(map);
L.control.scale().addTo(map);
var EsriStreets = L.tileLayer('https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}', {
attribution: 'Tiles © Esri'
}).addTo(map);
function onEachFeature(feature, layer) {
var popupText = feature.properties.name
+ "<br><a href='" + feature.properties.desc +"' target='_blank'>Read blog post</a> (opens new tab)";
layer.bindPopup(popupText);
}
$.getJSON("routes/vermont2023.geojson", function (data){
var geoJsonLayer = L.geoJson(data, {
style: {color: "blue", weight: 3 },
onEachFeature: onEachFeature
}).addTo(map);
});
// Define flickrURL endpoint with API explorer: insert your key, and tags= or text= to filter results; increase limit to 500 images; pull geo and thumbnail, small, large image links and title
var flickrApiKey = '25dcc9a8c7410551dcb0af48c778bde5';
var flickrURL = 'https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=' + flickrApiKey + '&user_id=56513965%40N06&tags=vermont2023&per_page=500&extras=geo%2Curl_t%2Curl_s%2Curl_l%2Ctitle&format=json&nojsoncallback=1';
// Define the flickr popup display
var popupHTML = function(photo){
var result = '';
result = '<strong>'+photo.title+'</strong><br>';
result += '<a href="'+photo.url_l+'" target="_blank">';
result += '<img src="'+photo.url_s+'"></a>';
result += '<br/><small>click image to enlarge in new tab</small>';
return result;
}
// Load photos from flickr JSON (insert your flickrURL above), display with clickable photo thumbnails
$.getJSON(flickrURL, function (data) {
// Create new layerGroup for the markers, with option to append ".addTo(map);" to display by default
var layerGroup = new L.LayerGroup();
layerGroup.addTo(map);
// Add layerGroup to your layer control and insert your label to appear in legend
controlLayers.addOverlay(layerGroup, 'Photos');
// Start a loop to insert flickr photo data into photoContent
for (var i = 0; i < data.photos.photo.length; i++) {
var photoContent = data.photos.photo[i];
var photoIcon = L.icon(
{iconUrl: photoContent.url_t,
iconSize: [photoContent.width_t * 0.5, photoContent.height_t * 0.5]} //reduces thumbnails 50%
);
var marker = new L.marker([photoContent.latitude, photoContent.longitude], {icon: photoIcon});
marker.bindPopup(popupHTML(photoContent));
// Add the marker to the layerGroup
marker.addTo(layerGroup);
}
});
</script>
</body>
</html>