<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Create and style clusters</title> <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" /> <link rel="stylesheet" href="librerias/bootstrap/css/bootstrap.min.css" /> <script src="https://api.mapbox.com/mapbox-gl-js/v1.10.0/mapbox-gl.js"></script> <link href="https://api.mapbox.com/mapbox-gl-js/v1.10.0/mapbox-gl.css" rel="stylesheet" /> <script src="https://code.jquery.com/jquery-3.3.1.js" ></script> <script src='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-geocoder/v1.3.0/mapbox-gl-geocoder.js'></script> <link rel='stylesheet' href='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-geocoder/v1.3.0/mapbox-gl-geocoder.css' type='text/css' /> <link href='https://www.mapbox.com/base/latest/base.css' rel='stylesheet' /> <link rel='stylesheet' href='./milfs/css/mapero.css' type='text/css' /> <link rel="canonical" href="https://labs.mapbox.com/bites/00281/" > </head> <body> <div id="map"></div> <script> mapboxgl.accessToken = 'pk.eyJ1IjoiaHVtYW5vIiwiYSI6IlgyRTFNdFEifQ.OmQBXmcVg_zq-vMpr8P5vQ'; var map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/dark-v10', //center: [-103.59179687498357, 40.66995747013945], zoom: 3 }); map.on('load', function () { /* ///gatico var imagen = features[0].properties.imagen; // map.loadImage('https://upload.wikimedia.org/wikipedia/commons/7/7c/201408_cat.png', function (error, image) { map.loadImage(imagen, function (error, image) { if (error) throw error; map.addImage('cat', image); } ); */ /* map.addLayer({ 'id': 'points', 'type': 'symbol', 'source': 'earthquakes', 'layout': { 'icon-image': 'cat', 'icon-size': 0.25 } }); */ //fin gatico // Add a new source from our GeoJSON data and // set the 'cluster' option to true. GL-JS will // add the point_count property to your source data. map.addSource('earthquakes', { type: 'geojson', // Point to GeoJSON data. This example visualizes all M1.0+ earthquakes // from 12/22/15 to 1/21/16 as logged by USGS' Earthquake hazards program. // data: 'https://docs.mapbox.com/mapbox-gl-js/assets/earthquakes.geojson', data: 'http://localhost/tupali/archivos/74.geojson', cluster: true, clusterMaxZoom: 14, // Max zoom to cluster points on clusterRadius: 50 // Radius of each cluster when clustering points (defaults to 50) }); map.addLayer({ id: 'clusters', type: 'circle', source: 'earthquakes', filter: ['has', 'point_count'], paint: { // Use step expressions (https://docs.mapbox.com/mapbox-gl-js/style-spec/#expressions-step) // with three steps to implement three types of circles: // * Blue, 20px circles when point count is less than 100 // * Yellow, 30px circles when point count is between 100 and 750 // * Pink, 40px circles when point count is greater than or equal to 750 'circle-color': [ 'step', ['get', 'point_count'], '#51bbd6', 100, '#f1f075', 750, '#f28cb1' ], 'circle-radius': [ 'step', ['get', 'point_count'], 20, 100, 30, 750, 40 ] } }); map.addLayer({ id: 'cluster-count', type: 'symbol', source: 'earthquakes', filter: ['has', 'point_count'], layout: { 'text-field': '{point_count_abbreviated}', 'text-font': ['DIN Offc Pro Medium', 'Arial Unicode MS Bold'], 'text-size': 12 } }); map.addLayer({ id: 'unclustered-point', type: 'circle', source: 'earthquakes', filter: ['!', ['has', 'point_count']], paint: { 'circle-color': '#11b4da', 'circle-radius': 4, 'circle-stroke-width': 1, 'circle-stroke-color': '#fff' } }); // inspect a cluster on click map.on('click', 'clusters', function (e) { var features = map.queryRenderedFeatures(e.point, { layers: ['clusters'] }); var clusterId = features[0].properties.cluster_id; map.getSource('earthquakes').getClusterExpansionZoom( clusterId, function (err, zoom) { if (err) return; map.easeTo({ center: features[0].geometry.coordinates, zoom: zoom }); } ); }); // When a click event occurs on a feature in // the unclustered-point layer, open a popup at // the location of the feature, with // description HTML from its properties. map.on('click', 'unclustered-point', function (e) { var coordinates = e.features[0].geometry.coordinates.slice(); var mag = e.features[0].properties.mag; var descripcion = e.features[0].properties.description; var tsunami; if (e.features[0].properties.tsunami === 1) { tsunami = 'yes'; } else { tsunami = 'no'; } // Ensure that if the map is zoomed out such that // multiple copies of the feature are visible, the // popup appears over the copy being pointed to. while (Math.abs(e.lngLat.lng - coordinates[0]) > 180) { coordinates[0] += e.lngLat.lng > coordinates[0] ? 360 : -360; } new mapboxgl.Popup() .setLngLat(coordinates) // .setHTML( 'magnitude: ' + mag + '<br>Was there a tsunami?: ' + tsunami ) .setHTML( descripcion ) .addTo(map); }); map.on('mouseenter', 'clusters', function () { map.getCanvas().style.cursor = 'pointer'; }); map.on('mouseleave', 'clusters', function () { map.getCanvas().style.cursor = ''; }); }); </script> </body> </html>