mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			110 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<html>
 | 
						|
<head>
 | 
						|
	<title>Leaflet debug page</title>
 | 
						|
 | 
						|
	<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.5.1/leaflet.css" />
 | 
						|
	<!--[if lte IE 8]><link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.5.1/leaflet.ie.css" /><![endif]-->
 | 
						|
	<script src="http://cdn.leafletjs.com/leaflet-0.5.1/leaflet.js"></script>
 | 
						|
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
						|
	<link rel="stylesheet" href="../screen.css" />
 | 
						|
 | 
						|
	<link rel="stylesheet" href="../../dist/MarkerCluster.css" />
 | 
						|
	<link rel="stylesheet" href="../../dist/MarkerCluster.Default.css" />
 | 
						|
	<!--[if lte IE 8]><link rel="stylesheet" href="../../dist/MarkerCluster.Default.ie.css" /><![endif]-->
 | 
						|
	<script src="../../dist/leaflet.markercluster-src.js"></script>
 | 
						|
</head>
 | 
						|
<body style="font-family: verdana; font-size: 80%;">
 | 
						|
 | 
						|
	<div id="map"></div>
 | 
						|
	Click on the cluster to <strong>spiderfy</strong> and then <button id="moveTrain">move train</button><br/>
 | 
						|
	<br/>
 | 
						|
	<div style="color: #888;"><strong>Note:</strong> The marker on the old cluster position comes back on next move or on map scrolling.</div>
 | 
						|
 | 
						|
	<script type="text/javascript">
 | 
						|
 | 
						|
		var stationJson = {
 | 
						|
			"type":"FeatureCollection",
 | 
						|
			"features":[
 | 
						|
				{"type":"Feature","id":1,"properties":{"type":"station","name":"Appenzell"},"geometry":{"type":"Point","coordinates":[9.40991,47.32849]}},
 | 
						|
				{"type":"Feature","id":2,"properties":{"type":"station","name":"Gais"},"geometry":{"type":"Point","coordinates":[9.45107,47.36073]}},
 | 
						|
				{"type":"Feature","id":3,"properties":{"type":"station","name":"St. Gallen"},"geometry":{"type":"Point","coordinates":[9.36901,47.42208]}},
 | 
						|
				{"type":"Feature","id":4,"properties":{"type":"station","name":"Teufen"},"geometry":{"type":"Point","coordinates":[9.390178,47.390157]}}
 | 
						|
			]};
 | 
						|
 | 
						|
		var trainJson = [{
 | 
						|
			"type":"FeatureCollection",
 | 
						|
			"features":[
 | 
						|
				{"type":"Feature","id":10,"properties":{"type":"train","name":"Testtrain"},"geometry":{"type":"Point","coordinates":[9.36901,47.42208]}}
 | 
						|
			]},{
 | 
						|
			"type":"FeatureCollection",
 | 
						|
			"features":[
 | 
						|
				{"type":"Feature","id":10,"properties":{"type":"train","name":"Testtrain"},"geometry":{"type":"Point","coordinates":[9.390178,47.390157]}}
 | 
						|
			]},{
 | 
						|
			"type":"FeatureCollection",
 | 
						|
			"features":[
 | 
						|
				{"type":"Feature","id":10,"properties":{"type":"train","name":"Testtrain"},"geometry":{"type":"Point","coordinates":[9.45107,47.36073]}}
 | 
						|
			]},{
 | 
						|
			"type":"FeatureCollection",
 | 
						|
			"features":[
 | 
						|
				{"type":"Feature","id":10,"properties":{"type":"train","name":"Testtrain"},"geometry":{"type":"Point","coordinates":[9.40991,47.32849]}}
 | 
						|
			]}];
 | 
						|
 | 
						|
		var trainPosition = 0,
 | 
						|
			trainDirection = 'up';
 | 
						|
 | 
						|
		var cloudmadeLayer = L.tileLayer('http://{s}.tile.cloudmade.com/{key}/997/256/{z}/{x}/{y}.png', {
 | 
						|
				maxZoom: 18,
 | 
						|
				attribution: 'Map data © 2011 OpenStreetMap contributors, Imagery © 2011 CloudMade',
 | 
						|
				key: 'BC9A493B41014CAABB98F0471D759707'
 | 
						|
			}),
 | 
						|
			map = new L.Map('map', {zoom: 15, layers: [cloudmadeLayer]}),
 | 
						|
			markers = new L.MarkerClusterGroup({ spiderfyOnMaxZoom: false, showCoverageOnHover: false, zoomToBoundsOnClick: false });
 | 
						|
 | 
						|
		var stationGeoJsonLayer = L.geoJson(stationJson, {
 | 
						|
				onEachFeature: function (feature, layer) {
 | 
						|
					layer.bindPopup(feature.properties.name);
 | 
						|
				}
 | 
						|
			}),
 | 
						|
			trainGeoJsonLayer = L.geoJson(trainJson[trainPosition], {
 | 
						|
				onEachFeature: function (feature, layer) {
 | 
						|
					layer.bindPopup(feature.properties.name);
 | 
						|
				}
 | 
						|
			});
 | 
						|
 | 
						|
		// initial load
 | 
						|
		markers.addLayer(stationGeoJsonLayer);
 | 
						|
		markers.addLayer(trainGeoJsonLayer);
 | 
						|
		map.fitBounds(markers.getBounds());
 | 
						|
 | 
						|
		markers.on('clusterclick', function (a) {
 | 
						|
			a.layer.spiderfy();
 | 
						|
		});
 | 
						|
 | 
						|
		map.addLayer(markers);
 | 
						|
 | 
						|
		/**
 | 
						|
		 * Demonstration method that simulates that we got a new geoJson object with updated train positions.
 | 
						|
		 */
 | 
						|
		function moveTrain() {
 | 
						|
			if (trainDirection == 'up') trainPosition++;
 | 
						|
			else if (trainDirection == 'down') trainPosition--;
 | 
						|
			if (trainPosition == trainJson.length-1) trainDirection = 'down';
 | 
						|
			else if (trainPosition == 0) trainDirection = 'up';
 | 
						|
 | 
						|
			// build a new geoJson layer with the new train information
 | 
						|
			trainGeoJsonLayer = L.geoJson(trainJson[trainPosition], {});
 | 
						|
 | 
						|
			// update the cluster markers with both layers (stations first so that the station marker is always the first on spider.
 | 
						|
			markers.clearLayers();
 | 
						|
			markers.addLayer(stationGeoJsonLayer);
 | 
						|
			markers.addLayer(trainGeoJsonLayer);
 | 
						|
		}
 | 
						|
 | 
						|
		L.DomUtil.get('moveTrain').onclick = function () {
 | 
						|
			moveTrain();
 | 
						|
		};
 | 
						|
	</script>
 | 
						|
</body>
 | 
						|
</html>
 |