Squashed commit of the following:
commit 07b27d00f135a521143154a2e77abdc1680b7d5b
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Thu Jan 26 14:59:35 2017 +0000
Fix styleci.io issue
commit 9e67f0a96484f8047f22d13abb4cd41c2e44b95d
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Thu Jan 26 08:28:22 2017 +0000
Remove some unused dependencies
commit 3c65070f3ff2aec10d821ae9f12821bc08e37d0a
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Wed Jan 25 18:00:10 2017 +0000
Compressed webpack/babel output
commit 694c43d1a9a6c8cb84d4cc789a6643b8d2863cec
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Wed Jan 25 17:59:27 2017 +0000
Let’s compress the es5 output
commit debffc0e41760fcc87e6d3768163e6ed8ea5d98c
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Wed Jan 25 17:45:05 2017 +0000
webpack/babel generated es5 assets
commit 1e978d6c5795f230ab320f94ad2fb98871bb6fa5
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Wed Jan 25 17:36:52 2017 +0000
Allow content of micropub form page to be persisted
commit 44fb8026962ef574700f07ef93d18bdb38cdedb2
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Wed Jan 25 17:35:58 2017 +0000
Name the micropub form
commit 732abaf561bf9d6392fe506d30d320e9c17b8226
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Wed Jan 25 17:34:39 2017 +0000
Add webStorage dependency
commit a4520085dfc673c5c3d940150358b8ecc3cdf022
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Mon Jan 16 12:32:33 2017 +0000
No need for a form id on the micropub form untill form autosave is added
commit a182be46a616d8e4085be5e24cbd3623f13cc28d
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Sat Jan 14 20:37:31 2017 +0000
Polyfill fetch and promise only in older browsers using unpkg.com
commit fdc044150dc8e2b755f93119b196ba0455bbbb83
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Fri Jan 13 15:46:05 2017 +0000
Generated js from webpack/babel
commit d24e6aa9fff38823a0c667e6f9e43dcb2ca179c4
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Fri Jan 13 15:45:32 2017 +0000
Lots of es6 to generate and add map, particularly the new note form
commit e7004a9fe475e07d43de905fb00d51c659878474
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Fri Jan 13 15:44:54 2017 +0000
Don’t link to commons.js, it aint being made at the moment
commit d4a2e4e143b644287f9da109eb2850c2361b2f20
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Fri Jan 13 15:43:27 2017 +0000
Temporarily don’t optimize JS
commit 05623de122da7d88642af60f85e5320a3ff651fc
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Wed Jan 11 14:24:15 2017 +0000
Add places to geojson data
commit 3eb1a4f29bb4263b9998a6f3f53abb7d1eeff520
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Wed Jan 11 14:22:53 2017 +0000
Use alertify.js to give relevant feedback to user
commit 6f123fa178d6cd19528130ebd78157c37eaab1a1
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Wed Jan 11 14:21:24 2017 +0000
Add alertify.css back
commit 89fca3b3aeb23ef97fb767514e0502298d1b83fd
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Wed Jan 11 14:19:56 2017 +0000
Webpack’d javascript
commit 94ab60f34079238ed6228bf6e789f14d7a09823b
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Mon Jan 9 09:10:17 2017 +0000
Webpack’d javascript
commit 1ca3a55a27c20ea08633b589023fe5ad1acb2b68
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Mon Jan 9 09:09:06 2017 +0000
Define const functions in order of usage
commit dc5535b32a357611860e0e98fcdc7d9c12c5d383
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Sun Jan 8 18:50:55 2017 +0000
Link to correct js files with defer option
commit 42f0e5b85825943ed148736e8e0fe22f5654ae90
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Sun Jan 8 18:50:18 2017 +0000
New webpacked es6 code
commit 300443bb0ce7b65bda1cf550fe5c7173a89edaf3
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Sun Jan 8 18:49:44 2017 +0000
Moving towards consolidated es6 map code
commit b1001760e03dd358f896feb90dd3acc0bc6728fc
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Sun Jan 8 18:44:40 2017 +0000
Don’t mangle the fetch function
commit 289e59025634b6d2569b73ae87e3ea4942034e33
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Sun Jan 8 18:43:47 2017 +0000
Updated yarn/npm dependencies
commit 3439b008e6bd96d8c45591c2a945c4ac246440ec
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Thu Dec 29 11:58:50 2016 +0000
Link to the correct assets on the new note page
commit 81dc83e362266028f8336ae5a27e92c8c8a2b6dc
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Thu Dec 29 11:57:46 2016 +0000
Add a map to the new note page
commit 5101ecd3dd60cd78e9a4bce81a5e60a2f575bc57
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Thu Dec 29 11:56:54 2016 +0000
Bundle common JS between entry points
commit 1f916adcfd1b07df388417b6bd800e109cec543c
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Thu Dec 29 11:55:31 2016 +0000
Add geojson to individual notes
commit 7a6ae8ca49b4ca49413ddb977f7b534f62b41c20
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Wed Dec 28 19:53:30 2016 +0000
Link to self-hosted mapbox-gl.css
commit 8be006ec2b738cbcebd06283e18c292b3efd7d16
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Wed Dec 28 19:52:41 2016 +0000
Use self-hosted mapbox-gl css, and a better default geojson title value
commit 5ec480842a2194a071b6a23ae181a8de5b8d47cd
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Wed Dec 28 17:09:46 2016 +0000
Access geojson data to markup map correctly
commit f2f1d7563f7b0cb7cc62658cc2817e56d2b47c31
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Wed Dec 28 17:09:07 2016 +0000
Generate geojson data for places
commit 9f8c9ba02f7ac37b4ab81aad2fb0cd2c077c45cd
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Fri Dec 23 11:55:10 2016 +0000
Use geojson to add a default you location point
commit 3da499d3ea6a214f8008d1b98f9b0c2f31ecba0c
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Thu Dec 22 22:29:18 2016 +0000
Some code cleaning
commit 39376097eda82491df272cc214d70ff3095d4873
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Thu Dec 22 22:21:29 2016 +0000
Use satellite streets view
commit f3db8f43fc403bc180e24d63e21c8311441cb2b0
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Thu Dec 22 16:46:03 2016 +0000
Semi working map state, still need to add own css, and add marker
commit 5f398a642b9db67f4b0733988c20138b37d2141d
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Thu Dec 22 13:17:04 2016 +0000
Reference new maps.js with bundled mapbox
commit bad97649a623c5552e6b607a1975aa2de8131191
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Thu Dec 22 13:16:25 2016 +0000
Add mapbox-gl again
commit 47484962e7620aa7a9a5153cfc03e2ba4030dd5c
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Wed Dec 21 00:03:23 2016 +0000
Early working version of maps.js
commit e53e0f39952a65996c09b06fd35918ffabed0de2
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Tue Dec 20 17:14:17 2016 +0000
Setup webpack
commit f930a1e2bd7d18809bd40d0cc22f9c3af75f1984
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Tue Dec 20 15:00:42 2016 +0000
Add webpack v2
commit b16e8d62db071155a8b5fb216d3d60ebf6fa9468
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Tue Dec 20 14:53:47 2016 +0000
Define default settings for babel
commit 97c13cb753e08d25aa48ecff579efa05173a2c81
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Tue Dec 20 14:53:31 2016 +0000
Add babeljs
commit dd9efc3b056cf96323d7f11acff0fb1ab137caef
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Tue Dec 20 14:49:23 2016 +0000
Remove old javascript
commit ab99c251ad
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Fri Dec 16 13:26:10 2016 +0000
update readme to reflect changes to how syndication targets need to be set
141 lines
5 KiB
JavaScript
141 lines
5 KiB
JavaScript
//mapbox-utils.js
|
|
import mapboxgl from 'mapbox-gl/dist/mapbox-gl.js';
|
|
import parseLocation from './parse-location';
|
|
import selectPlaceInForm from './select-place';
|
|
|
|
mapboxgl.accessToken = 'pk.eyJ1Ijoiam9ubnliYXJuZXMiLCJhIjoiY2l2cDhjYW04MDAwcjJ0cG1uZnhqcm82ayJ9.qA2zeVA-nsoMh9IFrd5KQw';
|
|
|
|
//define some functions to be used in the default function.
|
|
const titlecase = (string) => {
|
|
return string.split('-').map(([first,...rest]) => first.toUpperCase() + rest.join('').toLowerCase()).join(' ')
|
|
};
|
|
|
|
const addMapTypeOption = (map, menu, option, checked = false) => {
|
|
let input = document.createElement('input');
|
|
input.setAttribute('id', option);
|
|
input.setAttribute('type', 'radio');
|
|
input.setAttribute('name', 'toggle');
|
|
input.setAttribute('value', option);
|
|
if (checked == true) {
|
|
input.setAttribute('checked', 'checked');
|
|
}
|
|
input.addEventListener('click', function () {
|
|
map.setStyle('mapbox://styles/mapbox/' + option + '-v9');
|
|
});
|
|
let label = document.createElement('label');
|
|
label.setAttribute('for', option);
|
|
label.appendChild(document.createTextNode(titlecase(option)));
|
|
menu.appendChild(input);
|
|
menu.appendChild(label);
|
|
}
|
|
|
|
const makeMapMenu = (map) => {
|
|
let mapMenu = document.createElement('div');
|
|
mapMenu.classList.add('map-menu');
|
|
addMapTypeOption(map, mapMenu, 'streets', true);
|
|
addMapTypeOption(map, mapMenu, 'satellite-streets');
|
|
return mapMenu;
|
|
}
|
|
|
|
//the main function
|
|
export default function addMap(position = null, places = null) {
|
|
//console.log(position);
|
|
//console.log(places);
|
|
let mapDivs = document.querySelectorAll('.map');
|
|
for (let div of mapDivs) {
|
|
let dataLatitude = div.dataset.latitude;
|
|
let dataLongitude = div.dataset.longitude;
|
|
let dataId = div.dataset.id;
|
|
let data = window['geojson'+dataId];
|
|
if (data == null) {
|
|
data = {
|
|
"type": "FeatureCollection",
|
|
"features": [{
|
|
"type": "Feature",
|
|
"geometry": {
|
|
"type": "Point",
|
|
"coordinates": [dataLongitude, dataLatitude]
|
|
},
|
|
"properties": {
|
|
"title": "Current Location",
|
|
"icon": "circle-stroked",
|
|
"uri": "current-location"
|
|
}
|
|
}]
|
|
};
|
|
}
|
|
if (places != null) {
|
|
for (let place of places) {
|
|
let placeLongitude = parseLocation(place.location).longitude;
|
|
let placeLatitude = parseLocation(place.location).latitude;
|
|
data.features.push({
|
|
"type": "Feature",
|
|
"geometry": {
|
|
"type": "Point",
|
|
"coordinates": [placeLongitude, placeLatitude]
|
|
},
|
|
"properties": {
|
|
"title": place.name,
|
|
"icon": "circle",
|
|
"uri": place.slug
|
|
}
|
|
});
|
|
}
|
|
}
|
|
if (! dataLongitude) {
|
|
let dataLongitude = position.coords.longitude;
|
|
}
|
|
if (! dataLatitude) {
|
|
let dataLatitude = position.coords.latitude;
|
|
}
|
|
let map = new mapboxgl.Map({
|
|
container: div,
|
|
style: 'mapbox://styles/mapbox/streets-v9',
|
|
center: [dataLongitude, dataLatitude],
|
|
zoom: 15
|
|
});
|
|
if (position == null) {
|
|
map.scrollZoom.disable();
|
|
}
|
|
map.addControl(new mapboxgl.NavigationControl());
|
|
div.appendChild(makeMapMenu(map));
|
|
map.on('load', function () {
|
|
map.addSource('points', {
|
|
"type": "geojson",
|
|
"data": data
|
|
});
|
|
map.addLayer({
|
|
"id": "points",
|
|
"interactive": true,
|
|
"type": "symbol",
|
|
"source": "points",
|
|
"layout": {
|
|
"icon-image": "{icon}-15",
|
|
"text-field": "{title}",
|
|
"text-offset": [0, 1]
|
|
}
|
|
});
|
|
});
|
|
map.on('click', function (e) {
|
|
let features = map.queryRenderedFeatures(e.point, {
|
|
layer: ['points']
|
|
});
|
|
// if there are features within the given radius of the click event,
|
|
// fly to the location of the click event
|
|
if (features.length) {
|
|
// Get coordinates from the symbol and center the map on those coordinates
|
|
map.flyTo({center: features[0].geometry.coordinates});
|
|
selectPlaceInForm(features[0].properties.uri);
|
|
}
|
|
});
|
|
if (data.features && data.features.length > 1) {
|
|
let bounds = new mapboxgl.LngLatBounds();
|
|
for (let feature of data.features) {
|
|
bounds.extend(feature.geometry.coordinates);
|
|
}
|
|
map.fitBounds(bounds, { padding: 65});
|
|
}
|
|
|
|
return map;
|
|
}
|
|
}
|