mapboxgl.accessToken = 'pk.eyJ1IjoieXVuamllIiwiYSI6ImNpZnd0ZjZkczNjNHd0Mm0xcGRoc21nY28ifQ.8lFXo9aC9PfoKQF9ywWW-g'; //var sfmapbox = [-122.413692, 37.775712]; var sfmapbox = [-72, 4]; // sfmapbox = [-122,37]; var mylocation = sfmapbox; var taxon_active = 'Plantae'; var markers = {}; var marker_me; // Create a new dark theme map var map = new mapboxgl.Map({ container: 'map', // container id style: 'mapbox://styles/mapbox/outdoors-v9', //stylesheet location center: sfmapbox, // Center of USA zoom: 12, // starting zoom // minZoom: 11, }); map.on('load', function() { // Disable scroll in posts if (window.location.search.indexOf('embed') !== -1) map.scrollZoom.disable(); //Add controls for navigation, geocoding and geolocation var geocoder = new mapboxgl.Geocoder(); map.addControl(geocoder); map.addControl ( new mapboxgl.Navigation({ position: 'top-left' }) ); var geolocator = new mapboxgl.Geolocate({ position: 'top-left' }); map.addControl(geolocator); //go to SF and retrieve data mapMe(mylocation); getObservation(mylocation, taxon_active); //Toggle icons in the event of zoom change map.on('zoom', function() { var zoom = map.getZoom(); $('.marker').each(function() { checkZoom(this, zoom); }); }); //Interact with taxas buttons $('.button').on('click', function() { $('.button').removeClass('active'); $(this).addClass('active'); taxon_active = $(this).attr('id'); getObservation(mylocation, taxon_active); $('.mapboxgl-popup') ? $('.mapboxgl-popup').remove() : null; }); //Redo quest on location change geocoder.on('result', function(e) { // window.alert('new location: ' + e.result.center); mylocation = e.result.center; getObservation(mylocation, taxon_active); mapMe(mylocation); $('.mapboxgl-popup') ? $('.mapboxgl-popup').remove() : null; }); //Redo quest on geolocation geolocator.on('geolocate', function(position) { mylocation = [position.coords.longitude, position.coords.latitude]; map.zoomTo(12); mapMe(mylocation); getObservation(mylocation, taxon_active); }); //Mobile friendly $('#info').on('click', function() { if ( $('#introduction').is(':visible') ) { $('#introduction').hide(); $('#info').css('background-image', 'url(img/arrow_down.svg)'); $('#sidebar').css('height', '150px'); } else { $('#introduction').show(); $('#info').css("background-image", 'url(img/arrow_up.svg)'); $('#sidebar').css('height', '240px'); } }) }); // Map the user location using a marker called me function mapMe(location) { if (!document.getElementById('me')) { var me = document.createElement('div'); me.id = "me"; me.style.backgroundImage = 'url(img/icon_me.png)'; marker_me = new mapboxgl.Marker(me) .setLngLat(location) .addTo(map); } else { marker_me.setLngLat(location); } map.flyTo({ 'center': location, 'zoom': 12 }); } // Retrieve from API, map the markers to the map, and save relevant data in html. Pop-ups for marker on click. function getObservation(location, taxon) { $('.loading').show(); // clean up previous markers for (marker in markers) { markers[marker].remove(); } markers = {}; //create url var iNat_url = createURL(location, taxon); // get results from url try { iNat_results = $.getJSON(iNat_url, function() { // console.log("API results: ", iNat_results.responseJSON.results); // Update count in html description $('#count').html(iNat_results.responseJSON.features.length); // Used for marker change on zoom level var zoom = map.getZoom(); // Iterate through all API results iNat_results.responseJSON.features.forEach(function(marker) { // create an img element for the marker var el = document.createElement('div'); el.className = 'marker'; //img_url = marker.photos[0].url; img_url = marker.properties.imagen; // text description for popup var species = marker.species_guess ? marker.species_guess : 'Unknown'; //var user = marker.user.name ? marker.user.name : 'Anonymous'; var user = marker.properties.title ? marker.properties.title : 'Anonymous'; text = species + ' observed on ' + marker.properties.time + ' by ' + user + ' - '; text = text.charAt(0).toUpperCase() + text.substr(1); // img_url = img_url.replace("http", "https"); //$(el).attr('data-img', img_url); $(el).attr('data-img', img_url); // $(el).attr('data-taxon', taxon); //$(el).attr('data-text', text); $(el).attr('data-text', marker.properties.title); $(el).attr('html', marker.properties.description); //$(el).html(marker.properties.description); $(el).attr('data-link', marker.properties.uri); $(el).attr('data-link', marker.properties.imagen); //$(el).attr('data-latlon', marker.geojson.coordinates); $(el).attr('data-latlon', marker.geometry.coordinates); // Map to the map with markers for the current zoomlevel checkZoom(el, zoom); // add marker to map // markers[marker.id] = new mapboxgl.Marker(el) markers[marker.control] = new mapboxgl.Marker(el) // .setLngLat(marker.geojson.coordinates) .setLngLat(marker.geometry.coordinates) .addTo(map); }); $('.loading').hide(); // markers on click $('.marker').click(function(e) { e.stopPropagation(); var latlon = $(this).attr('data-latlon').split(","); latlon = [Number(latlon[0]), Number(latlon[1])]; var descripcion = $(this).attr('html');//.replace('square', 'medium'); $('.mapboxgl-popup') ? $('.mapboxgl-popup').remove() : null; var popup = new mapboxgl.Popup() .setLngLat(latlon) .setHTML(descripcion) .addTo(map); }); }); } catch (e) { window.alert("API not working properly :(") } } // Create the url for API request function createURL(location, taxon) { //url = ['https://api.inaturalist.org/v1/observations?geo=true&native=true&photos=true&lat=',location[1], '&lng=', location[0], '&radius=5&iconic_taxa=', taxon, '&order=desc&order_by=created_at'].join(''); url = ['http://localhost/tupali/archivos/74.geojson'].join(''); console.log("API url: ", url); return url; } // Check what zoom level for what markers, then map to map function checkZoom(marker, zoom) { var img; if (zoom < 12) { $(marker).addClass('sm'); // img = 'url(img/marker_' + $(marker).attr('data-taxon').toLowerCase() + '.png)'; // img = 'url(img/marker_' + $(marker).attr('data-taxon').toLowerCase() + '.png)'; img = 'url(https://tupale.co/milfs/images/secure/?file=150/da6d16547658ebc06c5378b30d1ee4bf.png)'; $(marker).css("background-image", img); } else { $(marker).removeClass('sm'); img = 'url(' + $(marker).attr('data-img') + ')'; // img = 'url(https://tupale.co/milfs/images/secure/?file=150/da6d16547658ebc06c5378b30d1ee4bf.png)'; $(marker).css("background-image", img); }; }