-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathweatherapp.html
More file actions
105 lines (101 loc) · 4.88 KB
/
weatherapp.html
File metadata and controls
105 lines (101 loc) · 4.88 KB
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
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Weather Map</title>
<script src="js/keys.js"></script>
<link href="css/weatherapp.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
<div class="container-fluid">
<a class="navbar-brand" href="#">Weather App</a>
<div class="collapse navbar-collapse justify-content-end" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="#">Current City <span id="current-city"></span></a>
</li>
</ul>
</div>
</div>
</nav>
<div class="search-container">
<p id="place"> Place
<input id="search-input" placeholder="Search for a location">
<button type="button" class="btn btn-primary btn-sm" id="search-button">find</button>
</p>
</div>
<div id="cards" class="d-flex"></div>
<div id='map'></div>
<script src="js/mapbox-geocoder.js"></script>
<script src='https://api.mapbox.com/mapbox-gl-js/v2.4.0/mapbox-gl.js'></script>
<link href='https://api.mapbox.com/mapbox-gl-js/v2.4.0/mapbox-gl.css' rel='stylesheet'/>
<script src="https://code.jquery.com/jquery-3.6.4.js" integrity="sha256-a9jBBRygX1Bh5lt8GZjXDzyOB+bWve9EiO7tROUtj/E="
crossorigin="anonymous"></script>
<script>
mapboxgl.accessToken = MAPBOX_TOKEN;
let map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/outdoors-v12',
zoom: 12,
center: [-96.80294985008125, 32.777609251915024]
});
function createCards(lon, lat) {
let html = ""
$.get("https://api.openweathermap.org/data/2.5/forecast?lat=" + lat + "&lon=" + lon + "&appid=" + OPEN_WEATHER_APPID, {
// location is Dallas Tx
units: "imperial"
}).done(function (weatherData) {
console.log(weatherData)
for (let i = 0; i <= 39; i += 8) {
console.log(weatherData.list[i])
weatherData.list[i].weather[0].description
weatherData.list[i].main.humidity
weatherData.list[i].wind.speed
weatherData.list[i].main.pressure
weatherData.list[i].dt_txt
const date = new Date(weatherData.list[i].dt_txt).toDateString();
html += "<div class='col'>"
html += "<div class='card mb-3' style='height: 100%; width: 250px'>"
html += "<div class='card-header text-center'>" + date + "</div>";
html += "<div class='card-body'>"
html += "<h5 class='card-title text-center'>" + weatherData.list[i].main.temp_max + "°F / " + weatherData.list[i].main.temp_min + "°F" + "</h5>";
html += "<p class='card-text text-center'>" + "<img src='http://openweathermap.org/img/w/" + weatherData.list[i].weather[0].icon + ".png'></img>" + "</p>";
html += "<p class='card-text'>" + "Description: " + weatherData.list[i].weather[0].description + "</p>";
html += "<p class='card-text'>" + "Humidity: " + weatherData.list[i].main.humidity + "</p>";
html += "<p class='card-text'>" + "Wind: " + weatherData.list[i].wind.speed + "</p>";
html += "<p class='card-text'>" + "Pressure: " + weatherData.list[i].main.pressure + "</p>";
html += "</div>";
html += "</div>";
html += "</div>";
}
$('#cards').html(html);
$('#current-city').html(weatherData.city.name)
});
}
createCards(-96.80294985008125, 32.777609251915024)
document.getElementById("search-button").addEventListener("click", function () {
let currentLocation = geocode(document.getElementById("search-input").value, MAPBOX_TOKEN);
currentLocation.then(function (results) {
map.setCenter([results[0], results[1]])
createCards(results[0], results[1])
})
})
map.on('click', function (e) {
let lat = e.lngLat.lat;
let lon = e.lngLat.lng;
createCards(lon, lat);
let marker = new mapboxgl.Marker()
.setLngLat([lon, lat])
.addTo(map);
})
map.addControl(new mapboxgl.NavigationControl());
</script>
</body>
</html>