<!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>
