forked from qwerty/tupali
labmap
This commit is contained in:
parent
589f5628a6
commit
836776c5b1
306
labmapero.php
Normal file
306
labmapero.php
Normal file
@ -0,0 +1,306 @@
|
|||||||
|
<?php session_start();
|
||||||
|
if(isset($_REQUEST['debug'])) {ini_set('display_errors', 'On');}
|
||||||
|
require ('milfs/xajax/xajax.inc.php');
|
||||||
|
$xajax = new xajax();
|
||||||
|
//require ('json.lab.php');
|
||||||
|
require ('milfs/funciones/funciones.php');
|
||||||
|
require ("milfs/funciones/conex.php");
|
||||||
|
include ('milfs/librerias/parsedown/Parsedown.php');
|
||||||
|
//require_once ('includes/markdown.php');
|
||||||
|
//require ('funciones/convert.php');
|
||||||
|
$xajax->processRequests();
|
||||||
|
//if($_REQUEST[id2] =='') {$agregar= $_REQUEST[id];}else {$agregar = $_REQUEST[id2];}
|
||||||
|
if(isset($_REQUEST['categoria']) AND isset($_REQUEST['buscar'])) {
|
||||||
|
$cadena_busqueda = "$_REQUEST[buscar]";
|
||||||
|
$_REQUEST['buscar'] = "$_REQUEST[categoria]:$_REQUEST[buscar]";
|
||||||
|
}
|
||||||
|
$formulario_nombre = remplacetas('form_id','id',$_REQUEST[id],'nombre',"","") ;
|
||||||
|
$formulario_descripcion = remplacetas('form_id','id',$_REQUEST[id],'descripcion',"","") ;
|
||||||
|
$descripcion_meta = preg_replace("[\n|\r|\n\r|\t]",'', strip_tags($formulario_descripcion[0]));
|
||||||
|
$agregar_nombre = remplacetas('form_id','id',$agregar,'nombre',"","") ;
|
||||||
|
$id_empresa = remplacetas('form_id','id',$_REQUEST[id],'id_empresa',"","") ;
|
||||||
|
$twitter = remplacetas('empresa','id',"$id_empresa[0]",'twitter','',"","") ;
|
||||||
|
if($twitter[0] =="") {$twitter[0] ="@tupaleCo";}
|
||||||
|
$logo = remplacetas('empresa','id',"$id_empresa[0]",'imagen','',"","") ;
|
||||||
|
$razon_social = remplacetas('empresa','id',"$id_empresa[0]",'razon_social','',"","") ;
|
||||||
|
$campos_formulario = input_campos("$_REQUEST[id]","categoria");
|
||||||
|
$uri = "$_SERVER[SERVER_NAME]/$_SERVER[REQUEST_URI]";
|
||||||
|
$background_imagen = buscar_imagen("$_REQUEST[id]","","","$id_empresa");
|
||||||
|
$plantilla ="mapa";
|
||||||
|
$categorias = lista_categorias($_REQUEST['id'],'','mapa') ;
|
||||||
|
|
||||||
|
|
||||||
|
$buscador ="
|
||||||
|
<form action='?id='$_REQUEST[id]' method='get'>
|
||||||
|
|
||||||
|
<input type='hidden' id='id' name='id' value='$_REQUEST[id]' >
|
||||||
|
$campos_formulario'
|
||||||
|
<div id='div_campos'></div>
|
||||||
|
|
||||||
|
<input type='text' id='buscar' name='buscar' class='form-control ' placeholder='Buscar' >
|
||||||
|
<br>
|
||||||
|
<input type='submit' class='btn btn-info btn-block ' value='Buscar'>
|
||||||
|
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<hr>
|
||||||
|
";
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head >
|
||||||
|
<title><?php echo "$formulario_nombre[0] / $cadena_busqueda" ?> tupale.co</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<!-- <meta name="viewport" content="user-scalable=no, width=device-width, maximum-scale=1, initial-scale=1"> -->
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<!-- <meta name="viewport" content="width=device-width, initial-scale=1"> -->
|
||||||
|
<meta name="description" content="">
|
||||||
|
<meta NAME="Language" CONTENT="Spanish">
|
||||||
|
<meta NAME="Revisit" CONTENT="1 days">
|
||||||
|
<meta NAME="Distribution" CONTENT="Global">
|
||||||
|
<meta NAME="Robots" CONTENT="All">
|
||||||
|
<meta name="twitter:card" content="summary">
|
||||||
|
<meta name="twitter:site" content="<?php echo $twitter[0]; ?>">
|
||||||
|
<meta name="twitter:creator" content="@qwerty_co">
|
||||||
|
<meta name="twitter:url" content="<?php echo $uri ; ?>">
|
||||||
|
<meta name="twitter:title" content="<?php echo "$formulario_nombre[0] / $cadena_busqueda" ?> tupale.co">
|
||||||
|
<meta name="twitter:description" content=" <?php echo $descripcion_meta; ?>">
|
||||||
|
<meta name="twitter:image" content="<?php echo "$_SESSION[url]images/secure/?file=full/$background_imagen"; ?>">
|
||||||
|
<meta property="og:type" content="article">
|
||||||
|
<meta property="og:title" content="<?php echo "$formulario_nombre[0] / $cadena_busqueda" ?> tupale.co" />
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:url" content="<?php echo "$uri"; ?>" />
|
||||||
|
<meta property="og:image" content="<?php echo "$_SESSION[url]images/secure/?file=full/$background_imagen"; ?>" />
|
||||||
|
<meta property="og:site_name" content="<?php echo $razon_social[0]; ?>" />
|
||||||
|
<meta property="og:description" content=" <?php echo $descripcion_meta; ?>" />
|
||||||
|
<link rel="shortcut icon" href="<?php echo "milfs/images/secure/?file=150/$logo[0]"; ?>">
|
||||||
|
<?php $xajax->printJavascript("milfs/xajax/"); ?>
|
||||||
|
<link rel="shortcut icon" href="favicon-152.png">
|
||||||
|
<link rel="apple-touch-icon-precomposed" href="favicon-152.png">
|
||||||
|
<link rel="stylesheet" href="librerias/leaflet/leaflet.css" />
|
||||||
|
<?php
|
||||||
|
$otro_json = remplacetas('form_parametrizacion','campo',$_REQUEST[id],'descripcion'," tabla='form_id' and opcion = 'json'","","") ;;
|
||||||
|
//$obj = file_get_contents('https://www.kleper.net/wiki/RutaPazTerritorial.geojson');
|
||||||
|
$ids = json_decode($otro_json[0]);
|
||||||
|
foreach ($ids as $clave => $valor) {
|
||||||
|
if($valor !=""){
|
||||||
|
|
||||||
|
|
||||||
|
$obj=file_get_contents("$valor[0]");
|
||||||
|
$li .="<script>var geojsonAuxiliar_$clave = $obj ;</script>";
|
||||||
|
$layer .= "
|
||||||
|
var geojsonAux_$clave = L.geoJson(geojsonAuxiliar_$clave, {
|
||||||
|
|
||||||
|
pointToLayer: function(feature, latlng) {
|
||||||
|
var smallIcon = new L.Icon({
|
||||||
|
iconSize: [100, 100],
|
||||||
|
iconAnchor: [13, 27],
|
||||||
|
popupAnchor: [1, -24],
|
||||||
|
/*iconUrl: feature.properties.icon.iconUrl*/
|
||||||
|
iconUrl: 'https://tupale.co/milfs/images/secure/?file=150/da6d16547658ebc06c5378b30d1ee4bf.png'
|
||||||
|
|
||||||
|
});
|
||||||
|
return L.marker(latlng, {icon: smallIcon});
|
||||||
|
},
|
||||||
|
|
||||||
|
onEachFeature: function(feature, layer) {
|
||||||
|
var popupText = feature.properties.description
|
||||||
|
|
||||||
|
|
||||||
|
layer.bindPopup(popupText); }
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
";
|
||||||
|
$add_layer .= "markers.addLayer(geojsonAux_$clave);";
|
||||||
|
$capas_nombre .="geojsonAux_$clave,";
|
||||||
|
$capas .= "{
|
||||||
|
'$clave': geojsonAux_$clave
|
||||||
|
};";
|
||||||
|
$overlays ="
|
||||||
|
var overlays = $capas ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo $li;
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||||
|
<link href="librerias/font-awesome/css/font-awesome.min.css" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="librerias/leaflet/css/leaflet-sidebar.css" />
|
||||||
|
<link rel="stylesheet" href="librerias/bootstrap/css/bootstrap.min.css" />
|
||||||
|
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
html, body, #map {
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body onload="">
|
||||||
|
|
||||||
|
<!-- optionally define the sidebar content via HTML markup -->
|
||||||
|
<div id="sidebar" class="leaflet-sidebar collapsed">
|
||||||
|
|
||||||
|
<!-- nav tabs -->
|
||||||
|
<div class="leaflet-sidebar-tabs" onmouseover="sidebar.open('home')";>
|
||||||
|
<!-- top aligned tabs -->
|
||||||
|
<ul role="tablist">
|
||||||
|
<li><a href="#home" role="tab"><i class="fa fa-bars active"></i></a></li>
|
||||||
|
<li><a href="#search" role="tab"><i class="fa fa-search active"></i></a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<!-- bottom aligned tabs -->
|
||||||
|
|
||||||
|
<ul role="tablist">
|
||||||
|
<li><a href="https://tupale.co"><img title='Powered by Tupale.co' alt='http://tupale.co' class='img img-responsive' src='https://tupale.co/images/icons/icon-152x152.png'></a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- panel content -->
|
||||||
|
<div class="leaflet-sidebar-content">
|
||||||
|
<div class="leaflet-sidebar-pane" id="home">
|
||||||
|
<h1 class="leaflet-sidebar-header">
|
||||||
|
<span id='formulario_titulo_mapa'><?php echo $formulario_nombre[0] ?></span>
|
||||||
|
<span class="leaflet-sidebar-close"><i class="fa fa-caret-left"></i></span>
|
||||||
|
</h1>
|
||||||
|
<hr>
|
||||||
|
<label id='formulario_descripcion_mapa'><?php echo $formulario_descripcion[0] ?></label>
|
||||||
|
<center>
|
||||||
|
<a href='/g<?php echo $_REQUEST[id]; ?>' target='_blank' class="btn btn-default btn-xs"><i class="fa fa-plus-circle" aria-hidden="true"></i> Agregar</a> <br>
|
||||||
|
<span class="label label-warning">Despues de agregar, recarga el mapa</span>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<?php echo $categorias; ?>
|
||||||
|
</div>
|
||||||
|
<div class="leaflet-sidebar-pane" id="search">
|
||||||
|
<label>Buscar en el Mapa</label>
|
||||||
|
<?php echo $buscador; ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="map"></div>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="librerias/leaflet/leaflet.js" crossorigin=""></script>
|
||||||
|
<script src="librerias/leaflet/leaflet-providers.js"></script>
|
||||||
|
<script src="librerias/leaflet/js/leaflet-sidebar.js"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="librerias/leaflet/dist/MarkerCluster.css" />
|
||||||
|
<link rel="stylesheet" href="librerias/leaflet/dist/MarkerCluster.Default.css" />
|
||||||
|
<script src="librerias/leaflet/dist/leaflet.markercluster-src.js"></script>
|
||||||
|
<script src="librerias/jquery/jquery-2.1.4.min.js"></script>
|
||||||
|
<script type="text/javascript" src="milfs/geojson.js.php?id=<?php echo $_REQUEST['id'] ?>&buscar=<?php echo $_REQUEST['buscar'] ?>&item=<?php echo $_REQUEST['item'] ?>"></script>
|
||||||
|
<script src="https://unpkg.com/leaflet-responsive-popup@0.6.4/leaflet.responsive.popup.js"></script>
|
||||||
|
<link rel="stylesheet" href="https://unpkg.com/leaflet-responsive-popup@0.6.4/leaflet.responsive.popup.css" />
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// standard leaflet map setup
|
||||||
|
var map = L.map('map');
|
||||||
|
// map.setView([51.2, 7], 9);
|
||||||
|
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
||||||
|
maxZoom: 19,
|
||||||
|
attribution: "Map data © OpenStreetMap contributors <a href='https://tupale.co'>Powered by Tupale.co</a>"
|
||||||
|
}).addTo(map);
|
||||||
|
|
||||||
|
|
||||||
|
var geojson = L.geoJson(geojsonSample, {
|
||||||
|
|
||||||
|
pointToLayer: function(feature, latlng) {
|
||||||
|
var smallIcon = new L.Icon({
|
||||||
|
iconSize: [50, 50],
|
||||||
|
iconAnchor: [13, 27],
|
||||||
|
popupAnchor: [1, -24],
|
||||||
|
autoPanPadding: [30,30],
|
||||||
|
|
||||||
|
iconUrl: feature.properties.icon.iconUrl
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
return L.marker(latlng, {icon: smallIcon });
|
||||||
|
},
|
||||||
|
|
||||||
|
onEachFeature: function(feature, layer) {
|
||||||
|
layer._leaflet_id = feature.properties.control;
|
||||||
|
|
||||||
|
var popupText = L.responsivePopup().setContent(feature.properties.description );
|
||||||
|
layer.bindPopup(popupText, {
|
||||||
|
maxWidth: 200
|
||||||
|
});
|
||||||
|
layer.bindTooltip(feature.properties.title).openTooltip();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
<?php echo $layer; ?>
|
||||||
|
|
||||||
|
// markers.addLayer(geojsonAux);
|
||||||
|
|
||||||
|
|
||||||
|
var markers = L.markerClusterGroup();
|
||||||
|
// var markers = L.layerGroup();
|
||||||
|
|
||||||
|
|
||||||
|
markers.addLayer(geojson).addTo(map);
|
||||||
|
|
||||||
|
<?php echo $add_layer; ?>
|
||||||
|
map.fitBounds(geojson.getBounds().pad(Math.sqrt(2) /4));
|
||||||
|
|
||||||
|
// create the sidebar instance and add it to the map
|
||||||
|
var sidebar = L.control.sidebar({ container: 'sidebar', autopan: true })
|
||||||
|
.addTo(map)
|
||||||
|
.open('home');
|
||||||
|
|
||||||
|
function openMarkerPopup(e){
|
||||||
|
const markerID = e.id;
|
||||||
|
const marker = markers.getLayer(markerID);
|
||||||
|
marker.openPopup();
|
||||||
|
}
|
||||||
|
|
||||||
|
// add panels dynamically to the sidebar
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
sidebar.on('content', function (ev) {
|
||||||
|
switch (ev.id) {
|
||||||
|
|
||||||
|
case 'autopan':
|
||||||
|
sidebar.options.autopan = true;
|
||||||
|
break;
|
||||||
|
default:sidebar.options.autopan = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<script language="JavaScript">
|
||||||
|
if (screen.width<1024)
|
||||||
|
//codigo resolución pequeña
|
||||||
|
sidebar.close();
|
||||||
|
else
|
||||||
|
|
||||||
|
sidebar.open();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
5
librerias/leaflet/dist/WhereAreTheJavascriptFiles.txt
vendored
Normal file
5
librerias/leaflet/dist/WhereAreTheJavascriptFiles.txt
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
We don't ship the .js files in the git master branch.
|
||||||
|
They are only present in version tags and in npm.
|
||||||
|
|
||||||
|
See how to get the JS files here: https://github.com/Leaflet/Leaflet.markercluster#using-the-plugin
|
||||||
|
Or how to build them: https://github.com/Leaflet/Leaflet.markercluster#building-testing-and-linting-scripts
|
150
librerias/leaflet/dist/leaflet.markercluster-src.js
vendored
150
librerias/leaflet/dist/leaflet.markercluster-src.js
vendored
@ -1,17 +1,25 @@
|
|||||||
/*
|
/*
|
||||||
Leaflet.markercluster, Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps.
|
* Leaflet.markercluster 1.4.1+master.37ab9a2,
|
||||||
https://github.com/Leaflet/Leaflet.markercluster
|
* Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps.
|
||||||
(c) 2012-2013, Dave Leaver, smartrak
|
* https://github.com/Leaflet/Leaflet.markercluster
|
||||||
*/
|
* (c) 2012-2017, Dave Leaver, smartrak
|
||||||
(function (window, document, undefined) {/*
|
*/
|
||||||
|
(function (global, factory) {
|
||||||
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||||
|
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
||||||
|
(factory((global.Leaflet = global.Leaflet || {}, global.Leaflet.markercluster = global.Leaflet.markercluster || {})));
|
||||||
|
}(this, (function (exports) { 'use strict';
|
||||||
|
|
||||||
|
/*
|
||||||
* L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within
|
* L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within
|
||||||
*/
|
*/
|
||||||
|
|
||||||
L.MarkerClusterGroup = L.FeatureGroup.extend({
|
var MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({
|
||||||
|
|
||||||
options: {
|
options: {
|
||||||
maxClusterRadius: 80, //A cluster will cover at most this many pixels from its center
|
maxClusterRadius: 80, //A cluster will cover at most this many pixels from its center
|
||||||
iconCreateFunction: null,
|
iconCreateFunction: null,
|
||||||
|
clusterPane: L.Marker.prototype.options.pane,
|
||||||
|
|
||||||
spiderfyOnMaxZoom: true,
|
spiderfyOnMaxZoom: true,
|
||||||
showCoverageOnHover: true,
|
showCoverageOnHover: true,
|
||||||
@ -420,6 +428,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
//If we aren't on the map (yet), blow away the markers we know of
|
//If we aren't on the map (yet), blow away the markers we know of
|
||||||
if (!this._map) {
|
if (!this._map) {
|
||||||
this._needsClustering = [];
|
this._needsClustering = [];
|
||||||
|
this._needsRemoving = [];
|
||||||
delete this._gridClusters;
|
delete this._gridClusters;
|
||||||
delete this._gridUnclustered;
|
delete this._gridUnclustered;
|
||||||
}
|
}
|
||||||
@ -502,7 +511,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
//Overrides LayerGroup.getLayer, WARNING: Really bad performance
|
//Overrides LayerGroup.getLayer, WARNING: Really bad performance
|
||||||
getLayer: function (id) {
|
getLayer: function (id) {
|
||||||
var result = null;
|
var result = null;
|
||||||
|
|
||||||
id = parseInt(id, 10);
|
id = parseInt(id, 10);
|
||||||
|
|
||||||
this.eachLayer(function (l) {
|
this.eachLayer(function (l) {
|
||||||
@ -677,7 +686,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
_removeFromGridUnclustered: function (marker, z) {
|
_removeFromGridUnclustered: function (marker, z) {
|
||||||
var map = this._map,
|
var map = this._map,
|
||||||
gridUnclustered = this._gridUnclustered,
|
gridUnclustered = this._gridUnclustered,
|
||||||
minZoom = this._map.getMinZoom();
|
minZoom = Math.floor(this._map.getMinZoom());
|
||||||
|
|
||||||
for (; z >= minZoom; z--) {
|
for (; z >= minZoom; z--) {
|
||||||
if (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) {
|
if (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) {
|
||||||
@ -711,12 +720,13 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_childMarkerDragEnd: function (e) {
|
_childMarkerDragEnd: function (e) {
|
||||||
if (e.target.__dragStart) {
|
var dragStart = e.target.__dragStart;
|
||||||
this._moveChild(e.target, e.target.__dragStart, e.target._latlng);
|
|
||||||
}
|
|
||||||
delete e.target.__dragStart;
|
delete e.target.__dragStart;
|
||||||
|
if (dragStart) {
|
||||||
|
this._moveChild(e.target, dragStart, e.target._latlng);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
//Internal function for removing a marker from everything.
|
//Internal function for removing a marker from everything.
|
||||||
//dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions)
|
//dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions)
|
||||||
@ -725,7 +735,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
gridUnclustered = this._gridUnclustered,
|
gridUnclustered = this._gridUnclustered,
|
||||||
fg = this._featureGroup,
|
fg = this._featureGroup,
|
||||||
map = this._map,
|
map = this._map,
|
||||||
minZoom = this._map.getMinZoom();
|
minZoom = Math.floor(this._map.getMinZoom());
|
||||||
|
|
||||||
//Remove the marker from distance clusters it might be in
|
//Remove the marker from distance clusters it might be in
|
||||||
if (removeFromDistanceGrid) {
|
if (removeFromDistanceGrid) {
|
||||||
@ -918,7 +928,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
|
|
||||||
var newBounds = this._getExpandedVisibleBounds();
|
var newBounds = this._getExpandedVisibleBounds();
|
||||||
|
|
||||||
this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, this._zoom, newBounds);
|
this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, newBounds);
|
||||||
this._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds);
|
this._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds);
|
||||||
|
|
||||||
this._currentShownBounds = newBounds;
|
this._currentShownBounds = newBounds;
|
||||||
@ -926,11 +936,11 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_generateInitialClusters: function () {
|
_generateInitialClusters: function () {
|
||||||
var maxZoom = this._map.getMaxZoom(),
|
var maxZoom = Math.ceil(this._map.getMaxZoom()),
|
||||||
minZoom = this._map.getMinZoom(),
|
minZoom = Math.floor(this._map.getMinZoom()),
|
||||||
radius = this.options.maxClusterRadius,
|
radius = this.options.maxClusterRadius,
|
||||||
radiusFn = radius;
|
radiusFn = radius;
|
||||||
|
|
||||||
//If we just set maxClusterRadius to a single number, we need to create
|
//If we just set maxClusterRadius to a single number, we need to create
|
||||||
//a simple function to return that number. Otherwise, we just have to
|
//a simple function to return that number. Otherwise, we just have to
|
||||||
//use the function we've passed in.
|
//use the function we've passed in.
|
||||||
@ -938,13 +948,13 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
radiusFn = function () { return radius; };
|
radiusFn = function () { return radius; };
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.options.disableClusteringAtZoom) {
|
if (this.options.disableClusteringAtZoom !== null) {
|
||||||
maxZoom = this.options.disableClusteringAtZoom - 1;
|
maxZoom = this.options.disableClusteringAtZoom - 1;
|
||||||
}
|
}
|
||||||
this._maxZoom = maxZoom;
|
this._maxZoom = maxZoom;
|
||||||
this._gridClusters = {};
|
this._gridClusters = {};
|
||||||
this._gridUnclustered = {};
|
this._gridUnclustered = {};
|
||||||
|
|
||||||
//Set up DistanceGrids for each zoom
|
//Set up DistanceGrids for each zoom
|
||||||
for (var zoom = maxZoom; zoom >= minZoom; zoom--) {
|
for (var zoom = maxZoom; zoom >= minZoom; zoom--) {
|
||||||
this._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom));
|
this._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom));
|
||||||
@ -959,7 +969,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
_addLayer: function (layer, zoom) {
|
_addLayer: function (layer, zoom) {
|
||||||
var gridClusters = this._gridClusters,
|
var gridClusters = this._gridClusters,
|
||||||
gridUnclustered = this._gridUnclustered,
|
gridUnclustered = this._gridUnclustered,
|
||||||
minZoom = this._map.getMinZoom(),
|
minZoom = Math.floor(this._map.getMinZoom()),
|
||||||
markerPoint, z;
|
markerPoint, z;
|
||||||
|
|
||||||
if (this.options.singleMarkerMode) {
|
if (this.options.singleMarkerMode) {
|
||||||
@ -1058,7 +1068,7 @@ L.MarkerClusterGroup = L.FeatureGroup.extend({
|
|||||||
if (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) { //Zoom in, split
|
if (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) { //Zoom in, split
|
||||||
this._animationStart();
|
this._animationStart();
|
||||||
//Remove clusters now off screen
|
//Remove clusters now off screen
|
||||||
this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, this._zoom, this._getExpandedVisibleBounds());
|
this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, this._getExpandedVisibleBounds());
|
||||||
|
|
||||||
this._animationZoomIn(this._zoom, mapZoom);
|
this._animationZoomIn(this._zoom, mapZoom);
|
||||||
|
|
||||||
@ -1182,14 +1192,14 @@ L.MarkerClusterGroup.include({
|
|||||||
//Do nothing...
|
//Do nothing...
|
||||||
},
|
},
|
||||||
_animationZoomIn: function (previousZoomLevel, newZoomLevel) {
|
_animationZoomIn: function (previousZoomLevel, newZoomLevel) {
|
||||||
this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, previousZoomLevel);
|
this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);
|
||||||
this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
|
this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
|
||||||
|
|
||||||
//We didn't actually animate, but we use this event to mean "clustering animations have finished"
|
//We didn't actually animate, but we use this event to mean "clustering animations have finished"
|
||||||
this.fire('animationend');
|
this.fire('animationend');
|
||||||
},
|
},
|
||||||
_animationZoomOut: function (previousZoomLevel, newZoomLevel) {
|
_animationZoomOut: function (previousZoomLevel, newZoomLevel) {
|
||||||
this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, previousZoomLevel);
|
this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);
|
||||||
this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
|
this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
|
||||||
|
|
||||||
//We didn't actually animate, but we use this event to mean "clustering animations have finished"
|
//We didn't actually animate, but we use this event to mean "clustering animations have finished"
|
||||||
@ -1210,7 +1220,7 @@ L.MarkerClusterGroup.include({
|
|||||||
_animationZoomIn: function (previousZoomLevel, newZoomLevel) {
|
_animationZoomIn: function (previousZoomLevel, newZoomLevel) {
|
||||||
var bounds = this._getExpandedVisibleBounds(),
|
var bounds = this._getExpandedVisibleBounds(),
|
||||||
fg = this._featureGroup,
|
fg = this._featureGroup,
|
||||||
minZoom = this._map.getMinZoom(),
|
minZoom = Math.floor(this._map.getMinZoom()),
|
||||||
i;
|
i;
|
||||||
|
|
||||||
this._ignoreMove = true;
|
this._ignoreMove = true;
|
||||||
@ -1281,7 +1291,7 @@ L.MarkerClusterGroup.include({
|
|||||||
//Need to add markers for those that weren't on the map before but are now
|
//Need to add markers for those that weren't on the map before but are now
|
||||||
this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
|
this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
|
||||||
//Remove markers that were on the map before but won't be now
|
//Remove markers that were on the map before but won't be now
|
||||||
this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, previousZoomLevel, this._getExpandedVisibleBounds());
|
this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel, this._getExpandedVisibleBounds());
|
||||||
},
|
},
|
||||||
|
|
||||||
_animationAddLayer: function (layer, newCluster) {
|
_animationAddLayer: function (layer, newCluster) {
|
||||||
@ -1319,10 +1329,10 @@ L.MarkerClusterGroup.include({
|
|||||||
// Private methods for animated versions.
|
// Private methods for animated versions.
|
||||||
_animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) {
|
_animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) {
|
||||||
var bounds = this._getExpandedVisibleBounds(),
|
var bounds = this._getExpandedVisibleBounds(),
|
||||||
minZoom = this._map.getMinZoom();
|
minZoom = Math.floor(this._map.getMinZoom());
|
||||||
|
|
||||||
//Animate all of the markers in the clusters to move to their cluster center point
|
//Animate all of the markers in the clusters to move to their cluster center point
|
||||||
cluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, previousZoomLevel + 1, newZoomLevel);
|
cluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, minZoom, previousZoomLevel + 1, newZoomLevel);
|
||||||
|
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
@ -1346,7 +1356,7 @@ L.MarkerClusterGroup.include({
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
cluster._recursively(bounds, newZoomLevel, minZoom, function (c) {
|
cluster._recursively(bounds, newZoomLevel, minZoom, function (c) {
|
||||||
c._recursivelyRemoveChildrenFromMap(bounds, previousZoomLevel + 1);
|
c._recursivelyRemoveChildrenFromMap(bounds, minZoom, previousZoomLevel + 1);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
me._animationEnd();
|
me._animationEnd();
|
||||||
@ -1375,12 +1385,13 @@ L.markerClusterGroup = function (options) {
|
|||||||
return new L.MarkerClusterGroup(options);
|
return new L.MarkerClusterGroup(options);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var MarkerCluster = L.MarkerCluster = L.Marker.extend({
|
||||||
|
options: L.Icon.prototype.options,
|
||||||
|
|
||||||
L.MarkerCluster = L.Marker.extend({
|
|
||||||
initialize: function (group, zoom, a, b) {
|
initialize: function (group, zoom, a, b) {
|
||||||
|
|
||||||
L.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0), { icon: this });
|
L.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0),
|
||||||
|
{ icon: this, pane: group.options.clusterPane });
|
||||||
|
|
||||||
this._group = group;
|
this._group = group;
|
||||||
this._zoom = zoom;
|
this._zoom = zoom;
|
||||||
@ -1402,7 +1413,7 @@ L.MarkerCluster = L.Marker.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
//Recursively retrieve all child markers of this cluster
|
//Recursively retrieve all child markers of this cluster
|
||||||
getAllChildMarkers: function (storageArray) {
|
getAllChildMarkers: function (storageArray, ignoreDraggedMarker) {
|
||||||
storageArray = storageArray || [];
|
storageArray = storageArray || [];
|
||||||
|
|
||||||
for (var i = this._childClusters.length - 1; i >= 0; i--) {
|
for (var i = this._childClusters.length - 1; i >= 0; i--) {
|
||||||
@ -1410,6 +1421,9 @@ L.MarkerCluster = L.Marker.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (var j = this._markers.length - 1; j >= 0; j--) {
|
for (var j = this._markers.length - 1; j >= 0; j--) {
|
||||||
|
if (ignoreDraggedMarker && this._markers[j].__dragStart) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
storageArray.push(this._markers[j]);
|
storageArray.push(this._markers[j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1422,7 +1436,7 @@ L.MarkerCluster = L.Marker.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
//Zoom to the minimum of showing all of the child markers, or the extents of this cluster
|
//Zoom to the minimum of showing all of the child markers, or the extents of this cluster
|
||||||
zoomToBounds: function () {
|
zoomToBounds: function (fitBoundsOptions) {
|
||||||
var childClusters = this._childClusters.slice(),
|
var childClusters = this._childClusters.slice(),
|
||||||
map = this._group._map,
|
map = this._group._map,
|
||||||
boundsZoom = map.getBoundsZoom(this._bounds),
|
boundsZoom = map.getBoundsZoom(this._bounds),
|
||||||
@ -1445,7 +1459,7 @@ L.MarkerCluster = L.Marker.extend({
|
|||||||
} else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead
|
} else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead
|
||||||
this._group._map.setView(this._latlng, mapZoom + 1);
|
this._group._map.setView(this._latlng, mapZoom + 1);
|
||||||
} else {
|
} else {
|
||||||
this._group._map.fitBounds(this._bounds);
|
this._group._map.fitBounds(this._bounds, fitBoundsOptions);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -1619,8 +1633,8 @@ L.MarkerCluster = L.Marker.extend({
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
_recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, previousZoomLevel, newZoomLevel) {
|
_recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, mapMinZoom, previousZoomLevel, newZoomLevel) {
|
||||||
this._recursively(bounds, newZoomLevel, this._group._map.getMinZoom(),
|
this._recursively(bounds, newZoomLevel, mapMinZoom,
|
||||||
function (c) {
|
function (c) {
|
||||||
c._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel);
|
c._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel);
|
||||||
|
|
||||||
@ -1628,7 +1642,7 @@ L.MarkerCluster = L.Marker.extend({
|
|||||||
//As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate
|
//As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate
|
||||||
if (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) {
|
if (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) {
|
||||||
c.clusterShow();
|
c.clusterShow();
|
||||||
c._recursivelyRemoveChildrenFromMap(bounds, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds
|
c._recursivelyRemoveChildrenFromMap(bounds, mapMinZoom, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds
|
||||||
} else {
|
} else {
|
||||||
c.clusterHide();
|
c.clusterHide();
|
||||||
}
|
}
|
||||||
@ -1707,9 +1721,9 @@ L.MarkerCluster = L.Marker.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
//exceptBounds: If set, don't remove any markers/clusters in it
|
//exceptBounds: If set, don't remove any markers/clusters in it
|
||||||
_recursivelyRemoveChildrenFromMap: function (previousBounds, zoomLevel, exceptBounds) {
|
_recursivelyRemoveChildrenFromMap: function (previousBounds, mapMinZoom, zoomLevel, exceptBounds) {
|
||||||
var m, i;
|
var m, i;
|
||||||
this._recursively(previousBounds, this._group._map.getMinZoom() - 1, zoomLevel - 1,
|
this._recursively(previousBounds, mapMinZoom - 1, zoomLevel - 1,
|
||||||
function (c) {
|
function (c) {
|
||||||
//Remove markers at every level
|
//Remove markers at every level
|
||||||
for (i = c._markers.length - 1; i >= 0; i--) {
|
for (i = c._markers.length - 1; i >= 0; i--) {
|
||||||
@ -1760,6 +1774,9 @@ L.MarkerCluster = L.Marker.extend({
|
|||||||
if (zoom < zoomLevelToStart || zoom < zoomLevelToStop) {
|
if (zoom < zoomLevelToStart || zoom < zoomLevelToStop) {
|
||||||
for (i = childClusters.length - 1; i >= 0; i--) {
|
for (i = childClusters.length - 1; i >= 0; i--) {
|
||||||
c = childClusters[i];
|
c = childClusters[i];
|
||||||
|
if (c._boundsNeedUpdate) {
|
||||||
|
c._recalculateBounds();
|
||||||
|
}
|
||||||
if (boundsToApplyTo.intersects(c._bounds)) {
|
if (boundsToApplyTo.intersects(c._bounds)) {
|
||||||
c._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel);
|
c._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel);
|
||||||
}
|
}
|
||||||
@ -1774,36 +1791,27 @@ L.MarkerCluster = L.Marker.extend({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Extends L.Marker to include two extra methods: clusterHide and clusterShow.
|
* Extends L.Marker to include two extra methods: clusterHide and clusterShow.
|
||||||
*
|
*
|
||||||
* They work as setOpacity(0) and setOpacity(1) respectively, but
|
* They work as setOpacity(0) and setOpacity(1) respectively, but
|
||||||
* they will remember the marker's opacity when hiding and showing it again.
|
* don't overwrite the options.opacity
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
L.Marker.include({
|
L.Marker.include({
|
||||||
|
|
||||||
clusterHide: function () {
|
clusterHide: function () {
|
||||||
this.options.opacityWhenUnclustered = this.options.opacity || 1;
|
var backup = this.options.opacity;
|
||||||
return this.setOpacity(0);
|
this.setOpacity(0);
|
||||||
|
this.options.opacity = backup;
|
||||||
|
return this;
|
||||||
},
|
},
|
||||||
|
|
||||||
clusterShow: function () {
|
clusterShow: function () {
|
||||||
var ret = this.setOpacity(this.options.opacity || this.options.opacityWhenUnclustered);
|
return this.setOpacity(this.options.opacity);
|
||||||
delete this.options.opacityWhenUnclustered;
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
L.DistanceGrid = function (cellSize) {
|
L.DistanceGrid = function (cellSize) {
|
||||||
this._cellSize = cellSize;
|
this._cellSize = cellSize;
|
||||||
this._sqCellSize = cellSize * cellSize;
|
this._sqCellSize = cellSize * cellSize;
|
||||||
@ -1897,7 +1905,8 @@ L.DistanceGrid.prototype = {
|
|||||||
for (k = 0, len = cell.length; k < len; k++) {
|
for (k = 0, len = cell.length; k < len; k++) {
|
||||||
obj = cell[k];
|
obj = cell[k];
|
||||||
dist = this._sqDist(objectPoint[L.Util.stamp(obj)], point);
|
dist = this._sqDist(objectPoint[L.Util.stamp(obj)], point);
|
||||||
if (dist < closestDistSq) {
|
if (dist < closestDistSq ||
|
||||||
|
dist <= closestDistSq && closest === null) {
|
||||||
closestDistSq = dist;
|
closestDistSq = dist;
|
||||||
closest = obj;
|
closest = obj;
|
||||||
}
|
}
|
||||||
@ -1910,7 +1919,8 @@ L.DistanceGrid.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_getCoord: function (x) {
|
_getCoord: function (x) {
|
||||||
return Math.floor(x / this._cellSize);
|
var coord = Math.floor(x / this._cellSize);
|
||||||
|
return isFinite(coord) ? coord : x;
|
||||||
},
|
},
|
||||||
|
|
||||||
_sqDist: function (p, p2) {
|
_sqDist: function (p, p2) {
|
||||||
@ -1920,7 +1930,6 @@ L.DistanceGrid.prototype = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Copyright (c) 2012 the authors listed at the following URL, and/or
|
/* Copyright (c) 2012 the authors listed at the following URL, and/or
|
||||||
the authors of referenced articles or incorporated external code:
|
the authors of referenced articles or incorporated external code:
|
||||||
http://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256
|
http://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256
|
||||||
@ -2087,7 +2096,6 @@ L.MarkerCluster.include({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
//This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet
|
//This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet
|
||||||
//Huge thanks to jawj for implementing it first to make my job easy :-)
|
//Huge thanks to jawj for implementing it first to make my job easy :-)
|
||||||
|
|
||||||
@ -2095,7 +2103,7 @@ L.MarkerCluster.include({
|
|||||||
|
|
||||||
_2PI: Math.PI * 2,
|
_2PI: Math.PI * 2,
|
||||||
_circleFootSeparation: 25, //related to circumference of circle
|
_circleFootSeparation: 25, //related to circumference of circle
|
||||||
_circleStartAngle: Math.PI / 6,
|
_circleStartAngle: 0,
|
||||||
|
|
||||||
_spiralFootSeparation: 28, //related to size of spiral (experiment!)
|
_spiralFootSeparation: 28, //related to size of spiral (experiment!)
|
||||||
_spiralLengthStart: 11,
|
_spiralLengthStart: 11,
|
||||||
@ -2109,7 +2117,7 @@ L.MarkerCluster.include({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var childMarkers = this.getAllChildMarkers(),
|
var childMarkers = this.getAllChildMarkers(null, true),
|
||||||
group = this._group,
|
group = this._group,
|
||||||
map = group._map,
|
map = group._map,
|
||||||
center = map.latLngToLayerPoint(this._latlng),
|
center = map.latLngToLayerPoint(this._latlng),
|
||||||
@ -2147,9 +2155,11 @@ L.MarkerCluster.include({
|
|||||||
res = [],
|
res = [],
|
||||||
i, angle;
|
i, angle;
|
||||||
|
|
||||||
|
legLength = Math.max(legLength, 35); // Minimum distance to get outside the cluster icon.
|
||||||
|
|
||||||
res.length = count;
|
res.length = count;
|
||||||
|
|
||||||
for (i = count - 1; i >= 0; i--) {
|
for (i = 0; i < count; i++) { // Clockwise, like spiral.
|
||||||
angle = this._circleStartAngle + i * angleStep;
|
angle = this._circleStartAngle + i * angleStep;
|
||||||
res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();
|
res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();
|
||||||
}
|
}
|
||||||
@ -2169,9 +2179,13 @@ L.MarkerCluster.include({
|
|||||||
res.length = count;
|
res.length = count;
|
||||||
|
|
||||||
// Higher index, closer position to cluster center.
|
// Higher index, closer position to cluster center.
|
||||||
for (i = count - 1; i >= 0; i--) {
|
for (i = count; i >= 0; i--) {
|
||||||
|
// Skip the first position, so that we are already farther from center and we avoid
|
||||||
|
// being under the default cluster icon (especially important for Circle Markers).
|
||||||
|
if (i < count) {
|
||||||
|
res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();
|
||||||
|
}
|
||||||
angle += separation / legLength + i * 0.0005;
|
angle += separation / legLength + i * 0.0005;
|
||||||
res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();
|
|
||||||
legLength += lengthFactor / angle;
|
legLength += lengthFactor / angle;
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
@ -2181,7 +2195,7 @@ L.MarkerCluster.include({
|
|||||||
var group = this._group,
|
var group = this._group,
|
||||||
map = group._map,
|
map = group._map,
|
||||||
fg = group._featureGroup,
|
fg = group._featureGroup,
|
||||||
childMarkers = this.getAllChildMarkers(),
|
childMarkers = this.getAllChildMarkers(null, true),
|
||||||
m, i;
|
m, i;
|
||||||
|
|
||||||
group._ignoreMove = true;
|
group._ignoreMove = true;
|
||||||
@ -2374,7 +2388,7 @@ L.MarkerCluster.include({
|
|||||||
map = group._map,
|
map = group._map,
|
||||||
fg = group._featureGroup,
|
fg = group._featureGroup,
|
||||||
thisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng),
|
thisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng),
|
||||||
childMarkers = this.getAllChildMarkers(),
|
childMarkers = this.getAllChildMarkers(null, true),
|
||||||
svg = L.Path.SVG,
|
svg = L.Path.SVG,
|
||||||
m, i, leg, legPath, legLength, nonAnimatable;
|
m, i, leg, legPath, legLength, nonAnimatable;
|
||||||
|
|
||||||
@ -2558,7 +2572,6 @@ L.MarkerClusterGroup.include({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds 1 public method to MCG and 1 to L.Marker to facilitate changing
|
* Adds 1 public method to MCG and 1 to L.Marker to facilitate changing
|
||||||
* markers' icon options and refreshing their icon and their parent clusters
|
* markers' icon options and refreshing their icon and their parent clusters
|
||||||
@ -2670,5 +2683,8 @@ L.Marker.include({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
exports.MarkerClusterGroup = MarkerClusterGroup;
|
||||||
|
exports.MarkerCluster = MarkerCluster;
|
||||||
|
|
||||||
}(window, document));
|
})));
|
||||||
|
//# sourceMappingURL=leaflet.markercluster-src.js.map
|
||||||
|
1
librerias/leaflet/dist/leaflet.markercluster-src.js.map
vendored
Normal file
1
librerias/leaflet/dist/leaflet.markercluster-src.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
10
librerias/leaflet/dist/leaflet.markercluster.js
vendored
10
librerias/leaflet/dist/leaflet.markercluster.js
vendored
File diff suppressed because one or more lines are too long
1
librerias/leaflet/dist/leaflet.markercluster.js.map
vendored
Normal file
1
librerias/leaflet/dist/leaflet.markercluster.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
88
mapero.php
88
mapero.php
@ -1,5 +1,5 @@
|
|||||||
<?php session_start();
|
<?php session_start();
|
||||||
if(isset($_REQUEST['debug'])) {ini_set('display_errors', 'On');}
|
if(isset($_REQUEST['debug'])) {ini_set('display_errors', 'On');}
|
||||||
require ('milfs/xajax/xajax.inc.php');
|
require ('milfs/xajax/xajax.inc.php');
|
||||||
$xajax = new xajax();
|
$xajax = new xajax();
|
||||||
//require ('json.lab.php');
|
//require ('json.lab.php');
|
||||||
@ -8,11 +8,11 @@ require ("milfs/funciones/conex.php");
|
|||||||
include ('milfs/librerias/parsedown/Parsedown.php');
|
include ('milfs/librerias/parsedown/Parsedown.php');
|
||||||
//require_once ('includes/markdown.php');
|
//require_once ('includes/markdown.php');
|
||||||
//require ('funciones/convert.php');
|
//require ('funciones/convert.php');
|
||||||
$xajax->processRequests();
|
$xajax->processRequests();
|
||||||
//if($_REQUEST[id2] =='') {$agregar= $_REQUEST[id];}else {$agregar = $_REQUEST[id2];}
|
//if($_REQUEST[id2] =='') {$agregar= $_REQUEST[id];}else {$agregar = $_REQUEST[id2];}
|
||||||
if(isset($_REQUEST['categoria']) AND isset($_REQUEST['buscar'])) {
|
if(isset($_REQUEST['categoria']) AND isset($_REQUEST['buscar'])) {
|
||||||
$cadena_busqueda = "$_REQUEST[buscar]";
|
$cadena_busqueda = "$_REQUEST[buscar]";
|
||||||
$_REQUEST['buscar'] = "$_REQUEST[categoria]:$_REQUEST[buscar]";
|
$_REQUEST['buscar'] = "$_REQUEST[categoria]:$_REQUEST[buscar]";
|
||||||
}
|
}
|
||||||
$formulario_nombre = remplacetas('form_id','id',$_REQUEST[id],'nombre',"","") ;
|
$formulario_nombre = remplacetas('form_id','id',$_REQUEST[id],'nombre',"","") ;
|
||||||
$formulario_descripcion = remplacetas('form_id','id',$_REQUEST[id],'descripcion',"","") ;
|
$formulario_descripcion = remplacetas('form_id','id',$_REQUEST[id],'descripcion',"","") ;
|
||||||
@ -32,16 +32,16 @@ $categorias = lista_categorias($_REQUEST['id'],'','mapa') ;
|
|||||||
|
|
||||||
$buscador ="
|
$buscador ="
|
||||||
<form action='?id='$_REQUEST[id]' method='get'>
|
<form action='?id='$_REQUEST[id]' method='get'>
|
||||||
|
|
||||||
<input type='hidden' id='id' name='id' value='$_REQUEST[id]' >
|
<input type='hidden' id='id' name='id' value='$_REQUEST[id]' >
|
||||||
$campos_formulario'
|
$campos_formulario'
|
||||||
<div id='div_campos'></div>
|
<div id='div_campos'></div>
|
||||||
|
|
||||||
<input type='text' id='buscar' name='buscar' class='form-control ' placeholder='Buscar' >
|
<input type='text' id='buscar' name='buscar' class='form-control ' placeholder='Buscar' >
|
||||||
<br>
|
<br>
|
||||||
<input type='submit' class='btn btn-info btn-block ' value='Buscar'>
|
<input type='submit' class='btn btn-info btn-block ' value='Buscar'>
|
||||||
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
<hr>
|
<hr>
|
||||||
";
|
";
|
||||||
@ -79,14 +79,14 @@ $buscador ="
|
|||||||
<link rel="shortcut icon" href="favicon-152.png">
|
<link rel="shortcut icon" href="favicon-152.png">
|
||||||
<link rel="apple-touch-icon-precomposed" href="favicon-152.png">
|
<link rel="apple-touch-icon-precomposed" href="favicon-152.png">
|
||||||
<link rel="stylesheet" href="librerias/leaflet/leaflet.css" />
|
<link rel="stylesheet" href="librerias/leaflet/leaflet.css" />
|
||||||
<?php
|
<?php
|
||||||
$otro_json = remplacetas('form_parametrizacion','campo',$_REQUEST[id],'descripcion'," tabla='form_id' and opcion = 'json'","","") ;;
|
$otro_json = remplacetas('form_parametrizacion','campo',$_REQUEST[id],'descripcion'," tabla='form_id' and opcion = 'json'","","") ;;
|
||||||
//$obj = file_get_contents('https://www.kleper.net/wiki/RutaPazTerritorial.geojson');
|
//$obj = file_get_contents('https://www.kleper.net/wiki/RutaPazTerritorial.geojson');
|
||||||
$ids = json_decode($otro_json[0]);
|
$ids = json_decode($otro_json[0]);
|
||||||
foreach ($ids as $clave => $valor) {
|
foreach ($ids as $clave => $valor) {
|
||||||
if($valor !=""){
|
if($valor !=""){
|
||||||
|
|
||||||
|
|
||||||
$obj=file_get_contents("$valor[0]");
|
$obj=file_get_contents("$valor[0]");
|
||||||
$li .="<script>var geojsonAuxiliar_$clave = $obj ;</script>";
|
$li .="<script>var geojsonAuxiliar_$clave = $obj ;</script>";
|
||||||
$layer .= "
|
$layer .= "
|
||||||
@ -106,28 +106,28 @@ $ids = json_decode($otro_json[0]);
|
|||||||
|
|
||||||
onEachFeature: function(feature, layer) {
|
onEachFeature: function(feature, layer) {
|
||||||
var popupText = feature.properties.description
|
var popupText = feature.properties.description
|
||||||
|
|
||||||
|
|
||||||
layer.bindPopup(popupText); }
|
layer.bindPopup(popupText); }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
";
|
";
|
||||||
$add_layer .= "markers.addLayer(geojsonAux_$clave);";
|
$add_layer .= "markers.addLayer(geojsonAux_$clave);";
|
||||||
$capas_nombre .="geojsonAux_$clave,";
|
$capas_nombre .="geojsonAux_$clave,";
|
||||||
$capas .= "{
|
$capas .= "{
|
||||||
'$clave': geojsonAux_$clave
|
'$clave': geojsonAux_$clave
|
||||||
};";
|
};";
|
||||||
$overlays ="
|
$overlays ="
|
||||||
var overlays = $capas ";
|
var overlays = $capas ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
echo $li;
|
echo $li;
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||||
<link href="librerias/font-awesome/css/font-awesome.min.css" rel="stylesheet">
|
<link href="librerias/font-awesome/css/font-awesome.min.css" rel="stylesheet">
|
||||||
<link rel="stylesheet" href="librerias/leaflet/css/leaflet-sidebar.css" />
|
<link rel="stylesheet" href="librerias/leaflet/css/leaflet-sidebar.css" />
|
||||||
@ -145,12 +145,12 @@ $ids = json_decode($otro_json[0]);
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body onload="">
|
<body onload="">
|
||||||
|
|
||||||
<!-- optionally define the sidebar content via HTML markup -->
|
<!-- optionally define the sidebar content via HTML markup -->
|
||||||
<div id="sidebar" class="leaflet-sidebar collapsed">
|
<div id="sidebar" class="leaflet-sidebar collapsed">
|
||||||
|
|
||||||
@ -160,7 +160,7 @@ $ids = json_decode($otro_json[0]);
|
|||||||
<ul role="tablist">
|
<ul role="tablist">
|
||||||
<li><a href="#home" role="tab"><i class="fa fa-bars active"></i></a></li>
|
<li><a href="#home" role="tab"><i class="fa fa-bars active"></i></a></li>
|
||||||
<li><a href="#search" role="tab"><i class="fa fa-search active"></i></a></li>
|
<li><a href="#search" role="tab"><i class="fa fa-search active"></i></a></li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<!-- bottom aligned tabs -->
|
<!-- bottom aligned tabs -->
|
||||||
@ -185,7 +185,7 @@ $ids = json_decode($otro_json[0]);
|
|||||||
</center>
|
</center>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<?php echo $categorias; ?>
|
<?php echo $categorias; ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="leaflet-sidebar-pane" id="search">
|
<div class="leaflet-sidebar-pane" id="search">
|
||||||
@ -193,7 +193,7 @@ $ids = json_decode($otro_json[0]);
|
|||||||
<?php echo $buscador; ?>
|
<?php echo $buscador; ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -203,7 +203,7 @@ $ids = json_decode($otro_json[0]);
|
|||||||
<script src="librerias/leaflet/leaflet.js" crossorigin=""></script>
|
<script src="librerias/leaflet/leaflet.js" crossorigin=""></script>
|
||||||
<script src="librerias/leaflet/leaflet-providers.js"></script>
|
<script src="librerias/leaflet/leaflet-providers.js"></script>
|
||||||
<script src="librerias/leaflet/js/leaflet-sidebar.js"></script>
|
<script src="librerias/leaflet/js/leaflet-sidebar.js"></script>
|
||||||
|
|
||||||
<link rel="stylesheet" href="librerias/leaflet/dist/MarkerCluster.css" />
|
<link rel="stylesheet" href="librerias/leaflet/dist/MarkerCluster.css" />
|
||||||
<link rel="stylesheet" href="librerias/leaflet/dist/MarkerCluster.Default.css" />
|
<link rel="stylesheet" href="librerias/leaflet/dist/MarkerCluster.Default.css" />
|
||||||
<script src="librerias/leaflet/dist/leaflet.markercluster-src.js"></script>
|
<script src="librerias/leaflet/dist/leaflet.markercluster-src.js"></script>
|
||||||
@ -220,8 +220,8 @@ $ids = json_decode($otro_json[0]);
|
|||||||
maxZoom: 19,
|
maxZoom: 19,
|
||||||
attribution: "Map data © OpenStreetMap contributors <a href='https://tupale.co'>Powered by Tupale.co</a>"
|
attribution: "Map data © OpenStreetMap contributors <a href='https://tupale.co'>Powered by Tupale.co</a>"
|
||||||
}).addTo(map);
|
}).addTo(map);
|
||||||
|
|
||||||
|
|
||||||
var geojson = L.geoJson(geojsonSample, {
|
var geojson = L.geoJson(geojsonSample, {
|
||||||
|
|
||||||
pointToLayer: function(feature, latlng) {
|
pointToLayer: function(feature, latlng) {
|
||||||
@ -230,9 +230,9 @@ $ids = json_decode($otro_json[0]);
|
|||||||
iconAnchor: [13, 27],
|
iconAnchor: [13, 27],
|
||||||
popupAnchor: [1, -24],
|
popupAnchor: [1, -24],
|
||||||
autoPanPadding: [30,30],
|
autoPanPadding: [30,30],
|
||||||
|
|
||||||
iconUrl: feature.properties.icon.iconUrl
|
iconUrl: feature.properties.icon.iconUrl
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
return L.marker(latlng, {icon: smallIcon });
|
return L.marker(latlng, {icon: smallIcon });
|
||||||
@ -240,26 +240,26 @@ $ids = json_decode($otro_json[0]);
|
|||||||
|
|
||||||
onEachFeature: function(feature, layer) {
|
onEachFeature: function(feature, layer) {
|
||||||
layer._leaflet_id = feature.properties.control;
|
layer._leaflet_id = feature.properties.control;
|
||||||
|
|
||||||
var popupText = L.responsivePopup().setContent(feature.properties.description );
|
var popupText = L.responsivePopup().setContent(feature.properties.description );
|
||||||
layer.bindPopup(popupText, {
|
layer.bindPopup(popupText, {
|
||||||
maxWidth: 200
|
maxWidth: 200
|
||||||
});
|
});
|
||||||
layer.bindTooltip(feature.properties.title).openTooltip();
|
layer.bindTooltip(feature.properties.title).openTooltip();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
<?php echo $layer; ?>
|
<?php echo $layer; ?>
|
||||||
|
|
||||||
// markers.addLayer(geojsonAux);
|
// markers.addLayer(geojsonAux);
|
||||||
|
|
||||||
|
|
||||||
//var markers = L.markerClusterGroup();
|
//var markers = L.markerClusterGroup();
|
||||||
var markers = L.layerGroup();
|
var markers = L.layerGroup();
|
||||||
|
|
||||||
|
|
||||||
markers.addLayer(geojson).addTo(map);
|
markers.addLayer(geojson).addTo(map);
|
||||||
|
|
||||||
<?php echo $add_layer; ?>
|
<?php echo $add_layer; ?>
|
||||||
map.fitBounds(geojson.getBounds().pad(Math.sqrt(2) /4));
|
map.fitBounds(geojson.getBounds().pad(Math.sqrt(2) /4));
|
||||||
|
|
||||||
@ -277,29 +277,29 @@ function openMarkerPopup(e){
|
|||||||
// add panels dynamically to the sidebar
|
// add panels dynamically to the sidebar
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sidebar.on('content', function (ev) {
|
sidebar.on('content', function (ev) {
|
||||||
switch (ev.id) {
|
switch (ev.id) {
|
||||||
|
|
||||||
case 'autopan':
|
case 'autopan':
|
||||||
sidebar.options.autopan = true;
|
sidebar.options.autopan = true;
|
||||||
break;
|
break;
|
||||||
default:sidebar.options.autopan = true;
|
default:sidebar.options.autopan = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<script language="JavaScript">
|
<script language="JavaScript">
|
||||||
if (screen.width<1024)
|
if (screen.width<1024)
|
||||||
//codigo resolución pequeña
|
//codigo resolución pequeña
|
||||||
sidebar.close();
|
sidebar.close();
|
||||||
else
|
else
|
||||||
|
|
||||||
sidebar.open();
|
sidebar.open();
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
2
milfs
2
milfs
@ -1 +1 @@
|
|||||||
Subproject commit f6c26756eb21de40c2224656caece6749fcaf94a
|
Subproject commit c5d8f1db94cee40d9f5d6eac6f262878beadffef
|
Loading…
Reference in New Issue
Block a user