From 9c61c0f25a06e944bf4e91020a75ce1dcac2a868 Mon Sep 17 00:00:00 2001 From: Austin Mason Date: Tue, 5 Mar 2019 05:01:33 -0600 Subject: [PATCH 001/183] Create README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..9e6464a --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# CGMRStreetMap + +A fork of the Omeka team's MallMap plugin to be used for the Carleton Guide to Medieval Rome project. From f88617579fc1dfbc60c54890e7cb1893c04f526a Mon Sep 17 00:00:00 2001 From: apjmason Date: Tue, 5 Mar 2019 05:35:54 -0600 Subject: [PATCH 002/183] set base map and extent to Rome --- .gitignore | 0 MallMapPlugin.php | 0 README.md | 0 config_form.php | 0 controllers/IndexController.php | 0 plugin.ini | 0 views/public/css/MarkerCluster.Default.css | 0 views/public/css/MarkerCluster.Default.ie.css | 0 views/public/css/MarkerCluster.css | 0 views/public/css/mall-map.css | 0 views/public/images/bg.jpg | Bin views/public/images/location.png | Bin views/public/index/index.php | 0 .../public/javascripts/leaflet.markercluster-src.js | 0 views/public/javascripts/leaflet.markercluster.js | 0 views/public/javascripts/mall-map.js | 8 ++++---- views/public/javascripts/modernizr.custom.63332.js | 0 17 files changed, 4 insertions(+), 4 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 MallMapPlugin.php mode change 100644 => 100755 README.md mode change 100644 => 100755 config_form.php mode change 100644 => 100755 controllers/IndexController.php mode change 100644 => 100755 plugin.ini mode change 100644 => 100755 views/public/css/MarkerCluster.Default.css mode change 100644 => 100755 views/public/css/MarkerCluster.Default.ie.css mode change 100644 => 100755 views/public/css/MarkerCluster.css mode change 100644 => 100755 views/public/css/mall-map.css mode change 100644 => 100755 views/public/images/bg.jpg mode change 100644 => 100755 views/public/images/location.png mode change 100644 => 100755 views/public/index/index.php mode change 100644 => 100755 views/public/javascripts/leaflet.markercluster-src.js mode change 100644 => 100755 views/public/javascripts/leaflet.markercluster.js mode change 100644 => 100755 views/public/javascripts/mall-map.js mode change 100644 => 100755 views/public/javascripts/modernizr.custom.63332.js diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/MallMapPlugin.php b/MallMapPlugin.php old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/config_form.php b/config_form.php old mode 100644 new mode 100755 diff --git a/controllers/IndexController.php b/controllers/IndexController.php old mode 100644 new mode 100755 diff --git a/plugin.ini b/plugin.ini old mode 100644 new mode 100755 diff --git a/views/public/css/MarkerCluster.Default.css b/views/public/css/MarkerCluster.Default.css old mode 100644 new mode 100755 diff --git a/views/public/css/MarkerCluster.Default.ie.css b/views/public/css/MarkerCluster.Default.ie.css old mode 100644 new mode 100755 diff --git a/views/public/css/MarkerCluster.css b/views/public/css/MarkerCluster.css old mode 100644 new mode 100755 diff --git a/views/public/css/mall-map.css b/views/public/css/mall-map.css old mode 100644 new mode 100755 diff --git a/views/public/images/bg.jpg b/views/public/images/bg.jpg old mode 100644 new mode 100755 diff --git a/views/public/images/location.png b/views/public/images/location.png old mode 100644 new mode 100755 diff --git a/views/public/index/index.php b/views/public/index/index.php old mode 100644 new mode 100755 diff --git a/views/public/javascripts/leaflet.markercluster-src.js b/views/public/javascripts/leaflet.markercluster-src.js old mode 100644 new mode 100755 diff --git a/views/public/javascripts/leaflet.markercluster.js b/views/public/javascripts/leaflet.markercluster.js old mode 100644 new mode 100755 diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js old mode 100644 new mode 100755 index 959377b..d475361 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -5,13 +5,13 @@ $(document).ready(function () { $('#map').css('height', windowheight - 54); - var MAP_URL_TEMPLATE = 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; - var MAP_CENTER = [38.8891, -77.02949]; + var MAP_URL_TEMPLATE = 'https://stamen-tiles-{s}.a.ssl.fastly.net/terrain/{z}/{x}/{y}{r}.png'; + var MAP_CENTER = [41.9001702, 12.4698422]; var MAP_ZOOM = 15; var MAP_MIN_ZOOM = 14; var MAP_MAX_ZOOM = 18; - var MAP_MAX_BOUNDS = [[38.79164, -77.17232], [38.99583, -76.90917]]; - var LOCATE_BOUNDS = [[38.87814, -77.05656], [38.90025, -77.00678]]; + var MAP_MAX_BOUNDS = [[41.908628, 12.451941], [41.88927, 12.490607]]; + var LOCATE_BOUNDS = [[41.908628, 12.451941], [41.88927, 12.490607]]; var MAX_LOCATE_METERS = 8000; var map; diff --git a/views/public/javascripts/modernizr.custom.63332.js b/views/public/javascripts/modernizr.custom.63332.js old mode 100644 new mode 100755 From bb67cdc8e8801cd6e504eddf83af43e14c7a7fd7 Mon Sep 17 00:00:00 2001 From: wanga3 Date: Fri, 24 May 2019 22:10:25 -0500 Subject: [PATCH 003/183] changes and small modifications; mostly testing --- controllers/IndexController.php | 137 +- views/public/index/index.php | 2 +- .../javascripts/leaflet.markercluster.js | 2 +- views/public/javascripts/mall-map.js | 159 +- .../javascripts/new_markercluster_src.js | 2188 +++++++++++++++++ 5 files changed, 2358 insertions(+), 130 deletions(-) create mode 100644 views/public/javascripts/new_markercluster_src.js diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 6443be3..f83a613 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -1,14 +1,14 @@ 'Place', - self::ITEM_TYPE_ID_EVENT => 'Event', - self::ITEM_TYPE_ID_DOCUMENT => 'Document', + self::ITEM_TYPE_ID_PLACE => 'Place', + self::ITEM_TYPE_ID_EVENT => 'Event', + self::ITEM_TYPE_ID_DOCUMENT => 'Document', self::ITEM_TYPE_ID_STILL_IMAGE => 'Image', // Still Image self::ITEM_TYPE_ID_MOVING_IMAGE => 'Video', // Moving Image self::ITEM_TYPE_ID_SOUND => 'Audio', // Sound ); - + /** * @var array Data used when adding the historic map layer. */ + //Lets you specify the map tiles: located in the /omeka/plugins/MallMap/maps folder. + // However, we must tile the map since they have {z}/{x}/{y} - can use https://www.maptiler.com to do this. private $_historicMapData = array( 'Pre-1800s' => array( - 'url' => '/mallhistory/plugins/MallMap/maps/1791/{z}/{x}/{y}.jpg', - 'title' => 'Map by Faehtz, E.F.M. (1791)', - ), + 'url' => '/mallhistory/plugins/MallMap/maps/1791/{z}/{x}/{y}.jpg', + 'title' => 'Map by Faehtz, E.F.M. (1791)', + ), '1800-1829' => array( - 'url' => '/mallhistory/plugins/MallMap/maps/1828/{z}/{x}/{y}.jpg', - 'title' => 'Map by Elliot, William (1828)', - ), + 'url' => '/mallhistory/plugins/MallMap/maps/1828/{z}/{x}/{y}.jpg', + 'title' => 'Map by Elliot, William (1828)', + ), '1830-1859' => array( - 'url' => '/mallhistory/plugins/MallMap/maps/1858/{z}/{x}/{y}.jpg', - 'title' => 'Map by Boschke, A. (1858)', - ), + 'url' => '/mallhistory/plugins/MallMap/maps/1858/{z}/{x}/{y}.jpg', + 'title' => 'Map by Boschke, A. (1858)', + ), '1860-1889' => array( - 'url' => '/mallhistory/plugins/MallMap/maps/1887/{z}/{x}/{y}.jpg', - 'title' => 'Map by Silversparre, Axel (1887)', - ), + 'url' => '/mallhistory/plugins/MallMap/maps/1887/{z}/{x}/{y}.jpg', + 'title' => 'Map by Silversparre, Axel (1887)', + ), '1890-1919' => array( - 'url' => '/mallhistory/plugins/MallMap/maps/1917/{z}/{x}/{y}.jpg', - 'title' => 'Map by U.S. Public Buildings Commission (1917)', - ), + 'url' => '/mallhistory/plugins/MallMap/maps/1917/{z}/{x}/{y}.jpg', + 'title' => 'Map by U.S. Public Buildings Commission (1917)', + ), '1920-1949' => array( - 'url' => '/mallhistory/plugins/MallMap/maps/1942/{z}/{x}/{y}.jpg', - 'title' => 'Map by General Drafting Company (1942)', - ), + 'url' => '/mallhistory/plugins/MallMap/maps/1942/{z}/{x}/{y}.jpg', + 'title' => 'Map by General Drafting Company (1942)', + ), '1950-1979' => array( 'url' => '/mallhistory/plugins/MallMap/maps/1978/{z}/{x}/{y}.jpg', 'title' => 'Map by Alexandria Drafting Company (1978)', - ), + ), '1980-1999' => array( - 'url' => '/mallhistory/plugins/MallMap/maps/1996/{z}/{x}/{y}.jpg', - 'title' => 'Map by Joseph Passonneau and Partners (1996)', - ), - //'2000-present' => array('url' => null, 'title' => null), + 'url' => '/mallhistory/plugins/MallMap/maps/1996/{z}/{x}/{y}.jpg', + 'title' => 'Map by Joseph Passonneau and Partners (1996)', + ), + //'2000-present' => array('url' => null, 'title' => null), ); - + /** * Display the map. */ public function indexAction() { + //calls down the data table of the Simple Vocab plugin $simpleVocabTerm = $this->_helper->db->getTable('SimpleVocabTerm'); - $mapCoverages = $simpleVocabTerm->findByElementId(self::ELEMENT_ID_MAP_COVERAGE); $placeTypes = $simpleVocabTerm->findByElementId(self::ELEMENT_ID_PLACE_TYPE); $eventTypes = $simpleVocabTerm->findByElementId(self::ELEMENT_ID_EVENT_TYPE); - + $this->view->item_types = $this->_itemTypes; $this->view->map_coverages = explode("\n", $mapCoverages->terms); $this->view->place_types = explode("\n", $placeTypes->terms); $this->view->event_types = explode("\n", $eventTypes->terms); - + // Set the JS and CSS files. $this->view->headScript() ->appendFile('//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js') @@ -114,11 +119,11 @@ public function indexAction() ->appendStylesheet(src('MarkerCluster.Default.ie', 'css', 'css'), 'all', 'lte IE 8') ->appendStylesheet(src('mall-map', 'css', 'css')); } - + /** * Filter items that have been geolocated by the Geolocation plugin. - * - * Since this is mobile-first, optimized SQL queries are preferable to using + * + * Since this is mobile-first, optimized SQL queries are preferable to using * the Omeka API. */ public function filterAction() @@ -127,11 +132,11 @@ public function filterAction() if (!$this->_request->isXmlHttpRequest()) { throw new Omeka_Controller_Exception_403; } - + $db = $this->_helper->db->getDb(); $joins = array("$db->Item AS items ON items.id = locations.item_id"); $wheres = array("items.public = 1"); - + // Filter item type. if ($this->_request->getParam('itemType')) { $wheres[] = $db->quoteInto("items.item_type_id = ?", $this->_request->getParam('itemType'), Zend_Db::INT_TYPE); @@ -139,14 +144,14 @@ public function filterAction() // Filter map coverage. if ($this->_request->getParam('mapCoverage')) { $alias = "map_coverage"; - $joins[] = "$db->ElementText AS $alias ON $alias.record_id = items.id AND $alias.record_type = 'Item' " + $joins[] = "$db->ElementText AS $alias ON $alias.record_id = items.id AND $alias.record_type = 'Item' " . $db->quoteInto("AND $alias.element_id = ?", self::ELEMENT_ID_MAP_COVERAGE); $wheres[] = $db->quoteInto("$alias.text = ?", $this->_request->getParam('mapCoverage')); } // Filter place types (inclusive). if ($this->_request->getParam('placeTypes')) { $alias = "place_types"; - $joins[] = "$db->ElementText AS $alias ON $alias.record_id = items.id AND $alias.record_type = 'Item' " + $joins[] = "$db->ElementText AS $alias ON $alias.record_id = items.id AND $alias.record_type = 'Item' " . $db->quoteInto("AND $alias.element_id = ?", self::ELEMENT_ID_PLACE_TYPE); $placeTypes = array(); foreach ($this->_request->getParam('placeTypes') as $text) { @@ -156,7 +161,7 @@ public function filterAction() // Filter event types (inclusive). } else if ($this->_request->getParam('eventTypes')) { $alias = "event_types"; - $joins[] = "$db->ElementText AS $alias ON $alias.record_id = items.id AND $alias.record_type = 'Item' " + $joins[] = "$db->ElementText AS $alias ON $alias.record_id = items.id AND $alias.record_type = 'Item' " . $db->quoteInto("AND $alias.element_id = ?", self::ELEMENT_ID_EVENT_TYPE); $eventTypes = array(); foreach ($this->_request->getParam('eventTypes') as $text) { @@ -164,7 +169,7 @@ public function filterAction() } $wheres[] = implode(" OR ", $eventTypes); } - + // Build the SQL. $sql = "SELECT items.id, locations.latitude, locations.longitude\nFROM $db->Location AS locations"; foreach ($joins as $join) { @@ -175,24 +180,24 @@ public function filterAction() $sql .= " ($where)"; } $sql .= "\nGROUP BY items.id"; - + // Build geoJSON: http://www.geojson.org/geojson-spec.html $data = array('type' => 'FeatureCollection', 'features' => array()); foreach ($db->query($sql)->fetchAll() as $row) { $data['features'][] = array( - 'type' => 'Feature', + 'type' => 'Feature', 'geometry' => array( - 'type' => 'Point', - 'coordinates' => array($row['longitude'], $row['latitude']), - ), + 'type' => 'Point', + 'coordinates' => array($row['longitude'], $row['latitude']), + ), 'properties' => array( - 'id' => $row['id'], - ), + 'id' => $row['id'], + ), ); } $this->_helper->json($data); } - + /** * Get data about the selected historical map. */ @@ -208,7 +213,7 @@ public function historicMapDataAction() $data = $this->_historicMapData[$this->_request->getParam('text')]; $this->_helper->json($data); } - + /** * Get data about the selected item. */ @@ -220,17 +225,17 @@ public function getItemAction() } $item = get_record_by_id('item', $this->_request->getParam('id')); $data = array( - 'id' => $item->id, - 'title' => metadata($item, array('Dublin Core', 'Title')), - 'description' => metadata($item, array('Dublin Core', 'Description')), - 'date' => metadata($item, array('Dublin Core', 'Date'), array('all' => true)), - 'thumbnail' => item_image('square_thumbnail', array(), 0, $item), - 'fullsize' => item_image('fullsize', array('style' => 'max-width: 100%; height: auto;'), 0, $item), - 'url' => url(array('module' => 'default', - 'controller' => 'items', - 'action' => 'show', - 'id' => $item['id']), - 'id'), + 'id' => $item->id, + 'title' => metadata($item, array('Dublin Core', 'Title')), + 'description' => metadata($item, array('Dublin Core', 'Description')), + 'date' => metadata($item, array('Dublin Core', 'Date'), array('all' => true)), + 'thumbnail' => item_image('square_thumbnail', array(), 0, $item), + 'fullsize' => item_image('fullsize', array('style' => 'max-width: 100%; height: auto;'), 0, $item), + 'url' => url(array('module' => 'default', + 'controller' => 'items', + 'action' => 'show', + 'id' => $item['id']), + 'id'), ); $this->_helper->json($data); } diff --git a/views/public/index/index.php b/views/public/index/index.php index 5655e58..b599138 100755 --- a/views/public/index/index.php +++ b/views/public/index/index.php @@ -58,4 +58,4 @@ - \ No newline at end of file + diff --git a/views/public/javascripts/leaflet.markercluster.js b/views/public/javascripts/leaflet.markercluster.js index ad73311..db48b44 100755 --- a/views/public/javascripts/leaflet.markercluster.js +++ b/views/public/javascripts/leaflet.markercluster.js @@ -3,4 +3,4 @@ https://github.com/Leaflet/Leaflet.markercluster (c) 2012-2013, Dave Leaver, smartrak */ -!function(t,e){L.MarkerClusterGroup=L.FeatureGroup.extend({options:{maxClusterRadius:80,iconCreateFunction:null,spiderfyOnMaxZoom:!0,showCoverageOnHover:!0,zoomToBoundsOnClick:!0,singleMarkerMode:!1,disableClusteringAtZoom:null,removeOutsideVisibleBounds:!0,animateAddingMarkers:!1,spiderfyDistanceMultiplier:1,polygonOptions:{}},initialize:function(t){L.Util.setOptions(this,t),this.options.iconCreateFunction||(this.options.iconCreateFunction=this._defaultIconCreateFunction),this._featureGroup=L.featureGroup(),this._featureGroup.on(L.FeatureGroup.EVENTS,this._propagateEvent,this),this._nonPointGroup=L.featureGroup(),this._nonPointGroup.on(L.FeatureGroup.EVENTS,this._propagateEvent,this),this._inZoomAnimation=0,this._needsClustering=[],this._needsRemoving=[],this._currentShownBounds=null},addLayer:function(t){if(t instanceof L.LayerGroup){var e=[];for(var i in t._layers)e.push(t._layers[i]);return this.addLayers(e)}if(!t.getLatLng)return this._nonPointGroup.addLayer(t),this;if(!this._map)return this._needsClustering.push(t),this;if(this.hasLayer(t))return this;this._unspiderfy&&this._unspiderfy(),this._addLayer(t,this._maxZoom);var n=t,s=this._map.getZoom();if(t.__parent)for(;n.__parent._zoom>=s;)n=n.__parent;return this._currentShownBounds.contains(n.getLatLng())&&(this.options.animateAddingMarkers?this._animationAddLayer(t,n):this._animationAddLayerNonAnimated(t,n)),this},removeLayer:function(t){if(t instanceof L.LayerGroup){var e=[];for(var i in t._layers)e.push(t._layers[i]);return this.removeLayers(e)}return t.getLatLng?this._map?t.__parent?(this._unspiderfy&&(this._unspiderfy(),this._unspiderfyLayer(t)),this._removeLayer(t,!0),this._featureGroup.hasLayer(t)&&(this._featureGroup.removeLayer(t),t.setOpacity&&t.setOpacity(1)),this):this:(!this._arraySplice(this._needsClustering,t)&&this.hasLayer(t)&&this._needsRemoving.push(t),this):(this._nonPointGroup.removeLayer(t),this)},addLayers:function(t){var e,i,n,s=this._map,r=this._featureGroup,o=this._nonPointGroup;for(e=0,i=t.length;i>e;e++)if(n=t[e],n.getLatLng){if(!this.hasLayer(n))if(s){if(this._addLayer(n,this._maxZoom),n.__parent&&2===n.__parent.getChildCount()){var a=n.__parent.getAllChildMarkers(),h=a[0]===n?a[1]:a[0];r.removeLayer(h)}}else this._needsClustering.push(n)}else o.addLayer(n);return s&&(r.eachLayer(function(t){t instanceof L.MarkerCluster&&t._iconNeedsUpdate&&t._updateIcon()}),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds)),this},removeLayers:function(t){var e,i,n,s=this._featureGroup,r=this._nonPointGroup;if(!this._map){for(e=0,i=t.length;i>e;e++)n=t[e],this._arraySplice(this._needsClustering,n),r.removeLayer(n);return this}for(e=0,i=t.length;i>e;e++)n=t[e],n.__parent?(this._removeLayer(n,!0,!0),s.hasLayer(n)&&(s.removeLayer(n),n.setOpacity&&n.setOpacity(1))):r.removeLayer(n);return this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds),s.eachLayer(function(t){t instanceof L.MarkerCluster&&t._updateIcon()}),this},clearLayers:function(){return this._map||(this._needsClustering=[],delete this._gridClusters,delete this._gridUnclustered),this._noanimationUnspiderfy&&this._noanimationUnspiderfy(),this._featureGroup.clearLayers(),this._nonPointGroup.clearLayers(),this.eachLayer(function(t){delete t.__parent}),this._map&&this._generateInitialClusters(),this},getBounds:function(){var t=new L.LatLngBounds;if(this._topClusterLevel)t.extend(this._topClusterLevel._bounds);else for(var e=this._needsClustering.length-1;e>=0;e--)t.extend(this._needsClustering[e].getLatLng());return t.extend(this._nonPointGroup.getBounds()),t},eachLayer:function(t,e){var i,n=this._needsClustering.slice();for(this._topClusterLevel&&this._topClusterLevel.getAllChildMarkers(n),i=n.length-1;i>=0;i--)t.call(e,n[i]);this._nonPointGroup.eachLayer(t,e)},getLayers:function(){var t=[];return this.eachLayer(function(e){t.push(e)}),t},hasLayer:function(t){if(!t)return!1;var e,i=this._needsClustering;for(e=i.length-1;e>=0;e--)if(i[e]===t)return!0;for(i=this._needsRemoving,e=i.length-1;e>=0;e--)if(i[e]===t)return!1;return!(!t.__parent||t.__parent._group!==this)||this._nonPointGroup.hasLayer(t)},zoomToShowLayer:function(t,e){var i=function(){if((t._icon||t.__parent._icon)&&!this._inZoomAnimation)if(this._map.off("moveend",i,this),this.off("animationend",i,this),t._icon)e();else if(t.__parent._icon){var n=function(){this.off("spiderfied",n,this),e()};this.on("spiderfied",n,this),t.__parent.spiderfy()}};t._icon?e():t.__parent._zoome;e++)n=this._needsRemoving[e],this._removeLayer(n,!0);for(this._needsRemoving=[],e=0,i=this._needsClustering.length;i>e;e++)n=this._needsClustering[e],n.getLatLng?n.__parent||this._addLayer(n,this._maxZoom):this._featureGroup.addLayer(n);this._needsClustering=[],this._map.on("zoomend",this._zoomEnd,this),this._map.on("moveend",this._moveEnd,this),this._spiderfierOnAdd&&this._spiderfierOnAdd(),this._bindEvents(),this._zoom=this._map.getZoom(),this._currentShownBounds=this._getExpandedVisibleBounds(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds)},onRemove:function(t){t.off("zoomend",this._zoomEnd,this),t.off("moveend",this._moveEnd,this),this._unbindEvents(),this._map._mapPane.className=this._map._mapPane.className.replace(" leaflet-cluster-anim",""),this._spiderfierOnRemove&&this._spiderfierOnRemove(),this._hideCoverage(),this._featureGroup.onRemove(t),this._nonPointGroup.onRemove(t),this._featureGroup.clearLayers(),this._map=null},getVisibleParent:function(t){for(var e=t;e&&!e._icon;)e=e.__parent;return e||null},_arraySplice:function(t,e){for(var i=t.length-1;i>=0;i--)if(t[i]===e)return t.splice(i,1),!0},_removeLayer:function(t,e,i){var n=this._gridClusters,s=this._gridUnclustered,r=this._featureGroup,o=this._map;if(e)for(var a=this._maxZoom;a>=0&&s[a].removeObject(t,o.project(t.getLatLng(),a));a--);var h,_=t.__parent,u=_._markers;for(this._arraySplice(u,t);_&&(_._childCount--,!(_._zoom<0));)e&&_._childCount<=1?(h=_._markers[0]===t?_._markers[1]:_._markers[0],n[_._zoom].removeObject(_,o.project(_._cLatLng,_._zoom)),s[_._zoom].addObject(h,o.project(h.getLatLng(),_._zoom)),this._arraySplice(_.__parent._childClusters,_),_.__parent._markers.push(h),h.__parent=_.__parent,_._icon&&(r.removeLayer(_),i||r.addLayer(h))):(_._recalculateBounds(),i&&_._icon||_._updateIcon()),_=_.__parent;delete t.__parent},_propagateEvent:function(t){t.layer instanceof L.MarkerCluster&&(t.type="cluster"+t.type),this.fire(t.type,t)},_defaultIconCreateFunction:function(t){var e=t.getChildCount(),i=" marker-cluster-";return i+=10>e?"small":100>e?"medium":"large",new L.DivIcon({html:"
"+e+"
",className:"marker-cluster"+i,iconSize:new L.Point(40,40)})},_bindEvents:function(){var t=this._map,e=this.options.spiderfyOnMaxZoom,i=this.options.showCoverageOnHover,n=this.options.zoomToBoundsOnClick;(e||n)&&this.on("clusterclick",this._zoomOrSpiderfy,this),i&&(this.on("clustermouseover",this._showCoverage,this),this.on("clustermouseout",this._hideCoverage,this),t.on("zoomend",this._hideCoverage,this))},_zoomOrSpiderfy:function(t){var e=this._map;e.getMaxZoom()===e.getZoom()?this.options.spiderfyOnMaxZoom&&t.layer.spiderfy():this.options.zoomToBoundsOnClick&&t.layer.zoomToBounds()},_showCoverage:function(t){var e=this._map;this._inZoomAnimation||(this._shownPolygon&&e.removeLayer(this._shownPolygon),t.layer.getChildCount()>2&&t.layer!==this._spiderfied&&(this._shownPolygon=new L.Polygon(t.layer.getConvexHull(),this.options.polygonOptions),e.addLayer(this._shownPolygon)))},_hideCoverage:function(){this._shownPolygon&&(this._map.removeLayer(this._shownPolygon),this._shownPolygon=null)},_unbindEvents:function(){var t=this.options.spiderfyOnMaxZoom,e=this.options.showCoverageOnHover,i=this.options.zoomToBoundsOnClick,n=this._map;(t||i)&&this.off("clusterclick",this._zoomOrSpiderfy,this),e&&(this.off("clustermouseover",this._showCoverage,this),this.off("clustermouseout",this._hideCoverage,this),n.off("zoomend",this._hideCoverage,this))},_zoomEnd:function(){this._map&&(this._mergeSplitClusters(),this._zoom=this._map._zoom,this._currentShownBounds=this._getExpandedVisibleBounds())},_moveEnd:function(){if(!this._inZoomAnimation){var t=this._getExpandedVisibleBounds();this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,this._zoom,t),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,t),this._currentShownBounds=t}},_generateInitialClusters:function(){var t=this._map.getMaxZoom(),e=this.options.maxClusterRadius;this.options.disableClusteringAtZoom&&(t=this.options.disableClusteringAtZoom-1),this._maxZoom=t,this._gridClusters={},this._gridUnclustered={};for(var i=t;i>=0;i--)this._gridClusters[i]=new L.DistanceGrid(e),this._gridUnclustered[i]=new L.DistanceGrid(e);this._topClusterLevel=new L.MarkerCluster(this,-1)},_addLayer:function(t,e){var i,n,s=this._gridClusters,r=this._gridUnclustered;for(this.options.singleMarkerMode&&(t.options.icon=this.options.iconCreateFunction({getChildCount:function(){return 1},getAllChildMarkers:function(){return[t]}}));e>=0;e--){i=this._map.project(t.getLatLng(),e);var o=s[e].getNearObject(i);if(o)return o._addChild(t),t.__parent=o,void 0;if(o=r[e].getNearObject(i)){var a=o.__parent;a&&this._removeLayer(o,!1);var h=new L.MarkerCluster(this,e,o,t);s[e].addObject(h,this._map.project(h._cLatLng,e)),o.__parent=h,t.__parent=h;var _=h;for(n=e-1;n>a._zoom;n--)_=new L.MarkerCluster(this,n,_),s[n].addObject(_,this._map.project(o.getLatLng(),n));for(a._addChild(_),n=e;n>=0&&r[n].removeObject(o,this._map.project(o.getLatLng(),n));n--);return}r[e].addObject(t,i)}this._topClusterLevel._addChild(t),t.__parent=this._topClusterLevel},_mergeSplitClusters:function(){this._zoomthis._map._zoom?(this._animationStart(),this._animationZoomOut(this._zoom,this._map._zoom)):this._moveEnd()},_getExpandedVisibleBounds:function(){if(!this.options.removeOutsideVisibleBounds)return this.getBounds();var t=this._map,e=t.getBounds(),i=e._southWest,n=e._northEast,s=L.Browser.mobile?0:Math.abs(i.lat-n.lat),r=L.Browser.mobile?0:Math.abs(i.lng-n.lng);return new L.LatLngBounds(new L.LatLng(i.lat-s,i.lng-r,!0),new L.LatLng(n.lat+s,n.lng+r,!0))},_animationAddLayerNonAnimated:function(t,e){if(e===t)this._featureGroup.addLayer(t);else if(2===e._childCount){e._addToMap();var i=e.getAllChildMarkers();this._featureGroup.removeLayer(i[0]),this._featureGroup.removeLayer(i[1])}else e._updateIcon()}}),L.MarkerClusterGroup.include(L.DomUtil.TRANSITION?{_animationStart:function(){this._map._mapPane.className+=" leaflet-cluster-anim",this._inZoomAnimation++},_animationEnd:function(){this._map&&(this._map._mapPane.className=this._map._mapPane.className.replace(" leaflet-cluster-anim","")),this._inZoomAnimation--,this.fire("animationend")},_animationZoomIn:function(t,e){var i,n=this,s=this._getExpandedVisibleBounds(),r=this._featureGroup;this._topClusterLevel._recursively(s,t,0,function(n){var o,a=n._latlng,h=n._markers;for(s.contains(a)||(a=null),n._isSingleParent()&&t+1===e?(r.removeLayer(n),n._recursivelyAddChildrenToMap(null,e,s)):(n.setOpacity(0),n._recursivelyAddChildrenToMap(a,e,s)),i=h.length-1;i>=0;i--)o=h[i],s.contains(o._latlng)||r.removeLayer(o)}),this._forceLayout(),n._topClusterLevel._recursivelyBecomeVisible(s,e),r.eachLayer(function(t){t instanceof L.MarkerCluster||!t._icon||t.setOpacity(1)}),n._topClusterLevel._recursively(s,t,e,function(t){t._recursivelyRestoreChildPositions(e)}),setTimeout(function(){n._topClusterLevel._recursively(s,t,0,function(t){r.removeLayer(t),t.setOpacity(1)}),n._animationEnd()},200)},_animationZoomOut:function(t,e){this._animationZoomOutSingle(this._topClusterLevel,t-1,e),this._topClusterLevel._recursivelyAddChildrenToMap(null,e,this._getExpandedVisibleBounds()),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,t,this._getExpandedVisibleBounds())},_animationZoomOutSingle:function(t,e,i){var n=this._getExpandedVisibleBounds();t._recursivelyAnimateChildrenInAndAddSelfToMap(n,e+1,i);var s=this;this._forceLayout(),t._recursivelyBecomeVisible(n,i),setTimeout(function(){if(1===t._childCount){var r=t._markers[0];r.setLatLng(r.getLatLng()),r.setOpacity(1)}else t._recursively(n,i,0,function(t){t._recursivelyRemoveChildrenFromMap(n,e+1)});s._animationEnd()},200)},_animationAddLayer:function(t,e){var i=this,n=this._featureGroup;n.addLayer(t),e!==t&&(e._childCount>2?(e._updateIcon(),this._forceLayout(),this._animationStart(),t._setPos(this._map.latLngToLayerPoint(e.getLatLng())),t.setOpacity(0),setTimeout(function(){n.removeLayer(t),t.setOpacity(1),i._animationEnd()},200)):(this._forceLayout(),i._animationStart(),i._animationZoomOutSingle(e,this._map.getMaxZoom(),this._map.getZoom())))},_forceLayout:function(){L.Util.falseFn(e.body.offsetWidth)}}:{_animationStart:function(){},_animationZoomIn:function(t,e){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,t),this._topClusterLevel._recursivelyAddChildrenToMap(null,e,this._getExpandedVisibleBounds())},_animationZoomOut:function(t,e){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,t),this._topClusterLevel._recursivelyAddChildrenToMap(null,e,this._getExpandedVisibleBounds())},_animationAddLayer:function(t,e){this._animationAddLayerNonAnimated(t,e)}}),L.markerClusterGroup=function(t){return new L.MarkerClusterGroup(t)},L.MarkerCluster=L.Marker.extend({initialize:function(t,e,i,n){L.Marker.prototype.initialize.call(this,i?i._cLatLng||i.getLatLng():new L.LatLng(0,0),{icon:this}),this._group=t,this._zoom=e,this._markers=[],this._childClusters=[],this._childCount=0,this._iconNeedsUpdate=!0,this._bounds=new L.LatLngBounds,i&&this._addChild(i),n&&this._addChild(n)},getAllChildMarkers:function(t){t=t||[];for(var e=this._childClusters.length-1;e>=0;e--)this._childClusters[e].getAllChildMarkers(t);for(var i=this._markers.length-1;i>=0;i--)t.push(this._markers[i]);return t},getChildCount:function(){return this._childCount},zoomToBounds:function(){for(var t,e=this._childClusters.slice(),i=this._group._map,n=i.getBoundsZoom(this._bounds),s=this._zoom+1;e.length>0&&n>s;){s++;var r=[];for(t=0;ts?this._group._map.setView(this._latlng,s):this._group._map.fitBounds(this._bounds)},getBounds:function(){var t=new L.LatLngBounds;return t.extend(this._bounds),t},_updateIcon:function(){this._iconNeedsUpdate=!0,this._icon&&this.setIcon(this)},createIcon:function(){return this._iconNeedsUpdate&&(this._iconObj=this._group.options.iconCreateFunction(this),this._iconNeedsUpdate=!1),this._iconObj.createIcon()},createShadow:function(){return this._iconObj.createShadow()},_addChild:function(t,e){this._iconNeedsUpdate=!0,this._expandBounds(t),t instanceof L.MarkerCluster?(e||(this._childClusters.push(t),t.__parent=this),this._childCount+=t._childCount):(e||this._markers.push(t),this._childCount++),this.__parent&&this.__parent._addChild(t,!0)},_expandBounds:function(t){var e,i=t._wLatLng||t._latlng;t instanceof L.MarkerCluster?(this._bounds.extend(t._bounds),e=t._childCount):(this._bounds.extend(i),e=1),this._cLatLng||(this._cLatLng=t._cLatLng||i);var n=this._childCount+e;this._wLatLng?(this._wLatLng.lat=(i.lat*e+this._wLatLng.lat*this._childCount)/n,this._wLatLng.lng=(i.lng*e+this._wLatLng.lng*this._childCount)/n):this._latlng=this._wLatLng=new L.LatLng(i.lat,i.lng)},_addToMap:function(t){t&&(this._backupLatlng=this._latlng,this.setLatLng(t)),this._group._featureGroup.addLayer(this)},_recursivelyAnimateChildrenIn:function(t,e,i){this._recursively(t,0,i-1,function(t){var i,n,s=t._markers;for(i=s.length-1;i>=0;i--)n=s[i],n._icon&&(n._setPos(e),n.setOpacity(0))},function(t){var i,n,s=t._childClusters;for(i=s.length-1;i>=0;i--)n=s[i],n._icon&&(n._setPos(e),n.setOpacity(0))})},_recursivelyAnimateChildrenInAndAddSelfToMap:function(t,e,i){this._recursively(t,i,0,function(n){n._recursivelyAnimateChildrenIn(t,n._group._map.latLngToLayerPoint(n.getLatLng()).round(),e),n._isSingleParent()&&e-1===i?(n.setOpacity(1),n._recursivelyRemoveChildrenFromMap(t,e)):n.setOpacity(0),n._addToMap()})},_recursivelyBecomeVisible:function(t,e){this._recursively(t,0,e,null,function(t){t.setOpacity(1)})},_recursivelyAddChildrenToMap:function(t,e,i){this._recursively(i,-1,e,function(n){if(e!==n._zoom)for(var s=n._markers.length-1;s>=0;s--){var r=n._markers[s];i.contains(r._latlng)&&(t&&(r._backupLatlng=r.getLatLng(),r.setLatLng(t),r.setOpacity&&r.setOpacity(0)),n._group._featureGroup.addLayer(r))}},function(e){e._addToMap(t)})},_recursivelyRestoreChildPositions:function(t){for(var e=this._markers.length-1;e>=0;e--){var i=this._markers[e];i._backupLatlng&&(i.setLatLng(i._backupLatlng),delete i._backupLatlng)}if(t-1===this._zoom)for(var n=this._childClusters.length-1;n>=0;n--)this._childClusters[n]._restorePosition();else for(var s=this._childClusters.length-1;s>=0;s--)this._childClusters[s]._recursivelyRestoreChildPositions(t)},_restorePosition:function(){this._backupLatlng&&(this.setLatLng(this._backupLatlng),delete this._backupLatlng)},_recursivelyRemoveChildrenFromMap:function(t,e,i){var n,s;this._recursively(t,-1,e-1,function(t){for(s=t._markers.length-1;s>=0;s--)n=t._markers[s],i&&i.contains(n._latlng)||(t._group._featureGroup.removeLayer(n),n.setOpacity&&n.setOpacity(1))},function(t){for(s=t._childClusters.length-1;s>=0;s--)n=t._childClusters[s],i&&i.contains(n._latlng)||(t._group._featureGroup.removeLayer(n),n.setOpacity&&n.setOpacity(1))})},_recursively:function(t,e,i,n,s){var r,o,a=this._childClusters,h=this._zoom;if(e>h)for(r=a.length-1;r>=0;r--)o=a[r],t.intersects(o._bounds)&&o._recursively(t,e,i,n,s);else if(n&&n(this),s&&this._zoom===i&&s(this),i>h)for(r=a.length-1;r>=0;r--)o=a[r],t.intersects(o._bounds)&&o._recursively(t,e,i,n,s)},_recalculateBounds:function(){var t,e=this._markers,i=this._childClusters;for(this._bounds=new L.LatLngBounds,delete this._wLatLng,t=e.length-1;t>=0;t--)this._expandBounds(e[t]);for(t=i.length-1;t>=0;t--)this._expandBounds(i[t])},_isSingleParent:function(){return this._childClusters.length>0&&this._childClusters[0]._childCount===this._childCount}}),L.DistanceGrid=function(t){this._cellSize=t,this._sqCellSize=t*t,this._grid={},this._objectPoint={}},L.DistanceGrid.prototype={addObject:function(t,e){var i=this._getCoord(e.x),n=this._getCoord(e.y),s=this._grid,r=s[n]=s[n]||{},o=r[i]=r[i]||[],a=L.Util.stamp(t);this._objectPoint[a]=e,o.push(t)},updateObject:function(t,e){this.removeObject(t),this.addObject(t,e)},removeObject:function(t,e){var i,n,s=this._getCoord(e.x),r=this._getCoord(e.y),o=this._grid,a=o[r]=o[r]||{},h=a[s]=a[s]||[];for(delete this._objectPoint[L.Util.stamp(t)],i=0,n=h.length;n>i;i++)if(h[i]===t)return h.splice(i,1),1===n&&delete a[s],!0},eachObject:function(t,e){var i,n,s,r,o,a,h,_=this._grid;for(i in _){o=_[i];for(n in o)for(a=o[n],s=0,r=a.length;r>s;s++)h=t.call(e,a[s]),h&&(s--,r--)}},getNearObject:function(t){var e,i,n,s,r,o,a,h,_=this._getCoord(t.x),u=this._getCoord(t.y),l=this._objectPoint,d=this._sqCellSize,p=null;for(e=u-1;u+1>=e;e++)if(s=this._grid[e])for(i=_-1;_+1>=i;i++)if(r=s[i])for(n=0,o=r.length;o>n;n++)a=r[n],h=this._sqDist(l[L.Util.stamp(a)],t),d>h&&(d=h,p=a);return p},_getCoord:function(t){return Math.floor(t/this._cellSize)},_sqDist:function(t,e){var i=e.x-t.x,n=e.y-t.y;return i*i+n*n}},function(){L.QuickHull={getDistant:function(t,e){var i=e[1].lat-e[0].lat,n=e[0].lng-e[1].lng;return n*(t.lat-e[0].lat)+i*(t.lng-e[0].lng)},findMostDistantPointFromBaseLine:function(t,e){var i,n,s,r=0,o=null,a=[];for(i=e.length-1;i>=0;i--)n=e[i],s=this.getDistant(n,t),s>0&&(a.push(n),s>r&&(r=s,o=n));return{maxPoint:o,newPoints:a}},buildConvexHull:function(t,e){var i=[],n=this.findMostDistantPointFromBaseLine(t,e);return n.maxPoint?(i=i.concat(this.buildConvexHull([t[0],n.maxPoint],n.newPoints)),i=i.concat(this.buildConvexHull([n.maxPoint,t[1]],n.newPoints))):[t[0]]},getConvexHull:function(t){var e,i=!1,n=!1,s=null,r=null;for(e=t.length-1;e>=0;e--){var o=t[e];(i===!1||o.lat>i)&&(s=o,i=o.lat),(n===!1||o.lat=0;e--)t=i[e].getLatLng(),n.push(t);return L.QuickHull.getConvexHull(n)}}),L.MarkerCluster.include({_2PI:2*Math.PI,_circleFootSeparation:25,_circleStartAngle:Math.PI/6,_spiralFootSeparation:28,_spiralLengthStart:11,_spiralLengthFactor:5,_circleSpiralSwitchover:9,spiderfy:function(){if(this._group._spiderfied!==this&&!this._group._inZoomAnimation){var t,e=this.getAllChildMarkers(),i=this._group,n=i._map,s=n.latLngToLayerPoint(this._latlng);this._group._unspiderfy(),this._group._spiderfied=this,e.length>=this._circleSpiralSwitchover?t=this._generatePointsSpiral(e.length,s):(s.y+=10,t=this._generatePointsCircle(e.length,s)),this._animationSpiderfy(e,t)}},unspiderfy:function(t){this._group._inZoomAnimation||(this._animationUnspiderfy(t),this._group._spiderfied=null)},_generatePointsCircle:function(t,e){var i,n,s=this._group.options.spiderfyDistanceMultiplier*this._circleFootSeparation*(2+t),r=s/this._2PI,o=this._2PI/t,a=[];for(a.length=t,i=t-1;i>=0;i--)n=this._circleStartAngle+i*o,a[i]=new L.Point(e.x+r*Math.cos(n),e.y+r*Math.sin(n))._round();return a},_generatePointsSpiral:function(t,e){var i,n=this._group.options.spiderfyDistanceMultiplier*this._spiralLengthStart,s=this._group.options.spiderfyDistanceMultiplier*this._spiralFootSeparation,r=this._group.options.spiderfyDistanceMultiplier*this._spiralLengthFactor,o=0,a=[];for(a.length=t,i=t-1;i>=0;i--)o+=s/n+5e-4*i,a[i]=new L.Point(e.x+n*Math.cos(o),e.y+n*Math.sin(o))._round(),n+=this._2PI*r/o;return a},_noanimationUnspiderfy:function(){var t,e,i=this._group,n=i._map,s=i._featureGroup,r=this.getAllChildMarkers();for(this.setOpacity(1),e=r.length-1;e>=0;e--)t=r[e],s.removeLayer(t),t._preSpiderfyLatlng&&(t.setLatLng(t._preSpiderfyLatlng),delete t._preSpiderfyLatlng),t.setZIndexOffset&&t.setZIndexOffset(0),t._spiderLeg&&(n.removeLayer(t._spiderLeg),delete t._spiderLeg);i._spiderfied=null}}),L.MarkerCluster.include(L.DomUtil.TRANSITION?{SVG_ANIMATION:function(){return e.createElementNS("http://www.w3.org/2000/svg","animate").toString().indexOf("SVGAnimate")>-1}(),_animationSpiderfy:function(t,i){var n,s,r,o,a=this,h=this._group,_=h._map,u=h._featureGroup,l=_.latLngToLayerPoint(this._latlng);for(n=t.length-1;n>=0;n--)s=t[n],s.setOpacity?(s.setZIndexOffset(1e6),s.setOpacity(0),u.addLayer(s),s._setPos(l)):u.addLayer(s);h._forceLayout(),h._animationStart();var d=L.Path.SVG?0:.3,p=L.Path.SVG_NS;for(n=t.length-1;n>=0;n--)if(o=_.layerPointToLatLng(i[n]),s=t[n],s._preSpiderfyLatlng=s._latlng,s.setLatLng(o),s.setOpacity&&s.setOpacity(1),r=new L.Polyline([a._latlng,o],{weight:1.5,color:"#222",opacity:d}),_.addLayer(r),s._spiderLeg=r,L.Path.SVG&&this.SVG_ANIMATION){var c=r._path.getTotalLength();r._path.setAttribute("stroke-dasharray",c+","+c);var m=e.createElementNS(p,"animate");m.setAttribute("attributeName","stroke-dashoffset"),m.setAttribute("begin","indefinite"),m.setAttribute("from",c),m.setAttribute("to",0),m.setAttribute("dur",.25),r._path.appendChild(m),m.beginElement(),m=e.createElementNS(p,"animate"),m.setAttribute("attributeName","stroke-opacity"),m.setAttribute("attributeName","stroke-opacity"),m.setAttribute("begin","indefinite"),m.setAttribute("from",0),m.setAttribute("to",.5),m.setAttribute("dur",.25),r._path.appendChild(m),m.beginElement()}if(a.setOpacity(.3),L.Path.SVG)for(this._group._forceLayout(),n=t.length-1;n>=0;n--)s=t[n]._spiderLeg,s.options.opacity=.5,s._path.setAttribute("stroke-opacity",.5);setTimeout(function(){h._animationEnd(),h.fire("spiderfied")},200)},_animationUnspiderfy:function(t){var e,i,n,s=this._group,r=s._map,o=s._featureGroup,a=t?r._latLngToNewLayerPoint(this._latlng,t.zoom,t.center):r.latLngToLayerPoint(this._latlng),h=this.getAllChildMarkers(),_=L.Path.SVG&&this.SVG_ANIMATION;for(s._animationStart(),this.setOpacity(1),i=h.length-1;i>=0;i--)e=h[i],e._preSpiderfyLatlng&&(e.setLatLng(e._preSpiderfyLatlng),delete e._preSpiderfyLatlng,e.setOpacity?(e._setPos(a),e.setOpacity(0)):o.removeLayer(e),_&&(n=e._spiderLeg._path.childNodes[0],n.setAttribute("to",n.getAttribute("from")),n.setAttribute("from",0),n.beginElement(),n=e._spiderLeg._path.childNodes[1],n.setAttribute("from",.5),n.setAttribute("to",0),n.setAttribute("stroke-opacity",0),n.beginElement(),e._spiderLeg._path.setAttribute("stroke-opacity",0)));setTimeout(function(){var t=0;for(i=h.length-1;i>=0;i--)e=h[i],e._spiderLeg&&t++;for(i=h.length-1;i>=0;i--)e=h[i],e._spiderLeg&&(e.setOpacity&&(e.setOpacity(1),e.setZIndexOffset(0)),t>1&&o.removeLayer(e),r.removeLayer(e._spiderLeg),delete e._spiderLeg);s._animationEnd()},200)}}:{_animationSpiderfy:function(t,e){var i,n,s,r,o=this._group,a=o._map,h=o._featureGroup;for(i=t.length-1;i>=0;i--)r=a.layerPointToLatLng(e[i]),n=t[i],n._preSpiderfyLatlng=n._latlng,n.setLatLng(r),n.setZIndexOffset&&n.setZIndexOffset(1e6),h.addLayer(n),s=new L.Polyline([this._latlng,r],{weight:1.5,color:"#222"}),a.addLayer(s),n._spiderLeg=s;this.setOpacity(.3),o.fire("spiderfied")},_animationUnspiderfy:function(){this._noanimationUnspiderfy()}}),L.MarkerClusterGroup.include({_spiderfied:null,_spiderfierOnAdd:function(){this._map.on("click",this._unspiderfyWrapper,this),this._map.options.zoomAnimation&&this._map.on("zoomstart",this._unspiderfyZoomStart,this),this._map.on("zoomend",this._noanimationUnspiderfy,this),L.Path.SVG&&!L.Browser.touch&&this._map._initPathRoot()},_spiderfierOnRemove:function(){this._map.off("click",this._unspiderfyWrapper,this),this._map.off("zoomstart",this._unspiderfyZoomStart,this),this._map.off("zoomanim",this._unspiderfyZoomAnim,this),this._unspiderfy()},_unspiderfyZoomStart:function(){this._map&&this._map.on("zoomanim",this._unspiderfyZoomAnim,this)},_unspiderfyZoomAnim:function(t){L.DomUtil.hasClass(this._map._mapPane,"leaflet-touching")||(this._map.off("zoomanim",this._unspiderfyZoomAnim,this),this._unspiderfy(t))},_unspiderfyWrapper:function(){this._unspiderfy()},_unspiderfy:function(t){this._spiderfied&&this._spiderfied.unspiderfy(t)},_noanimationUnspiderfy:function(){this._spiderfied&&this._spiderfied._noanimationUnspiderfy()},_unspiderfyLayer:function(t){t._spiderLeg&&(this._featureGroup.removeLayer(t),t.setOpacity(1),t.setZIndexOffset(0),this._map.removeLayer(t._spiderLeg),delete t._spiderLeg)}})}(window,document); \ No newline at end of file +!function(t,e){L.MarkerClusterGroup=L.FeatureGroup.extend({options:{maxClusterRadius:80,iconCreateFunction:null,spiderfyOnMaxZoom:!0,showCoverageOnHover:!0,zoomToBoundsOnClick:!0,singleMarkerMode:!1,disableClusteringAtZoom:null,removeOutsideVisibleBounds:!0,animateAddingMarkers:!1,spiderfyDistanceMultiplier:1,polygonOptions:{}},initialize:function(t){L.Util.setOptions(this,t),this.options.iconCreateFunction||(this.options.iconCreateFunction=this._defaultIconCreateFunction),this._featureGroup=L.featureGroup(),this._featureGroup.on(L.FeatureGroup.EVENTS,this._propagateEvent,this),this._nonPointGroup=L.featureGroup(),this._nonPointGroup.on(L.FeatureGroup.EVENTS,this._propagateEvent,this),this._inZoomAnimation=0,this._needsClustering=[],this._needsRemoving=[],this._currentShownBounds=null},addLayer:function(t){if(t instanceof L.LayerGroup){var e=[];for(var i in t._layers)e.push(t._layers[i]);return this.addLayers(e)}if(!t.getLatLng)return this._nonPointGroup.addLayer(t),this;if(!this._map)return this._needsClustering.push(t),this;if(this.hasLayer(t))return this;this._unspiderfy&&this._unspiderfy(),this._addLayer(t,this._maxZoom);var n=t,s=this._map.getZoom();if(t.__parent)for(;n.__parent._zoom>=s;)n=n.__parent;return this._currentShownBounds.contains(n.getLatLng())&&(this.options.animateAddingMarkers?this._animationAddLayer(t,n):this._animationAddLayerNonAnimated(t,n)),this},removeLayer:function(t){if(t instanceof L.LayerGroup){var e=[];for(var i in t._layers)e.push(t._layers[i]);return this.removeLayers(e)}return t.getLatLng?this._map?t.__parent?(this._unspiderfy&&(this._unspiderfy(),this._unspiderfyLayer(t)),this._removeLayer(t,!0),this._featureGroup.hasLayer(t)&&(this._featureGroup.removeLayer(t),t.setOpacity&&t.setOpacity(1)),this):this:(!this._arraySplice(this._needsClustering,t)&&this.hasLayer(t)&&this._needsRemoving.push(t),this):(this._nonPointGroup.removeLayer(t),this)},addLayers:function(t){var e,i,n,s=this._map,r=this._featureGroup,o=this._nonPointGroup;for(e=0,i=t.length;i>e;e++)if(n=t[e],n.getLatLng){if(!this.hasLayer(n))if(s){if(this._addLayer(n,this._maxZoom),n.__parent&&2===n.__parent.getChildCount()){var a=n.__parent.getAllChildMarkers(),h=a[0]===n?a[1]:a[0];r.removeLayer(h)}}else this._needsClustering.push(n)}else o.addLayer(n);return s&&(r.eachLayer(function(t){t instanceof L.MarkerCluster&&t._iconNeedsUpdate&&t._updateIcon()}),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds)),this},removeLayers:function(t){var e,i,n,s=this._featureGroup,r=this._nonPointGroup;if(!this._map){for(e=0,i=t.length;i>e;e++)n=t[e],this._arraySplice(this._needsClustering,n),r.removeLayer(n);return this}for(e=0,i=t.length;i>e;e++)n=t[e],n.__parent?(this._removeLayer(n,!0,!0),s.hasLayer(n)&&(s.removeLayer(n),n.setOpacity&&n.setOpacity(1))):r.removeLayer(n);return this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds),s.eachLayer(function(t){t instanceof L.MarkerCluster&&t._updateIcon()}),this},clearLayers:function(){return this._map||(this._needsClustering=[],delete this._gridClusters,delete this._gridUnclustered),this._noanimationUnspiderfy&&this._noanimationUnspiderfy(),this._featureGroup.clearLayers(),this._nonPointGroup.clearLayers(),this.eachLayer(function(t){delete t.__parent}),this._map&&this._generateInitialClusters(),this},getBounds:function(){var t=new L.LatLngBounds;if(this._topClusterLevel)t.extend(this._topClusterLevel._bounds);else for(var e=this._needsClustering.length-1;e>=0;e--)t.extend(this._needsClustering[e].getLatLng());return t.extend(this._nonPointGroup.getBounds()),t},eachLayer:function(t,e){var i,n=this._needsClustering.slice();for(this._topClusterLevel&&this._topClusterLevel.getAllChildMarkers(n),i=n.length-1;i>=0;i--)t.call(e,n[i]);this._nonPointGroup.eachLayer(t,e)},getLayers:function(){var t=[];return this.eachLayer(function(e){t.push(e)}),t},hasLayer:function(t){if(!t)return!1;var e,i=this._needsClustering;for(e=i.length-1;e>=0;e--)if(i[e]===t)return!0;for(i=this._needsRemoving,e=i.length-1;e>=0;e--)if(i[e]===t)return!1;return!(!t.__parent||t.__parent._group!==this)||this._nonPointGroup.hasLayer(t)},zoomToShowLayer:function(t,e){var i=function(){if((t._icon||t.__parent._icon)&&!this._inZoomAnimation)if(this._map.off("moveend",i,this),this.off("animationend",i,this),t._icon)e();else if(t.__parent._icon){var n=function(){this.off("spiderfied",n,this),e()};this.on("spiderfied",n,this),t.__parent.spiderfy()}};t._icon?e():t.__parent._zoome;e++)n=this._needsRemoving[e],this._removeLayer(n,!0);for(this._needsRemoving=[],e=0,i=this._needsClustering.length;i>e;e++)n=this._needsClustering[e],n.getLatLng?n.__parent||this._addLayer(n,this._maxZoom):this._featureGroup.addLayer(n);this._needsClustering=[],this._map.on("zoomend",this._zoomEnd,this),this._map.on("moveend",this._moveEnd,this),this._spiderfierOnAdd&&this._spiderfierOnAdd(),this._bindEvents(),this._zoom=this._map.getZoom(),this._currentShownBounds=this._getExpandedVisibleBounds(),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,this._currentShownBounds)},onRemove:function(t){t.off("zoomend",this._zoomEnd,this),t.off("moveend",this._moveEnd,this),this._unbindEvents(),this._map._mapPane.className=this._map._mapPane.className.replace(" leaflet-cluster-anim",""),this._spiderfierOnRemove&&this._spiderfierOnRemove(),this._hideCoverage(),this._featureGroup.onRemove(t),this._nonPointGroup.onRemove(t),this._featureGroup.clearLayers(),this._map=null},getVisibleParent:function(t){for(var e=t;e&&!e._icon;)e=e.__parent;return e||null},_arraySplice:function(t,e){for(var i=t.length-1;i>=0;i--)if(t[i]===e)return t.splice(i,1),!0},_removeLayer:function(t,e,i){var n=this._gridClusters,s=this._gridUnclustered,r=this._featureGroup,o=this._map;if(e)for(var a=this._maxZoom;a>=0&&s[a].removeObject(t,o.project(t.getLatLng(),a));a--);var h,_=t.__parent,u=_._markers;for(this._arraySplice(u,t);_&&(_._childCount--,!(_._zoom<0));)e&&_._childCount<=1?(h=_._markers[0]===t?_._markers[1]:_._markers[0],n[_._zoom].removeObject(_,o.project(_._cLatLng,_._zoom)),s[_._zoom].addObject(h,o.project(h.getLatLng(),_._zoom)),this._arraySplice(_.__parent._childClusters,_),_.__parent._markers.push(h),h.__parent=_.__parent,_._icon&&(r.removeLayer(_),i||r.addLayer(h))):(_._recalculateBounds(),i&&_._icon||_._updateIcon()),_=_.__parent;delete t.__parent},_propagateEvent:function(t){t.layer instanceof L.MarkerCluster&&(t.type="cluster"+t.type),this.fire(t.type,t)},_defaultIconCreateFunction:function(t){var e=t.getChildCount(),i=" marker-cluster-";return i+=10>e?"small":100>e?"medium":"large",new L.DivIcon({html:"
"+e+"
",className:"marker-cluster"+i,iconSize:new L.Point(40,40)})},_bindEvents:function(){var t=this._map,e=this.options.spiderfyOnMaxZoom,i=this.options.showCoverageOnHover,n=this.options.zoomToBoundsOnClick;(e||n)&&this.on("clusterclick",this._zoomOrSpiderfy,this),i&&(this.on("clustermouseover",this._showCoverage,this),this.on("clustermouseout",this._hideCoverage,this),t.on("zoomend",this._hideCoverage,this))},_zoomOrSpiderfy:function(t){var e=this._map;e.getMaxZoom()===e.getZoom()?this.options.spiderfyOnMaxZoom&&t.layer.spiderfy():this.options.zoomToBoundsOnClick&&t.layer.zoomToBounds()},_showCoverage:function(t){var e=this._map;this._inZoomAnimation||(this._shownPolygon&&e.removeLayer(this._shownPolygon),t.layer.getChildCount()>2&&t.layer!==this._spiderfied&&(this._shownPolygon=new L.Polygon(t.layer.getConvexHull(),this.options.polygonOptions),e.addLayer(this._shownPolygon)))},_hideCoverage:function(){this._shownPolygon&&(this._map.removeLayer(this._shownPolygon),this._shownPolygon=null)},_unbindEvents:function(){var t=this.options.spiderfyOnMaxZoom,e=this.options.showCoverageOnHover,i=this.options.zoomToBoundsOnClick,n=this._map;(t||i)&&this.off("clusterclick",this._zoomOrSpiderfy,this),e&&(this.off("clustermouseover",this._showCoverage,this),this.off("clustermouseout",this._hideCoverage,this),n.off("zoomend",this._hideCoverage,this))},_zoomEnd:function(){this._map&&(this._mergeSplitClusters(),this._zoom=this._map._zoom,this._currentShownBounds=this._getExpandedVisibleBounds())},_moveEnd:function(){if(!this._inZoomAnimation){var t=this._getExpandedVisibleBounds();this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,this._zoom,t),this._topClusterLevel._recursivelyAddChildrenToMap(null,this._zoom,t),this._currentShownBounds=t}},_generateInitialClusters:function(){var t=this._map.getMaxZoom(),e=this.options.maxClusterRadius;this.options.disableClusteringAtZoom&&(t=this.options.disableClusteringAtZoom-1),this._maxZoom=t,this._gridClusters={},this._gridUnclustered={};for(var i=t;i>=0;i--)this._gridClusters[i]=new L.DistanceGrid(e),this._gridUnclustered[i]=new L.DistanceGrid(e);this._topClusterLevel=new L.MarkerCluster(this,-1)},_addLayer:function(t,e){var i,n,s=this._gridClusters,r=this._gridUnclustered;for(this.options.singleMarkerMode&&(t.options.icon=this.options.iconCreateFunction({getChildCount:function(){return 1},getAllChildMarkers:function(){return[t]}}));e>=0;e--){i=this._map.project(t.getLatLng(),e);var o=s[e].getNearObject(i);if(o)return o._addChild(t),t.__parent=o,void 0;if(o=r[e].getNearObject(i)){var a=o.__parent;a&&this._removeLayer(o,!1);var h=new L.MarkerCluster(this,e,o,t);s[e].addObject(h,this._map.project(h._cLatLng,e)),o.__parent=h,t.__parent=h;var _=h;for(n=e-1;n>a._zoom;n--)_=new L.MarkerCluster(this,n,_),s[n].addObject(_,this._map.project(o.getLatLng(),n));for(a._addChild(_),n=e;n>=0&&r[n].removeObject(o,this._map.project(o.getLatLng(),n));n--);return}r[e].addObject(t,i)}this._topClusterLevel._addChild(t),t.__parent=this._topClusterLevel},_mergeSplitClusters:function(){this._zoomthis._map._zoom?(this._animationStart(),this._animationZoomOut(this._zoom,this._map._zoom)):this._moveEnd()},_getExpandedVisibleBounds:function(){if(!this.options.removeOutsideVisibleBounds)return this.getBounds();var t=this._map,e=t.getBounds(),i=e._southWest,n=e._northEast,s=L.Browser.mobile?0:Math.abs(i.lat-n.lat),r=L.Browser.mobile?0:Math.abs(i.lng-n.lng);return new L.LatLngBounds(new L.LatLng(i.lat-s,i.lng-r,!0),new L.LatLng(n.lat+s,n.lng+r,!0))},_animationAddLayerNonAnimated:function(t,e){if(e===t)this._featureGroup.addLayer(t);else if(2===e._childCount){e._addToMap();var i=e.getAllChildMarkers();this._featureGroup.removeLayer(i[0]),this._featureGroup.removeLayer(i[1])}else e._updateIcon()}}),L.MarkerClusterGroup.include(L.DomUtil.TRANSITION?{_animationStart:function(){this._map._mapPane.className+=" leaflet-cluster-anim",this._inZoomAnimation++},_animationEnd:function(){this._map&&(this._map._mapPane.className=this._map._mapPane.className.replace(" leaflet-cluster-anim","")),this._inZoomAnimation--,this.fire("animationend")},_animationZoomIn:function(t,e){var i,n=this,s=this._getExpandedVisibleBounds(),r=this._featureGroup;this._topClusterLevel._recursively(s,t,0,function(n){var o,a=n._latlng,h=n._markers;for(s.contains(a)||(a=null),n._isSingleParent()&&t+1===e?(r.removeLayer(n),n._recursivelyAddChildrenToMap(null,e,s)):(n.setOpacity(0),n._recursivelyAddChildrenToMap(a,e,s)),i=h.length-1;i>=0;i--)o=h[i],s.contains(o._latlng)||r.removeLayer(o)}),this._forceLayout(),n._topClusterLevel._recursivelyBecomeVisible(s,e),r.eachLayer(function(t){t instanceof L.MarkerCluster||!t._icon||t.setOpacity(1)}),n._topClusterLevel._recursively(s,t,e,function(t){t._recursivelyRestoreChildPositions(e)}),setTimeout(function(){n._topClusterLevel._recursively(s,t,0,function(t){r.removeLayer(t),t.setOpacity(1)}),n._animationEnd()},200)},_animationZoomOut:function(t,e){this._animationZoomOutSingle(this._topClusterLevel,t-1,e),this._topClusterLevel._recursivelyAddChildrenToMap(null,e,this._getExpandedVisibleBounds()),this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,t,this._getExpandedVisibleBounds())},_animationZoomOutSingle:function(t,e,i){var n=this._getExpandedVisibleBounds();t._recursivelyAnimateChildrenInAndAddSelfToMap(n,e+1,i);var s=this;this._forceLayout(),t._recursivelyBecomeVisible(n,i),setTimeout(function(){if(1===t._childCount){var r=t._markers[0];r.setLatLng(r.getLatLng()),r.setOpacity(1)}else t._recursively(n,i,0,function(t){t._recursivelyRemoveChildrenFromMap(n,e+1)});s._animationEnd()},200)},_animationAddLayer:function(t,e){var i=this,n=this._featureGroup;n.addLayer(t),e!==t&&(e._childCount>2?(e._updateIcon(),this._forceLayout(),this._animationStart(),t._setPos(this._map.latLngToLayerPoint(e.getLatLng())),t.setOpacity(0),setTimeout(function(){n.removeLayer(t),t.setOpacity(1),i._animationEnd()},200)):(this._forceLayout(),i._animationStart(),i._animationZoomOutSingle(e,this._map.getMaxZoom(),this._map.getZoom())))},_forceLayout:function(){L.Util.falseFn(e.body.offsetWidth)}}:{_animationStart:function(){},_animationZoomIn:function(t,e){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,t),this._topClusterLevel._recursivelyAddChildrenToMap(null,e,this._getExpandedVisibleBounds())},_animationZoomOut:function(t,e){this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds,t),this._topClusterLevel._recursivelyAddChildrenToMap(null,e,this._getExpandedVisibleBounds())},_animationAddLayer:function(t,e){this._animationAddLayerNonAnimated(t,e)}}),L.markerClusterGroup=function(t){return new L.MarkerClusterGroup(t)},L.MarkerCluster=L.Marker.extend({initialize:function(t,e,i,n){L.Marker.prototype.initialize.call(this,i?i._cLatLng||i.getLatLng():new L.LatLng(0,0),{icon:this}),this._group=t,this._zoom=e,this._markers=[],this._childClusters=[],this._childCount=0,this._iconNeedsUpdate=!0,this._bounds=new L.LatLngBounds,i&&this._addChild(i),n&&this._addChild(n)},getAllChildMarkers:function(t){t=t||[];for(var e=this._childClusters.length-1;e>=0;e--)this._childClusters[e].getAllChildMarkers(t);for(var i=this._markers.length-1;i>=0;i--)t.push(this._markers[i]);return t},getChildCount:function(){return this._childCount},zoomToBounds:function(){for(var t,e=this._childClusters.slice(),i=this._group._map,n=i.getBoundsZoom(this._bounds),s=this._zoom+1;e.length>0&&n>s;){s++;var r=[];for(t=0;ts?this._group._map.setView(this._latlng,s):this._group._map.fitBounds(this._bounds)},getBounds:function(){var t=new L.LatLngBounds;return t.extend(this._bounds),t},_updateIcon:function(){this._iconNeedsUpdate=!0,this._icon&&this.setIcon(this)},createIcon:function(){return this._iconNeedsUpdate&&(this._iconObj=this._group.options.iconCreateFunction(this),this._iconNeedsUpdate=!1),this._iconObj.createIcon()},createShadow:function(){return this._iconObj.createShadow()},_addChild:function(t,e){this._iconNeedsUpdate=!0,this._expandBounds(t),t instanceof L.MarkerCluster?(e||(this._childClusters.push(t),t.__parent=this),this._childCount+=t._childCount):(e||this._markers.push(t),this._childCount++),this.__parent&&this.__parent._addChild(t,!0)},_expandBounds:function(t){var e,i=t._wLatLng||t._latlng;t instanceof L.MarkerCluster?(this._bounds.extend(t._bounds),e=t._childCount):(this._bounds.extend(i),e=1),this._cLatLng||(this._cLatLng=t._cLatLng||i);var n=this._childCount+e;this._wLatLng?(this._wLatLng.lat=(i.lat*e+this._wLatLng.lat*this._childCount)/n,this._wLatLng.lng=(i.lng*e+this._wLatLng.lng*this._childCount)/n):this._latlng=this._wLatLng=new L.LatLng(i.lat,i.lng)},_addToMap:function(t){t&&(this._backupLatlng=this._latlng,this.setLatLng(t)),this._group._featureGroup.addLayer(this)},_recursivelyAnimateChildrenIn:function(t,e,i){this._recursively(t,0,i-1,function(t){var i,n,s=t._markers;for(i=s.length-1;i>=0;i--)n=s[i],n._icon&&(n._setPos(e),n.setOpacity(0))},function(t){var i,n,s=t._childClusters;for(i=s.length-1;i>=0;i--)n=s[i],n._icon&&(n._setPos(e),n.setOpacity(0))})},_recursivelyAnimateChildrenInAndAddSelfToMap:function(t,e,i){this._recursively(t,i,0,function(n){n._recursivelyAnimateChildrenIn(t,n._group._map.latLngToLayerPoint(n.getLatLng()).round(),e),n._isSingleParent()&&e-1===i?(n.setOpacity(1),n._recursivelyRemoveChildrenFromMap(t,e)):n.setOpacity(0),n._addToMap()})},_recursivelyBecomeVisible:function(t,e){this._recursively(t,0,e,null,function(t){t.setOpacity(1)})},_recursivelyAddChildrenToMap:function(t,e,i){this._recursively(i,-1,e,function(n){if(e!==n._zoom)for(var s=n._markers.length-1;s>=0;s--){var r=n._markers[s];i.contains(r._latlng)&&(t&&(r._backupLatlng=r.getLatLng(),r.setLatLng(t),r.setOpacity&&r.setOpacity(0)),n._group._featureGroup.addLayer(r))}},function(e){e._addToMap(t)})},_recursivelyRestoreChildPositions:function(t){for(var e=this._markers.length-1;e>=0;e--){var i=this._markers[e];i._backupLatlng&&(i.setLatLng(i._backupLatlng),delete i._backupLatlng)}if(t-1===this._zoom)for(var n=this._childClusters.length-1;n>=0;n--)this._childClusters[n]._restorePosition();else for(var s=this._childClusters.length-1;s>=0;s--)this._childClusters[s]._recursivelyRestoreChildPositions(t)},_restorePosition:function(){this._backupLatlng&&(this.setLatLng(this._backupLatlng),delete this._backupLatlng)},_recursivelyRemoveChildrenFromMap:function(t,e,i){var n,s;this._recursively(t,-1,e-1,function(t){for(s=t._markers.length-1;s>=0;s--)n=t._markers[s],i&&i.contains(n._latlng)||(t._group._featureGroup.removeLayer(n),n.setOpacity&&n.setOpacity(1))},function(t){for(s=t._childClusters.length-1;s>=0;s--)n=t._childClusters[s],i&&i.contains(n._latlng)||(t._group._featureGroup.removeLayer(n),n.setOpacity&&n.setOpacity(1))})},_recursively:function(t,e,i,n,s){var r,o,a=this._childClusters,h=this._zoom;if(e>h)for(r=a.length-1;r>=0;r--)o=a[r],t.intersects(o._bounds)&&o._recursively(t,e,i,n,s);else if(n&&n(this),s&&this._zoom===i&&s(this),i>h)for(r=a.length-1;r>=0;r--)o=a[r],t.intersects(o._bounds)&&o._recursively(t,e,i,n,s)},_recalculateBounds:function(){var t,e=this._markers,i=this._childClusters;for(this._bounds=new L.LatLngBounds,delete this._wLatLng,t=e.length-1;t>=0;t--)this._expandBounds(e[t]);for(t=i.length-1;t>=0;t--)this._expandBounds(i[t])},_isSingleParent:function(){return this._childClusters.length>0&&this._childClusters[0]._childCount===this._childCount}}),L.DistanceGrid=function(t){this._cellSize=t,this._sqCellSize=t*t,this._grid={},this._objectPoint={}},L.DistanceGrid.prototype={addObject:function(t,e){var i=this._getCoord(e.x),n=this._getCoord(e.y),s=this._grid,r=s[n]=s[n]||{},o=r[i]=r[i]||[],a=L.Util.stamp(t);this._objectPoint[a]=e,o.push(t)},updateObject:function(t,e){this.removeObject(t),this.addObject(t,e)},removeObject:function(t,e){var i,n,s=this._getCoord(e.x),r=this._getCoord(e.y),o=this._grid,a=o[r]=o[r]||{},h=a[s]=a[s]||[];for(delete this._objectPoint[L.Util.stamp(t)],i=0,n=h.length;n>i;i++)if(h[i]===t)return h.splice(i,1),1===n&&delete a[s],!0},eachObject:function(t,e){var i,n,s,r,o,a,h,_=this._grid;for(i in _){o=_[i];for(n in o)for(a=o[n],s=0,r=a.length;r>s;s++)h=t.call(e,a[s]),h&&(s--,r--)}},getNearObject:function(t){var e,i,n,s,r,o,a,h,_=this._getCoord(t.x),u=this._getCoord(t.y),l=this._objectPoint,d=this._sqCellSize,p=null;for(e=u-1;u+1>=e;e++)if(s=this._grid[e])for(i=_-1;_+1>=i;i++)if(r=s[i])for(n=0,o=r.length;o>n;n++)a=r[n],h=this._sqDist(l[L.Util.stamp(a)],t),d>h&&(d=h,p=a);return p},_getCoord:function(t){return Math.floor(t/this._cellSize)},_sqDist:function(t,e){var i=e.x-t.x,n=e.y-t.y;return i*i+n*n}},function(){L.QuickHull={getDistant:function(t,e){var i=e[1].lat-e[0].lat,n=e[0].lng-e[1].lng;return n*(t.lat-e[0].lat)+i*(t.lng-e[0].lng)},findMostDistantPointFromBaseLine:function(t,e){var i,n,s,r=0,o=null,a=[];for(i=e.length-1;i>=0;i--)n=e[i],s=this.getDistant(n,t),s>0&&(a.push(n),s>r&&(r=s,o=n));return{maxPoint:o,newPoints:a}},buildConvexHull:function(t,e){var i=[],n=this.findMostDistantPointFromBaseLine(t,e);return n.maxPoint?(i=i.concat(this.buildConvexHull([t[0],n.maxPoint],n.newPoints)),i=i.concat(this.buildConvexHull([n.maxPoint,t[1]],n.newPoints))):[t[0]]},getConvexHull:function(t){var e,i=!1,n=!1,s=null,r=null;for(e=t.length-1;e>=0;e--){var o=t[e];(i===!1||o.lat>i)&&(s=o,i=o.lat),(n===!1||o.lat=0;e--)t=i[e].getLatLng(),n.push(t);return L.QuickHull.getConvexHull(n)}}),L.MarkerCluster.include({_2PI:2*Math.PI,_circleFootSeparation:25,_circleStartAngle:Math.PI/6,_spiralFootSeparation:28,_spiralLengthStart:11,_spiralLengthFactor:5,_circleSpiralSwitchover:9,spiderfy:function(){if(this._group._spiderfied!==this&&!this._group._inZoomAnimation){var t,e=this.getAllChildMarkers(),i=this._group,n=i._map,s=n.latLngToLayerPoint(this._latlng);this._group._unspiderfy(),this._group._spiderfied=this,e.length>=this._circleSpiralSwitchover?t=this._generatePointsSpiral(e.length,s):(s.y+=10,t=this._generatePointsCircle(e.length,s)),this._animationSpiderfy(e,t)}},unspiderfy:function(t){this._group._inZoomAnimation||(this._animationUnspiderfy(t),this._group._spiderfied=null)},_generatePointsCircle:function(t,e){var i,n,s=this._group.options.spiderfyDistanceMultiplier*this._circleFootSeparation*(2+t),r=s/this._2PI,o=this._2PI/t,a=[];for(a.length=t,i=t-1;i>=0;i--)n=this._circleStartAngle+i*o,a[i]=new L.Point(e.x+r*Math.cos(n),e.y+r*Math.sin(n))._round();return a},_generatePointsSpiral:function(t,e){var i,n=this._group.options.spiderfyDistanceMultiplier*this._spiralLengthStart,s=this._group.options.spiderfyDistanceMultiplier*this._spiralFootSeparation,r=this._group.options.spiderfyDistanceMultiplier*this._spiralLengthFactor,o=0,a=[];for(a.length=t,i=t-1;i>=0;i--)o+=s/n+5e-4*i,a[i]=new L.Point(e.x+n*Math.cos(o),e.y+n*Math.sin(o))._round(),n+=this._2PI*r/o;return a},_noanimationUnspiderfy:function(){var t,e,i=this._group,n=i._map,s=i._featureGroup,r=this.getAllChildMarkers();for(this.setOpacity(1),e=r.length-1;e>=0;e--)t=r[e],s.removeLayer(t),t._preSpiderfyLatlng&&(t.setLatLng(t._preSpiderfyLatlng),delete t._preSpiderfyLatlng),t.setZIndexOffset&&t.setZIndexOffset(0),t._spiderLeg&&(n.removeLayer(t._spiderLeg),delete t._spiderLeg);i._spiderfied=null}}),L.MarkerCluster.include(L.DomUtil.TRANSITION?{SVG_ANIMATION:function(){return e.createElementNS("http://www.w3.org/2000/svg","animate").toString().indexOf("SVGAnimate")>-1}(),_animationSpiderfy:function(t,i){var n,s,r,o,a=this,h=this._group,_=h._map,u=h._featureGroup,l=_.latLngToLayerPoint(this._latlng);for(n=t.length-1;n>=0;n--)s=t[n],s.setOpacity?(s.setZIndexOffset(1e6),s.setOpacity(0),u.addLayer(s),s._setPos(l)):u.addLayer(s);h._forceLayout(),h._animationStart();var d=L.Path.SVG?0:.3,p=L.Path.SVG_NS;for(n=t.length-1;n>=0;n--)if(o=_.layerPointToLatLng(i[n]),s=t[n],s._preSpiderfyLatlng=s._latlng,s.setLatLng(o),s.setOpacity&&s.setOpacity(1),r=new L.Polyline([a._latlng,o],{weight:1.5,color:"#222",opacity:d}),_.addLayer(r),s._spiderLeg=r,L.Path.SVG&&this.SVG_ANIMATION){var c=r._path.getTotalLength();r._path.setAttribute("stroke-dasharray",c+","+c);var m=e.createElementNS(p,"animate");m.setAttribute("attributeName","stroke-dashoffset"),m.setAttribute("begin","indefinite"),m.setAttribute("from",c),m.setAttribute("to",0),m.setAttribute("dur",.25),r._path.appendChild(m),m.beginElement(),m=e.createElementNS(p,"animate"),m.setAttribute("attributeName","stroke-opacity"),m.setAttribute("attributeName","stroke-opacity"),m.setAttribute("begin","indefinite"),m.setAttribute("from",0),m.setAttribute("to",.5),m.setAttribute("dur",.25),r._path.appendChild(m),m.beginElement()}if(a.setOpacity(.3),L.Path.SVG)for(this._group._forceLayout(),n=t.length-1;n>=0;n--)s=t[n]._spiderLeg,s.options.opacity=.5,s._path.setAttribute("stroke-opacity",.5);setTimeout(function(){h._animationEnd(),h.fire("spiderfied")},200)},_animationUnspiderfy:function(t){var e,i,n,s=this._group,r=s._map,o=s._featureGroup,a=t?r._latLngToNewLayerPoint(this._latlng,t.zoom,t.center):r.latLngToLayerPoint(this._latlng),h=this.getAllChildMarkers(),_=L.Path.SVG&&this.SVG_ANIMATION;for(s._animationStart(),this.setOpacity(1),i=h.length-1;i>=0;i--)e=h[i],e._preSpiderfyLatlng&&(e.setLatLng(e._preSpiderfyLatlng),delete e._preSpiderfyLatlng,e.setOpacity?(e._setPos(a),e.setOpacity(0)):o.removeLayer(e),_&&(n=e._spiderLeg._path.childNodes[0],n.setAttribute("to",n.getAttribute("from")),n.setAttribute("from",0),n.beginElement(),n=e._spiderLeg._path.childNodes[1],n.setAttribute("from",.5),n.setAttribute("to",0),n.setAttribute("stroke-opacity",0),n.beginElement(),e._spiderLeg._path.setAttribute("stroke-opacity",0)));setTimeout(function(){var t=0;for(i=h.length-1;i>=0;i--)e=h[i],e._spiderLeg&&t++;for(i=h.length-1;i>=0;i--)e=h[i],e._spiderLeg&&(e.setOpacity&&(e.setOpacity(1),e.setZIndexOffset(0)),t>1&&o.removeLayer(e),r.removeLayer(e._spiderLeg),delete e._spiderLeg);s._animationEnd()},200)}}:{_animationSpiderfy:function(t,e){var i,n,s,r,o=this._group,a=o._map,h=o._featureGroup;for(i=t.length-1;i>=0;i--)r=a.layerPointToLatLng(e[i]),n=t[i],n._preSpiderfyLatlng=n._latlng,n.setLatLng(r),n.setZIndexOffset&&n.setZIndexOffset(1e6),h.addLayer(n),s=new L.Polyline([this._latlng,r],{weight:1.5,color:"#222"}),a.addLayer(s),n._spiderLeg=s;this.setOpacity(.3),o.fire("spiderfied")},_animationUnspiderfy:function(){this._noanimationUnspiderfy()}}),L.MarkerClusterGroup.include({_spiderfied:null,_spiderfierOnAdd:function(){this._map.on("click",this._unspiderfyWrapper,this),this._map.options.zoomAnimation&&this._map.on("zoomstart",this._unspiderfyZoomStart,this),this._map.on("zoomend",this._noanimationUnspiderfy,this),L.Path.SVG&&!L.Browser.touch&&this._map._initPathRoot()},_spiderfierOnRemove:function(){this._map.off("click",this._unspiderfyWrapper,this),this._map.off("zoomstart",this._unspiderfyZoomStart,this),this._map.off("zoomanim",this._unspiderfyZoomAnim,this),this._unspiderfy()},_unspiderfyZoomStart:function(){this._map&&this._map.on("zoomanim",this._unspiderfyZoomAnim,this)},_unspiderfyZoomAnim:function(t){L.DomUtil.hasClass(this._map._mapPane,"leaflet-touching")||(this._map.off("zoomanim",this._unspiderfyZoomAnim,this),this._unspiderfy(t))},_unspiderfyWrapper:function(){this._unspiderfy()},_unspiderfy:function(t){this._spiderfied&&this._spiderfied.unspiderfy(t)},_noanimationUnspiderfy:function(){this._spiderfied&&this._spiderfied._noanimationUnspiderfy()},_unspiderfyLayer:function(t){t._spiderLeg&&(this._featureGroup.removeLayer(t),t.setOpacity(1),t.setZIndexOffset(0),this._map.removeLayer(t._spiderLeg),delete t._spiderLeg)}})}(window,document); diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index d475361..1402085 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -1,32 +1,48 @@ +// jQuery(window).load(function() { +// mallMapJs() +// }); + $(document).ready(function () { +mallMapJs() + }); +function mallMapJs(){ // Set map height to be window height minus header height. var windowheight = $(window).height(); $('#map').css('height', windowheight - 54); - + //adding this so that the mall-map markers will load (most of the time; sometimes it breaks) + $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); + var imported = document.createElement("script"); + imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; + document.head.appendChild(imported); var MAP_URL_TEMPLATE = 'https://stamen-tiles-{s}.a.ssl.fastly.net/terrain/{z}/{x}/{y}{r}.png'; + // MAP_CENTER controls the default starting place + // var MAP_CENTER = [38.8891, -77.02949]; var MAP_CENTER = [41.9001702, 12.4698422]; - var MAP_ZOOM = 15; + // MAP_ZOOM controls the default zoom of the map + var MAP_ZOOM = 17; + // var MAP_ZOOM = 15; var MAP_MIN_ZOOM = 14; var MAP_MAX_ZOOM = 18; + // MAP_MAX_BOUNDS controls the boundaries of the map var MAP_MAX_BOUNDS = [[41.908628, 12.451941], [41.88927, 12.490607]]; var LOCATE_BOUNDS = [[41.908628, 12.451941], [41.88927, 12.490607]]; var MAX_LOCATE_METERS = 8000; - + var map; var historicMapLayer; var markers; var jqXhr; var locationMarker; - + // Set the base map layer. map = L.map('map', { - center: MAP_CENTER, - zoom: MAP_ZOOM, - minZoom: MAP_MIN_ZOOM, - maxZoom: MAP_MAX_ZOOM, - maxBounds: MAP_MAX_BOUNDS, + center: MAP_CENTER, + zoom: MAP_ZOOM, + minZoom: MAP_MIN_ZOOM, + maxZoom: MAP_MAX_ZOOM, + maxBounds: MAP_MAX_BOUNDS, zoomControl: false }); map.addLayer(L.tileLayer(MAP_URL_TEMPLATE)); @@ -45,13 +61,13 @@ $(document).ready(function () { $('#first-time').hide(); map.locate({watch: true}); }); - + // Retain previous form state, if needed. retainFormState(); - + // Add all markers by default, or retain previous marker state. doFilters(); - + // Handle location found. map.on('locationfound', function (e) { // User within location bounds. Set the location marker. @@ -85,23 +101,23 @@ $(document).ready(function () { dialog('option', 'title', 'Not Quite on the Mall'). dialog('open'); } - + } }); - + // Handle location error. map.on('locationerror', function () { map.stopLocate(); $('#locate-button').addClass('disabled'); }); - + // Set up the dialog window. $('#dialog').dialog({ - autoOpen: false, - draggable: false, + autoOpen: false, + draggable: false, resizable: false }); - + // Handle the filter form. $('#filter-button').click(function(e) { e.preventDefault(); @@ -120,13 +136,13 @@ $(document).ready(function () { } filterButton.data('clicks', !clicks); }); - + // Revert form to default and display all markers. $('#all-button').click(function(e) { e.preventDefault(); revertFormState(); }); - + // Handle locate button. $('#locate-button').click(function (e) { e.preventDefault(); @@ -140,7 +156,7 @@ $(document).ready(function () { map.stopLocate(); map.locate({watch: true}); }); - + // Toggle historic map layer on and off. $('#toggle-map-button').click(function (e) { e.preventDefault(); @@ -159,7 +175,7 @@ $(document).ready(function () { } toggleMapButton.data('clicks', !clicks); }); - + // Toggle map filters $('#filters div label').click(function() { var checkboxLabel = $(this); @@ -169,7 +185,7 @@ $(document).ready(function () { checkboxLabel.removeClass('on'); } }); - + // Filter historic map layer. $('#map-coverage').change(function () { if (historicMapLayer) { @@ -182,7 +198,7 @@ $(document).ready(function () { } doFilters(); }); - + // Filter item type. $('#item-type').change(function () { var itemType = $(this); @@ -202,11 +218,11 @@ $(document).ready(function () { } doFilters(); }); - + $('#map-coverage,#item-type').on('touchstart touchend', function(event) { event.stopPropagation(); }); - + // Filter place type. $('input[name=place-type]').change(function () { // Handle all place types checkbox. @@ -218,7 +234,7 @@ $(document).ready(function () { } doFilters(); }); - + // Handle the all place types checkbox. $('input[name=place-type-all]').change(function () { // Uncheck all place types. @@ -226,7 +242,7 @@ $(document).ready(function () { parent().removeClass('on'); doFilters(); }); - + // Filter event type. $('input[name=event-type]').change(function () { // Handle all event types checkbox. @@ -238,7 +254,7 @@ $(document).ready(function () { } doFilters(); }); - + // Handle the all event types checkbox. $('input[name=event-type-all]').change(function () { // Uncheck all event types. @@ -246,17 +262,17 @@ $(document).ready(function () { parent().removeClass('on'); doFilters(); }); - + // Handle the info panel back button. $('a.back-button').click(function (e) { e.preventDefault(); $('#info-panel').fadeToggle(200, 'linear'); $('#toggle-map-button + .back-button').hide(); }); - + /* * Filter markers. - * + * * This must be called on every form change. */ function doFilters() { @@ -264,23 +280,23 @@ $(document).ready(function () { if (jqXhr) { jqXhr.abort() } - + // Remove the current markers. if (markers) { map.removeLayer(markers); } - + var mapCoverage = $('#map-coverage'); var itemType = $('#item-type'); var placeTypes = $('input[name=place-type]:checked'); var eventTypes = $('input[name=event-type]:checked'); - + // Prepare POST data object for request. var postData = { - placeTypes: [], - eventTypes: [], + placeTypes: [], + eventTypes: [], }; - + // Handle each filter, adding to the POST data object. if ('0' != mapCoverage.val()) { postData['mapCoverage'] = mapCoverage.val(); @@ -298,9 +314,10 @@ $(document).ready(function () { postData.eventTypes.push(this.value); }); } - + // Make the POST request, handle the GeoJSON response, and add markers. jqXhr = $.post('mall-map/index/filter', postData, function (response) { + //response is an array of coordinate; var item = (1 == response.features.length) ? 'item' : 'items'; $('#marker-count').text(response.features.length + " " + item); var geoJsonLayer = L.geoJson(response, { @@ -315,9 +332,9 @@ $(document).ready(function () { } popupContent += 'view more info'; marker.bindPopup(popupContent, {maxWidth: 200, offset: L.point(0, -40)}).openPopup(); - + window.setTimeout(function () { - //map.panTo([feature.geometry.coordinates[1],feature.geometry.coordinates[0]]); + //map.panTo([feature.geometry.coordinates[1],feature.geometry.coordinates[0]]); layer.getPopup().update(); $('.open-info-panel').click(function (e) { e.preventDefault(); @@ -325,7 +342,7 @@ $(document).ready(function () { $('#toggle-map-button + .back-button').show(); }); }, 500); - + // Populate the item info panel. var content = $('#info-panel-content'); content.empty(); @@ -340,16 +357,34 @@ $(document).ready(function () { }); } }); - markers = new L.MarkerClusterGroup({ - showCoverageOnHover: false, - maxClusterRadius: 40, - spiderfyDistanceMultiplier: 2 - }); + // $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); + // console.log(L.markerClusterGroup); + // $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); + // markers = new L.MarkerClusterGroup.prototype.initialize.call({ + + //adding this so that the mall-map markers will load (most of the time; sometimes it breaks) + for(var i = 0; i<100;i++){ + try{ + markers = new L.MarkerClusterGroup({ + showCoverageOnHover: false, + maxClusterRadius: 40, + spiderfyDistanceMultiplier: 2 + }); + break; + } + catch(err){ + $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); + // var imported = document.createElement("script"); + // imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; + // document.head.appendChild(imported); + } + } + console.log(i.toString()); markers.addLayer(geoJsonLayer); map.addLayer(markers); }); } - + /* * Add the historic map layer. */ @@ -359,17 +394,17 @@ $(document).ready(function () { var getData = {'text': $('#map-coverage').val()}; $.get('mall-map/index/historic-map-data', getData, function (response) { historicMapLayer = L.tileLayer( - response.url, + response.url, {tms: true, opacity: 1.00} ); map.addLayer(historicMapLayer); $('#toggle-map-button').show(); - + // Set the map title as the map attribution prefix. map.attributionControl.setPrefix(response.title); }); } - + /* * Remove the historic map layer. */ @@ -379,7 +414,7 @@ $(document).ready(function () { map.removeLayer(historicMapLayer); map.attributionControl.setPrefix(''); } - + /* * Revert to default (original) form state. */ @@ -388,29 +423,29 @@ $(document).ready(function () { if (historicMapLayer) { removeHistoricMapLayer(); } - + $('#map-coverage').val('0'); $('#item-type').val('0'); - + $('#place-type-div').hide({duration: 'fast'}); $('input[name=place-type-all]').prop('checked', true). parent().addClass('on'); $('input[name=place-type]:checked').prop('checked', false). parent().removeClass('on'); - + $('#event-type-div').hide({duration: 'fast'}); $('input[name=event-type-all]').prop('checked', true). parent().addClass('on'); $('input[name=event-type]:checked').prop('checked', false). parent().removeClass('on'); - + doFilters(); } - + /* * Retain previous form state. - * - * Acts on the assumption that all browsers will preserve the form state + * + * Acts on the assumption that all browsers will preserve the form state * when navigating back to the map from another page. */ function retainFormState() @@ -435,12 +470,12 @@ $(document).ready(function () { $('#event-type-div').show({duration: 'fast'}); } } - - var debugTimestamp; + + var debugTimestamp; function start() { debugTimestamp = new Date().getTime(); } function stop() { console.log((new Date().getTime() / 1000) - (debugTimestamp / 1000)); } -}); +} diff --git a/views/public/javascripts/new_markercluster_src.js b/views/public/javascripts/new_markercluster_src.js new file mode 100644 index 0000000..f6ed719 --- /dev/null +++ b/views/public/javascripts/new_markercluster_src.js @@ -0,0 +1,2188 @@ +/* + Leaflet.markercluster, Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps. + https://github.com/Leaflet/Leaflet.markercluster + (c) 2012-2013, Dave Leaver, smartrak +*/ +(function (window, document, undefined) {/* + * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within + */ + +L.MarkerClusterGroup = L.FeatureGroup.extend({ + + options: { + maxClusterRadius: 80, //A cluster will cover at most this many pixels from its center + iconCreateFunction: null, + + spiderfyOnMaxZoom: true, + showCoverageOnHover: true, + zoomToBoundsOnClick: true, + singleMarkerMode: false, + + disableClusteringAtZoom: null, + + // Setting this to false prevents the removal of any clusters outside of the viewpoint, which + // is the default behaviour for performance reasons. + removeOutsideVisibleBounds: true, + + //Whether to animate adding markers after adding the MarkerClusterGroup to the map + // If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains. + animateAddingMarkers: false, + + //Increase to increase the distance away that spiderfied markers appear from the center + spiderfyDistanceMultiplier: 1, + + // When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts + chunkedLoading: false, + chunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback) + chunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser + chunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator) + + //Options to pass to the L.Polygon constructor + polygonOptions: {} + }, + + initialize: function (options) { + L.Util.setOptions(this, options); + if (!this.options.iconCreateFunction) { + this.options.iconCreateFunction = this._defaultIconCreateFunction; + } + + this._featureGroup = L.featureGroup(); + this._featureGroup.addEventParent(this); + + this._nonPointGroup = L.featureGroup(); + this._nonPointGroup.addEventParent(this); + + this._inZoomAnimation = 0; + this._needsClustering = []; + this._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of + //The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move + this._currentShownBounds = null; + + this._queue = []; + }, + + addLayer: function (layer) { + + if (layer instanceof L.LayerGroup) { + var array = []; + for (var i in layer._layers) { + array.push(layer._layers[i]); + } + return this.addLayers(array); + } + + //Don't cluster non point data + if (!layer.getLatLng) { + this._nonPointGroup.addLayer(layer); + return this; + } + + if (!this._map) { + this._needsClustering.push(layer); + return this; + } + + if (this.hasLayer(layer)) { + return this; + } + + + //If we have already clustered we'll need to add this one to a cluster + + if (this._unspiderfy) { + this._unspiderfy(); + } + + this._addLayer(layer, this._maxZoom); + + //Work out what is visible + var visibleLayer = layer, + currentZoom = this._map.getZoom(); + if (layer.__parent) { + while (visibleLayer.__parent._zoom >= currentZoom) { + visibleLayer = visibleLayer.__parent; + } + } + + if (this._currentShownBounds.contains(visibleLayer.getLatLng())) { + if (this.options.animateAddingMarkers) { + this._animationAddLayer(layer, visibleLayer); + } else { + this._animationAddLayerNonAnimated(layer, visibleLayer); + } + } + return this; + }, + + removeLayer: function (layer) { + + if (layer instanceof L.LayerGroup) + { + var array = []; + for (var i in layer._layers) { + array.push(layer._layers[i]); + } + return this.removeLayers(array); + } + + //Non point layers + if (!layer.getLatLng) { + this._nonPointGroup.removeLayer(layer); + return this; + } + + if (!this._map) { + if (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) { + this._needsRemoving.push(layer); + } + return this; + } + + if (!layer.__parent) { + return this; + } + + if (this._unspiderfy) { + this._unspiderfy(); + this._unspiderfyLayer(layer); + } + + //Remove the marker from clusters + this._removeLayer(layer, true); + + layer.off('move', this._childMarkerMoved, this); + + if (this._featureGroup.hasLayer(layer)) { + this._featureGroup.removeLayer(layer); + if (layer.setOpacity) { + layer.setOpacity(1); + } + } + + return this; + }, + + //Takes an array of markers and adds them in bulk + addLayers: function (layersArray) { + var fg = this._featureGroup, + npg = this._nonPointGroup, + chunked = this.options.chunkedLoading, + chunkInterval = this.options.chunkInterval, + chunkProgress = this.options.chunkProgress, + newMarkers, i, l, m; + + if (this._map) { + var offset = 0, + started = (new Date()).getTime(); + var process = L.bind(function () { + var start = (new Date()).getTime(); + for (; offset < layersArray.length; offset++) { + if (chunked && offset % 200 === 0) { + // every couple hundred markers, instrument the time elapsed since processing started: + var elapsed = (new Date()).getTime() - start; + if (elapsed > chunkInterval) { + break; // been working too hard, time to take a break :-) + } + } + + m = layersArray[offset]; + + //Not point data, can't be clustered + if (!m.getLatLng) { + npg.addLayer(m); + continue; + } + + if (this.hasLayer(m)) { + continue; + } + + this._addLayer(m, this._maxZoom); + + //If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will + if (m.__parent) { + if (m.__parent.getChildCount() === 2) { + var markers = m.__parent.getAllChildMarkers(), + otherMarker = markers[0] === m ? markers[1] : markers[0]; + fg.removeLayer(otherMarker); + } + } + } + + if (chunkProgress) { + // report progress and time elapsed: + chunkProgress(offset, layersArray.length, (new Date()).getTime() - started); + } + + if (offset === layersArray.length) { + //Update the icons of all those visible clusters that were affected + this._featureGroup.eachLayer(function (c) { + if (c instanceof L.MarkerCluster && c._iconNeedsUpdate) { + c._updateIcon(); + } + }); + + this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds); + } else { + setTimeout(process, this.options.chunkDelay); + } + }, this); + + process(); + } else { + newMarkers = []; + for (i = 0, l = layersArray.length; i < l; i++) { + m = layersArray[i]; + + //Not point data, can't be clustered + if (!m.getLatLng) { + npg.addLayer(m); + continue; + } + + if (this.hasLayer(m)) { + continue; + } + + newMarkers.push(m); + } + this._needsClustering = this._needsClustering.concat(newMarkers); + } + return this; + }, + + //Takes an array of markers and removes them in bulk + removeLayers: function (layersArray) { + var i, l, m, + fg = this._featureGroup, + npg = this._nonPointGroup; + + if (!this._map) { + for (i = 0, l = layersArray.length; i < l; i++) { + m = layersArray[i]; + this._arraySplice(this._needsClustering, m); + npg.removeLayer(m); + } + return this; + } + + for (i = 0, l = layersArray.length; i < l; i++) { + m = layersArray[i]; + + if (!m.__parent) { + npg.removeLayer(m); + continue; + } + + this._removeLayer(m, true, true); + + if (fg.hasLayer(m)) { + fg.removeLayer(m); + if (m.setOpacity) { + m.setOpacity(1); + } + } + } + + //Fix up the clusters and markers on the map + this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds); + + fg.eachLayer(function (c) { + if (c instanceof L.MarkerCluster) { + c._updateIcon(); + } + }); + + return this; + }, + + //Removes all layers from the MarkerClusterGroup + clearLayers: function () { + //Need our own special implementation as the LayerGroup one doesn't work for us + + //If we aren't on the map (yet), blow away the markers we know of + if (!this._map) { + this._needsClustering = []; + delete this._gridClusters; + delete this._gridUnclustered; + } + + if (this._noanimationUnspiderfy) { + this._noanimationUnspiderfy(); + } + + //Remove all the visible layers + this._featureGroup.clearLayers(); + this._nonPointGroup.clearLayers(); + + this.eachLayer(function (marker) { + marker.off('move', this._childMarkerMoved, this); + delete marker.__parent; + }); + + if (this._map) { + //Reset _topClusterLevel and the DistanceGrids + this._generateInitialClusters(); + } + + return this; + }, + + //Override FeatureGroup.getBounds as it doesn't work + getBounds: function () { + var bounds = new L.LatLngBounds(); + if (this._topClusterLevel) { + bounds.extend(this._topClusterLevel._bounds); + } else { + for (var i = this._needsClustering.length - 1; i >= 0; i--) { + bounds.extend(this._needsClustering[i].getLatLng()); + } + } + + bounds.extend(this._nonPointGroup.getBounds()); + + return bounds; + }, + + //Overrides LayerGroup.eachLayer + eachLayer: function (method, context) { + var markers = this._needsClustering.slice(), + i; + + if (this._topClusterLevel) { + this._topClusterLevel.getAllChildMarkers(markers); + } + + for (i = markers.length - 1; i >= 0; i--) { + method.call(context, markers[i]); + } + + this._nonPointGroup.eachLayer(method, context); + }, + + //Overrides LayerGroup.getLayers + getLayers: function () { + var layers = []; + this.eachLayer(function (l) { + layers.push(l); + }); + return layers; + }, + + //Overrides LayerGroup.getLayer, WARNING: Really bad performance + getLayer: function (id) { + var result = null; + + this.eachLayer(function (l) { + if (L.stamp(l) === id) { + result = l; + } + }); + + return result; + }, + + //Returns true if the given layer is in this MarkerClusterGroup + hasLayer: function (layer) { + if (!layer) { + return false; + } + + var i, anArray = this._needsClustering; + + for (i = anArray.length - 1; i >= 0; i--) { + if (anArray[i] === layer) { + return true; + } + } + + anArray = this._needsRemoving; + for (i = anArray.length - 1; i >= 0; i--) { + if (anArray[i] === layer) { + return false; + } + } + + return !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer); + }, + + //Zoom down to show the given layer (spiderfying if necessary) then calls the callback + zoomToShowLayer: function (layer, callback) { + + var showMarker = function () { + if ((layer._icon || layer.__parent._icon) && !this._inZoomAnimation) { + this._map.off('moveend', showMarker, this); + this.off('animationend', showMarker, this); + + if (layer._icon) { + callback(); + } else if (layer.__parent._icon) { + var afterSpiderfy = function () { + this.off('spiderfied', afterSpiderfy, this); + callback(); + }; + + this.on('spiderfied', afterSpiderfy, this); + layer.__parent.spiderfy(); + } + } + }; + + if (layer._icon && this._map.getBounds().contains(layer.getLatLng())) { + callback(); + } else if (layer.__parent._zoom < this._map.getZoom()) { + //Layer should be visible now but isn't on screen, just pan over to it + this._map.on('moveend', showMarker, this); + this._map.panTo(layer.getLatLng()); + } else { + this._map.on('moveend', showMarker, this); + this.on('animationend', showMarker, this); + this._map.setView(layer.getLatLng(), layer.__parent._zoom + 1); + layer.__parent.zoomToBounds(); + } + }, + + //Overrides FeatureGroup.onAdd + onAdd: function (map) { + this._map = map; + var i, l, layer; + + if (!isFinite(this._map.getMaxZoom())) { + throw "Map has no maxZoom specified"; + } + + this._featureGroup.addTo(map); + this._nonPointGroup.addTo(map); + + if (!this._gridClusters) { + this._generateInitialClusters(); + } + + for (i = 0, l = this._needsRemoving.length; i < l; i++) { + layer = this._needsRemoving[i]; + this._removeLayer(layer, true); + } + this._needsRemoving = []; + + //Remember the current zoom level and bounds + this._zoom = this._map.getZoom(); + this._currentShownBounds = this._getExpandedVisibleBounds(); + + this._map.on('zoomend', this._zoomEnd, this); + this._map.on('moveend', this._moveEnd, this); + + if (this._spiderfierOnAdd) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely + this._spiderfierOnAdd(); + } + + this._bindEvents(); + + //Actually add our markers to the map: + l = this._needsClustering; + this._needsClustering = []; + this.addLayers(l); + }, + + //Overrides FeatureGroup.onRemove + onRemove: function (map) { + map.off('zoomend', this._zoomEnd, this); + map.off('moveend', this._moveEnd, this); + + this._unbindEvents(); + + //In case we are in a cluster animation + this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', ''); + + if (this._spiderfierOnRemove) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely + this._spiderfierOnRemove(); + } + + + + //Clean up all the layers we added to the map + this._hideCoverage(); + this._featureGroup.remove(); + this._nonPointGroup.remove(); + + this._featureGroup.clearLayers(); + + this._map = null; + }, + + getVisibleParent: function (marker) { + var vMarker = marker; + while (vMarker && !vMarker._icon) { + vMarker = vMarker.__parent; + } + return vMarker || null; + }, + + //Remove the given object from the given array + _arraySplice: function (anArray, obj) { + for (var i = anArray.length - 1; i >= 0; i--) { + if (anArray[i] === obj) { + anArray.splice(i, 1); + return true; + } + } + }, + + _childMarkerMoved: function (e) { + if (!this._ignoreMove) { + e.target._latlng = e.oldLatLng; + this.removeLayer(e.target); + + e.target._latlng = e.latlng; + this.addLayer(e.target); + } + return; + }, + + //Internal function for removing a marker from everything. + //dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions) + _removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) { + var gridClusters = this._gridClusters, + gridUnclustered = this._gridUnclustered, + fg = this._featureGroup, + map = this._map; + + //Remove the marker from distance clusters it might be in + if (removeFromDistanceGrid) { + for (var z = this._maxZoom; z >= 0; z--) { + if (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) { + break; + } + } + } + + //Work our way up the clusters removing them as we go if required + var cluster = marker.__parent, + markers = cluster._markers, + otherMarker; + + //Remove the marker from the immediate parents marker list + this._arraySplice(markers, marker); + + while (cluster) { + cluster._childCount--; + + if (cluster._zoom < 0) { + //Top level, do nothing + break; + } else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required + //We need to push the other marker up to the parent + otherMarker = cluster._markers[0] === marker ? cluster._markers[1] : cluster._markers[0]; + + //Update distance grid + gridClusters[cluster._zoom].removeObject(cluster, map.project(cluster._cLatLng, cluster._zoom)); + gridUnclustered[cluster._zoom].addObject(otherMarker, map.project(otherMarker.getLatLng(), cluster._zoom)); + + //Move otherMarker up to parent + this._arraySplice(cluster.__parent._childClusters, cluster); + cluster.__parent._markers.push(otherMarker); + otherMarker.__parent = cluster.__parent; + + if (cluster._icon) { + //Cluster is currently on the map, need to put the marker on the map instead + fg.removeLayer(cluster); + if (!dontUpdateMap) { + fg.addLayer(otherMarker); + } + } + } else { + cluster._recalculateBounds(); + if (!dontUpdateMap || !cluster._icon) { + cluster._updateIcon(); + } + } + + cluster = cluster.__parent; + } + + delete marker.__parent; + }, + + _isOrIsParent: function (el, oel) { + while (oel) { + if (el === oel) { + return true; + } + oel = oel.parentNode; + } + return false; + }, + + //Override L.Evented.fire + fire: function (type, data, propagate) { + if (data && data.layer instanceof L.MarkerCluster) { + //Prevent multiple clustermouseover/off events if the icon is made up of stacked divs (Doesn't work in ie <= 8, no relatedTarget) + if (data.originalEvent && this._isOrIsParent(data.layer._icon, data.originalEvent.relatedTarget)) { + return; + } + type = 'cluster' + type; + } + + L.FeatureGroup.prototype.fire.call(this, type, data, propagate); + }, + + //Override L.Evented.listens + listens: function (type, propagate) { + return L.FeatureGroup.prototype.listens.call(this, type, propagate) || L.FeatureGroup.prototype.listens.call(this, 'cluster' + type, propagate); + }, + + //Default functionality + _defaultIconCreateFunction: function (cluster) { + var childCount = cluster.getChildCount(); + + var c = ' marker-cluster-'; + if (childCount < 10) { + c += 'small'; + } else if (childCount < 100) { + c += 'medium'; + } else { + c += 'large'; + } + + return new L.DivIcon({ html: '
' + childCount + '
', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) }); + }, + + _bindEvents: function () { + var map = this._map, + spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom, + showCoverageOnHover = this.options.showCoverageOnHover, + zoomToBoundsOnClick = this.options.zoomToBoundsOnClick; + + //Zoom on cluster click or spiderfy if we are at the lowest level + if (spiderfyOnMaxZoom || zoomToBoundsOnClick) { + this.on('clusterclick', this._zoomOrSpiderfy, this); + } + + //Show convex hull (boundary) polygon on mouse over + if (showCoverageOnHover) { + this.on('clustermouseover', this._showCoverage, this); + this.on('clustermouseout', this._hideCoverage, this); + map.on('zoomend', this._hideCoverage, this); + } + }, + + _zoomOrSpiderfy: function (e) { + var map = this._map; + if (map.getMaxZoom() === map.getZoom()) { + if (this.options.spiderfyOnMaxZoom) { + e.layer.spiderfy(); + } + } else if (this.options.zoomToBoundsOnClick) { + e.layer.zoomToBounds(); + } + + // Focus the map again for keyboard users. + if (e.originalEvent && e.originalEvent.keyCode === 13) { + map._container.focus(); + } + }, + + _showCoverage: function (e) { + var map = this._map; + if (this._inZoomAnimation) { + return; + } + if (this._shownPolygon) { + map.removeLayer(this._shownPolygon); + } + if (e.layer.getChildCount() > 2 && e.layer !== this._spiderfied) { + this._shownPolygon = new L.Polygon(e.layer.getConvexHull(), this.options.polygonOptions); + map.addLayer(this._shownPolygon); + } + }, + + _hideCoverage: function () { + if (this._shownPolygon) { + this._map.removeLayer(this._shownPolygon); + this._shownPolygon = null; + } + }, + + _unbindEvents: function () { + var spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom, + showCoverageOnHover = this.options.showCoverageOnHover, + zoomToBoundsOnClick = this.options.zoomToBoundsOnClick, + map = this._map; + + if (spiderfyOnMaxZoom || zoomToBoundsOnClick) { + this.off('clusterclick', this._zoomOrSpiderfy, this); + } + if (showCoverageOnHover) { + this.off('clustermouseover', this._showCoverage, this); + this.off('clustermouseout', this._hideCoverage, this); + map.off('zoomend', this._hideCoverage, this); + } + }, + + _zoomEnd: function () { + if (!this._map) { //May have been removed from the map by a zoomEnd handler + return; + } + this._mergeSplitClusters(); + + this._zoom = Math.round(this._map._zoom); + this._currentShownBounds = this._getExpandedVisibleBounds(); + }, + + _moveEnd: function () { + if (this._inZoomAnimation) { + return; + } + + var newBounds = this._getExpandedVisibleBounds(); + + this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, this._zoom, newBounds); + this._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds); + + this._currentShownBounds = newBounds; + return; + }, + + _generateInitialClusters: function () { + var maxZoom = this._map.getMaxZoom(), + radius = this.options.maxClusterRadius, + radiusFn = radius; + + //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 + //use the function we've passed in. + if (typeof radius !== "function") { + radiusFn = function () { return radius; }; + } + + if (this.options.disableClusteringAtZoom) { + maxZoom = this.options.disableClusteringAtZoom - 1; + } + this._maxZoom = maxZoom; + this._gridClusters = {}; + this._gridUnclustered = {}; + + //Set up DistanceGrids for each zoom + for (var zoom = maxZoom; zoom >= 0; zoom--) { + this._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom)); + this._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom)); + } + + this._topClusterLevel = new L.MarkerCluster(this, -1); + }, + + //Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom) + _addLayer: function (layer, zoom) { + var gridClusters = this._gridClusters, + gridUnclustered = this._gridUnclustered, + markerPoint, z; + + if (this.options.singleMarkerMode) { + layer.options.icon = this.options.iconCreateFunction({ + getChildCount: function () { + return 1; + }, + getAllChildMarkers: function () { + return [layer]; + } + }); + } + + layer.on('move', this._childMarkerMoved, this); + + //Find the lowest zoom level to slot this one in + for (; zoom >= 0; zoom--) { + markerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position + + //Try find a cluster close by + var closest = gridClusters[zoom].getNearObject(markerPoint); + if (closest) { + closest._addChild(layer); + layer.__parent = closest; + return; + } + + //Try find a marker close by to form a new cluster with + closest = gridUnclustered[zoom].getNearObject(markerPoint); + if (closest) { + var parent = closest.__parent; + if (parent) { + this._removeLayer(closest, false); + } + + //Create new cluster with these 2 in it + + var newCluster = new L.MarkerCluster(this, zoom, closest, layer); + gridClusters[zoom].addObject(newCluster, this._map.project(newCluster._cLatLng, zoom)); + closest.__parent = newCluster; + layer.__parent = newCluster; + + //First create any new intermediate parent clusters that don't exist + var lastParent = newCluster; + for (z = zoom - 1; z > parent._zoom; z--) { + lastParent = new L.MarkerCluster(this, z, lastParent); + gridClusters[z].addObject(lastParent, this._map.project(closest.getLatLng(), z)); + } + parent._addChild(lastParent); + + //Remove closest from this zoom level and any above that it is in, replace with newCluster + for (z = zoom; z >= 0; z--) { + if (!gridUnclustered[z].removeObject(closest, this._map.project(closest.getLatLng(), z))) { + break; + } + } + + return; + } + + //Didn't manage to cluster in at this zoom, record us as a marker here and continue upwards + gridUnclustered[zoom].addObject(layer, markerPoint); + } + + //Didn't get in anything, add us to the top + this._topClusterLevel._addChild(layer); + layer.__parent = this._topClusterLevel; + return; + }, + + //Enqueue code to fire after the marker expand/contract has happened + _enqueue: function (fn) { + this._queue.push(fn); + if (!this._queueTimeout) { + this._queueTimeout = setTimeout(L.bind(this._processQueue, this), 300); + } + }, + _processQueue: function () { + for (var i = 0; i < this._queue.length; i++) { + this._queue[i].call(this); + } + this._queue.length = 0; + clearTimeout(this._queueTimeout); + this._queueTimeout = null; + }, + + //Merge and split any existing clusters that are too big or small + _mergeSplitClusters: function () { + var mapZoom = Math.round(this._map._zoom); + + //Incase we are starting to split before the animation finished + this._processQueue(); + + if (this._zoom < mapZoom && this._currentShownBounds.contains(this._getExpandedVisibleBounds())) { //Zoom in, split + this._animationStart(); + //Remove clusters now off screen + this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, this._zoom, this._getExpandedVisibleBounds()); + + this._animationZoomIn(this._zoom, mapZoom); + + } else if (this._zoom > mapZoom) { //Zoom out, merge + this._animationStart(); + + this._animationZoomOut(this._zoom, mapZoom); + } else { + this._moveEnd(); + } + }, + + //Gets the maps visible bounds expanded in each direction by the size of the screen (so the user cannot see an area we do not cover in one pan) + _getExpandedVisibleBounds: function () { + if (!this.options.removeOutsideVisibleBounds) { + return this.getBounds(); + } + + var map = this._map, + bounds = map.getBounds(), + sw = bounds._southWest, + ne = bounds._northEast, + latDiff = L.Browser.mobile ? 0 : Math.abs(sw.lat - ne.lat), + lngDiff = L.Browser.mobile ? 0 : Math.abs(sw.lng - ne.lng); + + return new L.LatLngBounds( + new L.LatLng(sw.lat - latDiff, sw.lng - lngDiff, true), + new L.LatLng(ne.lat + latDiff, ne.lng + lngDiff, true)); + }, + + //Shared animation code + _animationAddLayerNonAnimated: function (layer, newCluster) { + if (newCluster === layer) { + this._featureGroup.addLayer(layer); + } else if (newCluster._childCount === 2) { + newCluster._addToMap(); + + var markers = newCluster.getAllChildMarkers(); + this._featureGroup.removeLayer(markers[0]); + this._featureGroup.removeLayer(markers[1]); + } else { + newCluster._updateIcon(); + } + } +}); + +L.MarkerClusterGroup.include(!L.DomUtil.TRANSITION ? { + + //Non Animated versions of everything + _animationStart: function () { + //Do nothing... + }, + _animationZoomIn: function (previousZoomLevel, newZoomLevel) { + this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, previousZoomLevel); + this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); + + //We didn't actually animate, but we use this event to mean "clustering animations have finished" + this.fire('animationend'); + }, + _animationZoomOut: function (previousZoomLevel, newZoomLevel) { + this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, previousZoomLevel); + this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); + + //We didn't actually animate, but we use this event to mean "clustering animations have finished" + this.fire('animationend'); + }, + _animationAddLayer: function (layer, newCluster) { + this._animationAddLayerNonAnimated(layer, newCluster); + } +} : { + + //Animated versions here + _animationStart: function () { + this._map._mapPane.className += ' leaflet-cluster-anim'; + this._inZoomAnimation++; + }, + _animationEnd: function () { + if (this._map) { + this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', ''); + } + this._inZoomAnimation--; + this.fire('animationend'); + }, + _animationZoomIn: function (previousZoomLevel, newZoomLevel) { + var bounds = this._getExpandedVisibleBounds(), + fg = this._featureGroup, + i; + + this._ignoreMove = true; + + //Add all children of current clusters to map and remove those clusters from map + this._topClusterLevel._recursively(bounds, previousZoomLevel, 0, function (c) { + var startPos = c._latlng, + markers = c._markers, + m; + + if (!bounds.contains(startPos)) { + startPos = null; + } + + if (c._isSingleParent() && previousZoomLevel + 1 === newZoomLevel) { //Immediately add the new child and remove us + fg.removeLayer(c); + c._recursivelyAddChildrenToMap(null, newZoomLevel, bounds); + } else { + //Fade out old cluster + c.setOpacity(0); + c._recursivelyAddChildrenToMap(startPos, newZoomLevel, bounds); + } + + //Remove all markers that aren't visible any more + //TODO: Do we actually need to do this on the higher levels too? + for (i = markers.length - 1; i >= 0; i--) { + m = markers[i]; + if (!bounds.contains(m._latlng)) { + fg.removeLayer(m); + } + } + + }); + + this._forceLayout(); + + //Update opacities + this._topClusterLevel._recursivelyBecomeVisible(bounds, newZoomLevel); + //TODO Maybe? Update markers in _recursivelyBecomeVisible + fg.eachLayer(function (n) { + if (!(n instanceof L.MarkerCluster) && n._icon) { + n.setOpacity(1); + } + }); + + //update the positions of the just added clusters/markers + this._topClusterLevel._recursively(bounds, previousZoomLevel, newZoomLevel, function (c) { + c._recursivelyRestoreChildPositions(newZoomLevel); + }); + + this._ignoreMove = false; + + //Remove the old clusters and close the zoom animation + this._enqueue(function () { + //update the positions of the just added clusters/markers + this._topClusterLevel._recursively(bounds, previousZoomLevel, 0, function (c) { + fg.removeLayer(c); + c.setOpacity(1); + }); + + this._animationEnd(); + }); + }, + + _animationZoomOut: function (previousZoomLevel, newZoomLevel) { + this._animationZoomOutSingle(this._topClusterLevel, previousZoomLevel - 1, newZoomLevel); + + //Need to add markers for those that weren't on the map before but are now + this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); + //Remove markers that were on the map before but won't be now + this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, previousZoomLevel, this._getExpandedVisibleBounds()); + }, + _animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) { + var bounds = this._getExpandedVisibleBounds(); + + //Animate all of the markers in the clusters to move to their cluster center point + cluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, previousZoomLevel + 1, newZoomLevel); + + var me = this; + + //Update the opacity (If we immediately set it they won't animate) + this._forceLayout(); + cluster._recursivelyBecomeVisible(bounds, newZoomLevel); + + //TODO: Maybe use the transition timing stuff to make this more reliable + //When the animations are done, tidy up + this._enqueue(function () { + + //This cluster stopped being a cluster before the timeout fired + if (cluster._childCount === 1) { + var m = cluster._markers[0]; + //If we were in a cluster animation at the time then the opacity and position of our child could be wrong now, so fix it + this._ignoreMove = true; + m.setLatLng(m.getLatLng()); + this._ignoreMove = false; + if (m.setOpacity) { + m.setOpacity(1); + } + } else { + cluster._recursively(bounds, newZoomLevel, 0, function (c) { + c._recursivelyRemoveChildrenFromMap(bounds, previousZoomLevel + 1); + }); + } + me._animationEnd(); + }); + }, + _animationAddLayer: function (layer, newCluster) { + var me = this, + fg = this._featureGroup; + + fg.addLayer(layer); + if (newCluster !== layer) { + if (newCluster._childCount > 2) { //Was already a cluster + + newCluster._updateIcon(); + this._forceLayout(); + this._animationStart(); + + layer._setPos(this._map.latLngToLayerPoint(newCluster.getLatLng())); + layer.setOpacity(0); + + this._enqueue(function () { + fg.removeLayer(layer); + layer.setOpacity(1); + + me._animationEnd(); + }); + + } else { //Just became a cluster + this._forceLayout(); + + me._animationStart(); + me._animationZoomOutSingle(newCluster, this._map.getMaxZoom(), this._map.getZoom()); + } + } + }, + + //Force a browser layout of stuff in the map + // Should apply the current opacity and location to all elements so we can update them again for an animation + _forceLayout: function () { + //In my testing this works, infact offsetWidth of any element seems to work. + //Could loop all this._layers and do this for each _icon if it stops working + + L.Util.falseFn(document.body.offsetWidth); + } +}); + +L.markerClusterGroup = function (options) { + return new L.MarkerClusterGroup(options); +}; + + +L.MarkerCluster = L.Marker.extend({ + initialize: function (group, zoom, a, b) { + + L.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0), { icon: this }); + + + this._group = group; + this._zoom = zoom; + + this._markers = []; + this._childClusters = []; + this._childCount = 0; + this._iconNeedsUpdate = true; + + this._bounds = new L.LatLngBounds(); + + if (a) { + this._addChild(a); + } + if (b) { + this._addChild(b); + } + }, + + //Recursively retrieve all child markers of this cluster + getAllChildMarkers: function (storageArray) { + storageArray = storageArray || []; + + for (var i = this._childClusters.length - 1; i >= 0; i--) { + this._childClusters[i].getAllChildMarkers(storageArray); + } + + for (var j = this._markers.length - 1; j >= 0; j--) { + storageArray.push(this._markers[j]); + } + + return storageArray; + }, + + //Returns the count of how many child markers we have + getChildCount: function () { + return this._childCount; + }, + + //Zoom to the minimum of showing all of the child markers, or the extents of this cluster + zoomToBounds: function () { + var childClusters = this._childClusters.slice(), + map = this._group._map, + boundsZoom = map.getBoundsZoom(this._bounds), + zoom = this._zoom + 1, + mapZoom = map.getZoom(), + i; + + //calculate how fare we need to zoom down to see all of the markers + while (childClusters.length > 0 && boundsZoom > zoom) { + zoom++; + var newClusters = []; + for (i = 0; i < childClusters.length; i++) { + newClusters = newClusters.concat(childClusters[i]._childClusters); + } + childClusters = newClusters; + } + + if (boundsZoom > zoom) { + this._group._map.setView(this._latlng, zoom); + } else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead + this._group._map.setView(this._latlng, mapZoom + 1); + } else { + this._group._map.fitBounds(this._bounds); + } + }, + + getBounds: function () { + var bounds = new L.LatLngBounds(); + bounds.extend(this._bounds); + return bounds; + }, + + _updateIcon: function () { + this._iconNeedsUpdate = true; + if (this._icon) { + this.setIcon(this); + } + }, + + //Cludge for Icon, we pretend to be an icon for performance + createIcon: function () { + if (this._iconNeedsUpdate) { + this._iconObj = this._group.options.iconCreateFunction(this); + this._iconNeedsUpdate = false; + } + return this._iconObj.createIcon(); + }, + createShadow: function () { + return this._iconObj.createShadow(); + }, + + + _addChild: function (new1, isNotificationFromChild) { + + this._iconNeedsUpdate = true; + this._expandBounds(new1); + + if (new1 instanceof L.MarkerCluster) { + if (!isNotificationFromChild) { + this._childClusters.push(new1); + new1.__parent = this; + } + this._childCount += new1._childCount; + } else { + if (!isNotificationFromChild) { + this._markers.push(new1); + } + this._childCount++; + } + + if (this.__parent) { + this.__parent._addChild(new1, true); + } + }, + + //Expand our bounds and tell our parent to + _expandBounds: function (marker) { + var addedCount, + addedLatLng = marker._wLatLng || marker._latlng; + + if (marker instanceof L.MarkerCluster) { + this._bounds.extend(marker._bounds); + addedCount = marker._childCount; + } else { + this._bounds.extend(addedLatLng); + addedCount = 1; + } + + if (!this._cLatLng) { + // when clustering, take position of the first point as the cluster center + this._cLatLng = marker._cLatLng || addedLatLng; + } + + // when showing clusters, take weighted average of all points as cluster center + var totalCount = this._childCount + addedCount; + + //Calculate weighted latlng for display + if (!this._wLatLng) { + this._latlng = this._wLatLng = new L.LatLng(addedLatLng.lat, addedLatLng.lng); + } else { + this._wLatLng.lat = (addedLatLng.lat * addedCount + this._wLatLng.lat * this._childCount) / totalCount; + this._wLatLng.lng = (addedLatLng.lng * addedCount + this._wLatLng.lng * this._childCount) / totalCount; + } + }, + + //Set our markers position as given and add it to the map + _addToMap: function (startPos) { + if (startPos) { + this._backupLatlng = this._latlng; + this.setLatLng(startPos); + } + this._group._featureGroup.addLayer(this); + }, + + _recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) { + this._recursively(bounds, 0, maxZoom - 1, + function (c) { + var markers = c._markers, + i, m; + for (i = markers.length - 1; i >= 0; i--) { + m = markers[i]; + + //Only do it if the icon is still on the map + if (m._icon) { + m._setPos(center); + m.setOpacity(0); + } + } + }, + function (c) { + var childClusters = c._childClusters, + j, cm; + for (j = childClusters.length - 1; j >= 0; j--) { + cm = childClusters[j]; + if (cm._icon) { + cm._setPos(center); + cm.setOpacity(0); + } + } + } + ); + }, + + _recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, previousZoomLevel, newZoomLevel) { + this._recursively(bounds, newZoomLevel, 0, + function (c) { + c._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel); + + //TODO: depthToAnimateIn affects _isSingleParent, if there is a multizoom we may/may not be. + //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) { + c.setOpacity(1); + c._recursivelyRemoveChildrenFromMap(bounds, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds + } else { + c.setOpacity(0); + } + + c._addToMap(); + } + ); + }, + + _recursivelyBecomeVisible: function (bounds, zoomLevel) { + this._recursively(bounds, 0, zoomLevel, null, function (c) { + c.setOpacity(1); + }); + }, + + _recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) { + this._recursively(bounds, -1, zoomLevel, + function (c) { + if (zoomLevel === c._zoom) { + return; + } + + //Add our child markers at startPos (so they can be animated out) + for (var i = c._markers.length - 1; i >= 0; i--) { + var nm = c._markers[i]; + + if (!bounds.contains(nm._latlng)) { + continue; + } + + if (startPos) { + nm._backupLatlng = nm.getLatLng(); + + nm.setLatLng(startPos); + if (nm.setOpacity) { + nm.setOpacity(0); + } + } + + c._group._featureGroup.addLayer(nm); + } + }, + function (c) { + c._addToMap(startPos); + } + ); + }, + + _recursivelyRestoreChildPositions: function (zoomLevel) { + //Fix positions of child markers + for (var i = this._markers.length - 1; i >= 0; i--) { + var nm = this._markers[i]; + if (nm._backupLatlng) { + nm.setLatLng(nm._backupLatlng); + delete nm._backupLatlng; + } + } + + if (zoomLevel - 1 === this._zoom) { + //Reposition child clusters + for (var j = this._childClusters.length - 1; j >= 0; j--) { + this._childClusters[j]._restorePosition(); + } + } else { + for (var k = this._childClusters.length - 1; k >= 0; k--) { + this._childClusters[k]._recursivelyRestoreChildPositions(zoomLevel); + } + } + }, + + _restorePosition: function () { + if (this._backupLatlng) { + this.setLatLng(this._backupLatlng); + delete this._backupLatlng; + } + }, + + //exceptBounds: If set, don't remove any markers/clusters in it + _recursivelyRemoveChildrenFromMap: function (previousBounds, zoomLevel, exceptBounds) { + var m, i; + this._recursively(previousBounds, -1, zoomLevel - 1, + function (c) { + //Remove markers at every level + for (i = c._markers.length - 1; i >= 0; i--) { + m = c._markers[i]; + if (!exceptBounds || !exceptBounds.contains(m._latlng)) { + c._group._featureGroup.removeLayer(m); + if (m.setOpacity) { + m.setOpacity(1); + } + } + } + }, + function (c) { + //Remove child clusters at just the bottom level + for (i = c._childClusters.length - 1; i >= 0; i--) { + m = c._childClusters[i]; + if (!exceptBounds || !exceptBounds.contains(m._latlng)) { + c._group._featureGroup.removeLayer(m); + if (m.setOpacity) { + m.setOpacity(1); + } + } + } + } + ); + }, + + //Run the given functions recursively to this and child clusters + // boundsToApplyTo: a L.LatLngBounds representing the bounds of what clusters to recurse in to + // zoomLevelToStart: zoom level to start running functions (inclusive) + // zoomLevelToStop: zoom level to stop running functions (inclusive) + // runAtEveryLevel: function that takes an L.MarkerCluster as an argument that should be applied on every level + // runAtBottomLevel: function that takes an L.MarkerCluster as an argument that should be applied at only the bottom level + _recursively: function (boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel) { + var childClusters = this._childClusters, + zoom = this._zoom, + i, c; + + if (zoomLevelToStart > zoom) { //Still going down to required depth, just recurse to child clusters + for (i = childClusters.length - 1; i >= 0; i--) { + c = childClusters[i]; + if (boundsToApplyTo.intersects(c._bounds)) { + c._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel); + } + } + } else { //In required depth + + if (runAtEveryLevel) { + runAtEveryLevel(this); + } + if (runAtBottomLevel && this._zoom === zoomLevelToStop) { + runAtBottomLevel(this); + } + + //TODO: This loop is almost the same as above + if (zoomLevelToStop > zoom) { + for (i = childClusters.length - 1; i >= 0; i--) { + c = childClusters[i]; + if (boundsToApplyTo.intersects(c._bounds)) { + c._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel); + } + } + } + } + }, + + _recalculateBounds: function () { + var markers = this._markers, + childClusters = this._childClusters, + i; + + this._bounds = new L.LatLngBounds(); + delete this._wLatLng; + + for (i = markers.length - 1; i >= 0; i--) { + this._expandBounds(markers[i]); + } + for (i = childClusters.length - 1; i >= 0; i--) { + this._expandBounds(childClusters[i]); + } + }, + + + //Returns true if we are the parent of only one cluster and that cluster is the same as us + _isSingleParent: function () { + //Don't need to check this._markers as the rest won't work if there are any + return this._childClusters.length > 0 && this._childClusters[0]._childCount === this._childCount; + } +}); + + + +L.DistanceGrid = function (cellSize) { + this._cellSize = cellSize; + this._sqCellSize = cellSize * cellSize; + this._grid = {}; + this._objectPoint = { }; +}; + +L.DistanceGrid.prototype = { + + addObject: function (obj, point) { + var x = this._getCoord(point.x), + y = this._getCoord(point.y), + grid = this._grid, + row = grid[y] = grid[y] || {}, + cell = row[x] = row[x] || [], + stamp = L.Util.stamp(obj); + + this._objectPoint[stamp] = point; + + cell.push(obj); + }, + + updateObject: function (obj, point) { + this.removeObject(obj); + this.addObject(obj, point); + }, + + //Returns true if the object was found + removeObject: function (obj, point) { + var x = this._getCoord(point.x), + y = this._getCoord(point.y), + grid = this._grid, + row = grid[y] = grid[y] || {}, + cell = row[x] = row[x] || [], + i, len; + + delete this._objectPoint[L.Util.stamp(obj)]; + + for (i = 0, len = cell.length; i < len; i++) { + if (cell[i] === obj) { + + cell.splice(i, 1); + + if (len === 1) { + delete row[x]; + } + + return true; + } + } + + }, + + eachObject: function (fn, context) { + var i, j, k, len, row, cell, removed, + grid = this._grid; + + for (i in grid) { + row = grid[i]; + + for (j in row) { + cell = row[j]; + + for (k = 0, len = cell.length; k < len; k++) { + removed = fn.call(context, cell[k]); + if (removed) { + k--; + len--; + } + } + } + } + }, + + getNearObject: function (point) { + var x = this._getCoord(point.x), + y = this._getCoord(point.y), + i, j, k, row, cell, len, obj, dist, + objectPoint = this._objectPoint, + closestDistSq = this._sqCellSize, + closest = null; + + for (i = y - 1; i <= y + 1; i++) { + row = this._grid[i]; + if (row) { + + for (j = x - 1; j <= x + 1; j++) { + cell = row[j]; + if (cell) { + + for (k = 0, len = cell.length; k < len; k++) { + obj = cell[k]; + dist = this._sqDist(objectPoint[L.Util.stamp(obj)], point); + if (dist < closestDistSq) { + closestDistSq = dist; + closest = obj; + } + } + } + } + } + } + return closest; + }, + + _getCoord: function (x) { + return Math.floor(x / this._cellSize); + }, + + _sqDist: function (p, p2) { + var dx = p2.x - p.x, + dy = p2.y - p.y; + return dx * dx + dy * dy; + } +}; + + +/* Copyright (c) 2012 the authors listed at the following URL, and/or +the authors of referenced articles or incorporated external code: +http://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256 + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Retrieved from: http://en.literateprograms.org/Quickhull_(Javascript)?oldid=18434 +*/ + +(function () { + L.QuickHull = { + + /* + * @param {Object} cpt a point to be measured from the baseline + * @param {Array} bl the baseline, as represented by a two-element + * array of latlng objects. + * @returns {Number} an approximate distance measure + */ + getDistant: function (cpt, bl) { + var vY = bl[1].lat - bl[0].lat, + vX = bl[0].lng - bl[1].lng; + return (vX * (cpt.lat - bl[0].lat) + vY * (cpt.lng - bl[0].lng)); + }, + + /* + * @param {Array} baseLine a two-element array of latlng objects + * representing the baseline to project from + * @param {Array} latLngs an array of latlng objects + * @returns {Object} the maximum point and all new points to stay + * in consideration for the hull. + */ + findMostDistantPointFromBaseLine: function (baseLine, latLngs) { + var maxD = 0, + maxPt = null, + newPoints = [], + i, pt, d; + + for (i = latLngs.length - 1; i >= 0; i--) { + pt = latLngs[i]; + d = this.getDistant(pt, baseLine); + + if (d > 0) { + newPoints.push(pt); + } else { + continue; + } + + if (d > maxD) { + maxD = d; + maxPt = pt; + } + } + + return { maxPoint: maxPt, newPoints: newPoints }; + }, + + + /* + * Given a baseline, compute the convex hull of latLngs as an array + * of latLngs. + * + * @param {Array} latLngs + * @returns {Array} + */ + buildConvexHull: function (baseLine, latLngs) { + var convexHullBaseLines = [], + t = this.findMostDistantPointFromBaseLine(baseLine, latLngs); + + if (t.maxPoint) { // if there is still a point "outside" the base line + convexHullBaseLines = + convexHullBaseLines.concat( + this.buildConvexHull([baseLine[0], t.maxPoint], t.newPoints) + ); + convexHullBaseLines = + convexHullBaseLines.concat( + this.buildConvexHull([t.maxPoint, baseLine[1]], t.newPoints) + ); + return convexHullBaseLines; + } else { // if there is no more point "outside" the base line, the current base line is part of the convex hull + return [baseLine[0]]; + } + }, + + /* + * Given an array of latlngs, compute a convex hull as an array + * of latlngs + * + * @param {Array} latLngs + * @returns {Array} + */ + getConvexHull: function (latLngs) { + // find first baseline + var maxLat = false, minLat = false, + maxPt = null, minPt = null, + i; + + for (i = latLngs.length - 1; i >= 0; i--) { + var pt = latLngs[i]; + if (maxLat === false || pt.lat > maxLat) { + maxPt = pt; + maxLat = pt.lat; + } + if (minLat === false || pt.lat < minLat) { + minPt = pt; + minLat = pt.lat; + } + } + var ch = [].concat(this.buildConvexHull([minPt, maxPt], latLngs), + this.buildConvexHull([maxPt, minPt], latLngs)); + return ch; + } + }; +}()); + +L.MarkerCluster.include({ + getConvexHull: function () { + var childMarkers = this.getAllChildMarkers(), + points = [], + p, i; + + for (i = childMarkers.length - 1; i >= 0; i--) { + p = childMarkers[i].getLatLng(); + points.push(p); + } + + return L.QuickHull.getConvexHull(points); + } +}); + + +//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 :-) + +L.MarkerCluster.include({ + + _2PI: Math.PI * 2, + _circleFootSeparation: 25, //related to circumference of circle + _circleStartAngle: Math.PI / 6, + + _spiralFootSeparation: 28, //related to size of spiral (experiment!) + _spiralLengthStart: 11, + _spiralLengthFactor: 5, + + _circleSpiralSwitchover: 9, //show spiral instead of circle from this marker count upwards. + // 0 -> always spiral; Infinity -> always circle + + spiderfy: function () { + if (this._group._spiderfied === this || this._group._inZoomAnimation) { + return; + } + + var childMarkers = this.getAllChildMarkers(), + group = this._group, + map = group._map, + center = map.latLngToLayerPoint(this._latlng), + positions; + + this._group._unspiderfy(); + this._group._spiderfied = this; + + //TODO Maybe: childMarkers order by distance to center + + if (childMarkers.length >= this._circleSpiralSwitchover) { + positions = this._generatePointsSpiral(childMarkers.length, center); + } else { + center.y += 10; //Otherwise circles look wrong + positions = this._generatePointsCircle(childMarkers.length, center); + } + + this._animationSpiderfy(childMarkers, positions); + }, + + unspiderfy: function (zoomDetails) { + /// Argument from zoomanim if being called in a zoom animation or null otherwise + if (this._group._inZoomAnimation) { + return; + } + this._animationUnspiderfy(zoomDetails); + + this._group._spiderfied = null; + }, + + _generatePointsCircle: function (count, centerPt) { + var circumference = this._group.options.spiderfyDistanceMultiplier * this._circleFootSeparation * (2 + count), + legLength = circumference / this._2PI, //radius from circumference + angleStep = this._2PI / count, + res = [], + i, angle; + + res.length = count; + + for (i = count - 1; i >= 0; i--) { + angle = this._circleStartAngle + i * angleStep; + res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round(); + } + + return res; + }, + + _generatePointsSpiral: function (count, centerPt) { + var legLength = this._group.options.spiderfyDistanceMultiplier * this._spiralLengthStart, + separation = this._group.options.spiderfyDistanceMultiplier * this._spiralFootSeparation, + lengthFactor = this._group.options.spiderfyDistanceMultiplier * this._spiralLengthFactor, + angle = 0, + res = [], + i; + + res.length = count; + + for (i = count - 1; i >= 0; i--) { + 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 += this._2PI * lengthFactor / angle; + } + return res; + }, + + _noanimationUnspiderfy: function () { + var group = this._group, + map = group._map, + fg = group._featureGroup, + childMarkers = this.getAllChildMarkers(), + m, i; + + group._ignoreMove = true; + + this.setOpacity(1); + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; + + fg.removeLayer(m); + + if (m._preSpiderfyLatlng) { + m.setLatLng(m._preSpiderfyLatlng); + delete m._preSpiderfyLatlng; + } + if (m.setZIndexOffset) { + m.setZIndexOffset(0); + } + + if (m._spiderLeg) { + map.removeLayer(m._spiderLeg); + delete m._spiderLeg; + } + } + + group._ignoreMove = false; + group._spiderfied = null; + } +}); + +L.MarkerCluster.include(!L.DomUtil.TRANSITION ? { + //Non Animated versions of everything + _animationSpiderfy: function (childMarkers, positions) { + var group = this._group, + map = group._map, + fg = group._featureGroup, + i, m, leg, newPos; + + group._ignoreMove = true; + + for (i = childMarkers.length - 1; i >= 0; i--) { + newPos = map.layerPointToLatLng(positions[i]); + m = childMarkers[i]; + + m._preSpiderfyLatlng = m._latlng; + m.setLatLng(newPos); + if (m.setZIndexOffset) { + m.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING + } + + fg.addLayer(m); + + + leg = new L.Polyline([this._latlng, newPos], { weight: 1.5, color: '#222' }); + map.addLayer(leg); + m._spiderLeg = leg; + } + this.setOpacity(0.3); + + group._ignoreMove = false; + group.fire('spiderfied'); + }, + + _animationUnspiderfy: function () { + this._noanimationUnspiderfy(); + } +} : { + //Animated versions here + SVG_ANIMATION: (function () { + return document.createElementNS('http://www.w3.org/2000/svg', 'animate').toString().indexOf('SVGAnimate') > -1; + }()), + + _animationSpiderfy: function (childMarkers, positions) { + var me = this, + group = this._group, + map = group._map, + fg = group._featureGroup, + thisLayerPos = map.latLngToLayerPoint(this._latlng), + xmlns = 'http://www.w3.org/2000/svg', + i, m, leg, newPos; + + group._ignoreMove = true; + + //Add markers to map hidden at our center point + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; + + //If it is a marker, add it now and we'll animate it out + if (m.setOpacity) { + m.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING + m.setOpacity(0); + + fg.addLayer(m); + + m._setPos(thisLayerPos); + } else { + //Vectors just get immediately added + fg.addLayer(m); + } + } + + group._forceLayout(); + group._animationStart(); + + var initialLegOpacity = this.SVG_ANIMATION ? 0 : 0.3; + + for (i = childMarkers.length - 1; i >= 0; i--) { + newPos = map.layerPointToLatLng(positions[i]); + m = childMarkers[i]; + + //Move marker to new position + m._preSpiderfyLatlng = m._latlng; + m.setLatLng(newPos); + + if (m.setOpacity) { + m.setOpacity(1); + } + + + //Add Legs. Force the SVG renderer so we can animate + leg = new L.Polyline([me._latlng, newPos], { weight: 1.5, color: '#222', opacity: initialLegOpacity }); + map.addLayer(leg); + m._spiderLeg = leg; + + //Following animations don't work for canvas or browsers that don't support animated svg + if (this.SVG_ANIMATION) { + //How this works: + //http://stackoverflow.com/questions/5924238/how-do-you-animate-an-svg-path-in-ios + //http://dev.opera.com/articles/view/advanced-svg-animation-techniques/ + + //Animate length + var length = leg._path.getTotalLength(); + leg._path.setAttribute("stroke-dasharray", length + "," + length); + + var anim = document.createElementNS(xmlns, "animate"); + anim.setAttribute("attributeName", "stroke-dashoffset"); + anim.setAttribute("begin", "indefinite"); + anim.setAttribute("from", length); + anim.setAttribute("to", 0); + anim.setAttribute("dur", 0.25); + leg._path.appendChild(anim); + anim.beginElement(); + + //Animate opacity + anim = document.createElementNS(xmlns, "animate"); + anim.setAttribute("attributeName", "stroke-opacity"); + anim.setAttribute("attributeName", "stroke-opacity"); + anim.setAttribute("begin", "indefinite"); + anim.setAttribute("from", 0); + anim.setAttribute("to", 0.3); + anim.setAttribute("dur", 0.25); + leg._path.appendChild(anim); + anim.beginElement(); + } + } + me.setOpacity(0.3); + + //Set the opacity of the spiderLegs back to their correct value + // The animations above override this until they complete. + // If the initial opacity of the spiderlegs isn't 0 then they appear before the animation starts. + this._group._forceLayout(); + + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]._spiderLeg; + + m.options.opacity = 0.5; + m._path.setAttribute('stroke-opacity', 0.5); + } + + group._ignoreMove = false; + + setTimeout(function () { + group._animationEnd(); + group.fire('spiderfied'); + }, 200); + }, + + _animationUnspiderfy: function (zoomDetails) { + var group = this._group, + map = group._map, + fg = group._featureGroup, + thisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng), + childMarkers = this.getAllChildMarkers(), + m, i, a; + + group._ignoreMove = true; + group._animationStart(); + + //Make us visible and bring the child markers back in + this.setOpacity(1); + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; + + //Marker was added to us after we were spidified + if (!m._preSpiderfyLatlng) { + continue; + } + + //Fix up the location to the real one + m.setLatLng(m._preSpiderfyLatlng); + delete m._preSpiderfyLatlng; + //Hack override the location to be our center + if (m.setOpacity) { + m._setPos(thisLayerPos); + m.setOpacity(0); + } else { + fg.removeLayer(m); + } + + //Animate the spider legs back in + if (this.SVG_ANIMATION) { + a = m._spiderLeg._path.childNodes[0]; + a.setAttribute('to', a.getAttribute('from')); + a.setAttribute('from', 0); + a.beginElement(); + + a = m._spiderLeg._path.childNodes[1]; + a.setAttribute('from', 0.5); + a.setAttribute('to', 0); + a.setAttribute('stroke-opacity', 0); + a.beginElement(); + + m._spiderLeg._path.setAttribute('stroke-opacity', 0); + } + } + + group._ignoreMove = false; + + setTimeout(function () { + //If we have only <= one child left then that marker will be shown on the map so don't remove it! + var stillThereChildCount = 0; + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; + if (m._spiderLeg) { + stillThereChildCount++; + } + } + + + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; + + if (!m._spiderLeg) { //Has already been unspiderfied + continue; + } + + + if (m.setOpacity) { + m.setOpacity(1); + m.setZIndexOffset(0); + } + + if (stillThereChildCount > 1) { + fg.removeLayer(m); + } + + map.removeLayer(m._spiderLeg); + delete m._spiderLeg; + } + group._animationEnd(); + }, 200); + } +}); + + +L.MarkerClusterGroup.include({ + //The MarkerCluster currently spiderfied (if any) + _spiderfied: null, + + _spiderfierOnAdd: function () { + this._map.on('click', this._unspiderfyWrapper, this); + + if (this._map.options.zoomAnimation) { + this._map.on('zoomstart', this._unspiderfyZoomStart, this); + } + //Browsers without zoomAnimation or a big zoom don't fire zoomstart + this._map.on('zoomend', this._noanimationUnspiderfy, this); + + if (!L.Browser.touch) { + this._map.getRenderer(this); + //Needs to happen in the pageload, not after, or animations don't work in webkit + // http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements + //Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable + } + }, + + _spiderfierOnRemove: function () { + this._map.off('click', this._unspiderfyWrapper, this); + this._map.off('zoomstart', this._unspiderfyZoomStart, this); + this._map.off('zoomanim', this._unspiderfyZoomAnim, this); + + this._unspiderfy(); //Ensure that markers are back where they should be + }, + + + //On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated) + //This means we can define the animation they do rather than Markers doing an animation to their actual location + _unspiderfyZoomStart: function () { + if (!this._map) { //May have been removed from the map by a zoomEnd handler + return; + } + + this._map.on('zoomanim', this._unspiderfyZoomAnim, this); + }, + _unspiderfyZoomAnim: function (zoomDetails) { + //Wait until the first zoomanim after the user has finished touch-zooming before running the animation + if (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) { + return; + } + + this._map.off('zoomanim', this._unspiderfyZoomAnim, this); + this._unspiderfy(zoomDetails); + }, + + + _unspiderfyWrapper: function () { + /// _unspiderfy but passes no arguments + this._unspiderfy(); + }, + + _unspiderfy: function (zoomDetails) { + if (this._spiderfied) { + this._spiderfied.unspiderfy(zoomDetails); + } + }, + + _noanimationUnspiderfy: function () { + if (this._spiderfied) { + this._spiderfied._noanimationUnspiderfy(); + } + }, + + //If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc + _unspiderfyLayer: function (layer) { + if (layer._spiderLeg) { + this._featureGroup.removeLayer(layer); + + layer.setOpacity(1); + //Position will be fixed up immediately in _animationUnspiderfy + layer.setZIndexOffset(0); + + this._map.removeLayer(layer._spiderLeg); + delete layer._spiderLeg; + } + } +}); + + +}(window, document)); \ No newline at end of file From c822838ae8884c0c0ed9ffe31730e60f06c6bc05 Mon Sep 17 00:00:00 2001 From: wanga3 Date: Fri, 24 May 2019 22:42:00 -0500 Subject: [PATCH 004/183] adds comments and changes button text --- controllers/IndexController.php | 5 +++-- views/public/index/index.php | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index f83a613..5a260c5 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -108,8 +108,9 @@ public function indexAction() ->appendFile('//ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js') ->appendFile(src('jquery.cookie', 'javascripts', 'js')) ->appendFile('//cdn.leafletjs.com/leaflet-0.7/leaflet.js') - ->appendFile(src('mall-map', 'javascripts', 'js')) - ->appendFile(src('modernizr.custom.63332', 'javascripts', 'js')); + ->appendFile(src('modernizr.custom.63332', 'javascripts', 'js')) + ->appendFile(src('new_markercluster_src', 'javascripts', 'js')) //adding this so that the mall-map markers will load (most of the time; sometimes it breaks) + ->appendFile(src('mall-map', 'javascripts', 'js')); $this->view->headLink() ->appendStylesheet('//code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css', 'all') ->appendStylesheet('//cdn.leafletjs.com/leaflet-0.7/leaflet.css', 'all') diff --git a/views/public/index/index.php b/views/public/index/index.php index b599138..b3e56a5 100755 --- a/views/public/index/index.php +++ b/views/public/index/index.php @@ -20,9 +20,9 @@ - + + +
    + id){ + $tourItems = $tour->getItems(); + foreach($tourItems as $ti){ + $html = '
  • '; + $html .= ''.$svg_icon.metadata($ti,array('Dublin Core','Title')).''; + $html .= 'Remove
  • '; + echo $html; + } + } ?> +
+ + + + + + + + diff --git a/views/admin/tours/show.php b/views/admin/tours/show.php new file mode 100644 index 0000000..e38a5e2 --- /dev/null +++ b/views/admin/tours/show.php @@ -0,0 +1,112 @@ + $tourTitle, + 'bodyclass' => 'show','bodyid'=>'tour' ) ); +echo flash(); +?> + +
+ + +
+

Title

+
+ +
+
+ + + +
+

Credits

+
+ +
+
+ + + +
+

Description

+
+ +
+
+ + + +
+

Postscript Text

+
+ '.htmlspecialchars_decode(metadata( 'tour', 'postscript_text' )).''; ?> +
+
+ + + + getItems(); +if( $tour->getItems() ): ?> +
+

Items

+
+
    + +
  • + +
  • + +
+
+
+ + +
+ +
+
+ + + + + + + + + + + + 'delete-confirm big red button' ), + 'delete-confirm' ); ?> + +
+ + +
+ + From fc1abe95b28fa783db9b6e6e6895cfd63a68e43d Mon Sep 17 00:00:00 2001 From: wanga3 Date: Sat, 25 May 2019 15:49:51 -0500 Subject: [PATCH 006/183] successfully makes the back-end work by changing tour-builder in routes.ini to mall-map, and changing TourBuilder_ToursController to MallMap_ToursController --- MallMapPlugin.php | 2 +- controllers/ToursController.php | 6 +++--- helpers/TourFunctions.php | 4 ++-- plugin.ini | 8 ++++---- routes.ini | 10 +++++----- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/MallMapPlugin.php b/MallMapPlugin.php index c9eb4de..4bb1cda 100755 --- a/MallMapPlugin.php +++ b/MallMapPlugin.php @@ -206,7 +206,7 @@ public function filterSearchRecordTypes($recordTypes) public function filterAdminNavigationMain( $nav ) { - $nav['Tours'] = array( 'label' => __('Rome Walking Tours'), + $nav['Tours'] = array( 'label' => __('Tours'), 'action' => 'browse', 'controller' => 'tours' ); return $nav; diff --git a/controllers/ToursController.php b/controllers/ToursController.php index 37cc105..c2ade9a 100644 --- a/controllers/ToursController.php +++ b/controllers/ToursController.php @@ -2,11 +2,11 @@ require_once 'Tour.php'; require_once 'TourItem.php'; -class TourBuilder_ToursController extends Omeka_Controller_AbstractActionController +class MallMap_ToursController extends Omeka_Controller_AbstractActionController { public function init() { $this->_helper->db->setDefaultModelName( 'Tour' ); } - -} \ No newline at end of file + +} diff --git a/helpers/TourFunctions.php b/helpers/TourFunctions.php index b63a84a..58f4503 100644 --- a/helpers/TourFunctions.php +++ b/helpers/TourFunctions.php @@ -18,7 +18,7 @@ function availableItemsJSON() { foreach($items as $key => $arr) { $items[$key]['label'] = metadata( $arr, array( 'Dublin Core', 'Title' ) ); } - + return json_encode($items); } @@ -161,7 +161,7 @@ function display_tour_thumb($tour,$i,$userDefined=null){ }else{ // use the fallback if their are no items in the tour - $html .= ''; + $html .= ''; } $html .= ''; diff --git a/plugin.ini b/plugin.ini index 2b2c1a8..bda1f25 100755 --- a/plugin.ini +++ b/plugin.ini @@ -1,12 +1,12 @@ [info] name="Mall Map" -author="Roy Rosenzweig Center for History and New Media" -description="" +author="Alec Wang and Austin Mason" +description="A plugin to add walking tours for the Medieval Rome From Reason OCS at Carleton College" license="GPLv3" link="" support_link="" -version="1.0-dev" +version="0.1-dev" omeka_minimum_version="2.0" -omeka_target_version="2.0" +omeka_target_version="2.6" tags="" required_plugins="Geolocation,SimpleVocab" diff --git a/routes.ini b/routes.ini index 1950354..441b581 100644 --- a/routes.ini +++ b/routes.ini @@ -1,22 +1,22 @@ [routes] tours.route = "tours/:action" -tours.defaults.module = tour-builder +tours.defaults.module = mall-map tours.defaults.controller = tours tours.defaults.action = "browse" tourAction.route = "tours/:action/:id" -tourAction.defaults.module = tour-builder +tourAction.defaults.module = mall-map tourAction.defaults.controller = tours tourAction.defaults.action = "show" tourAction.reqs.id = "\d+" tourItemAction.route = "tours/edit/:id/:action/:item" -tourItemAction.defaults.module = tour-builder +tourItemAction.defaults.module = mall-map tourItemAction.defaults.controller = tours tourItemAction.reqs.id = "\d+" tourItemAction.reqs.item = "\d+" oldTour.route = "tour-builder/tours/:action/:id" -oldTour.defaults.module = tour-builder +oldTour.defaults.module = mall-map oldTour.defaults.controller = tours -oldTour.defaults.action = "browse" \ No newline at end of file +oldTour.defaults.action = "browse" From 8e8ae3b738cc5366e1afb09ec6bd13d63676309b Mon Sep 17 00:00:00 2001 From: wanga3 Date: Sat, 25 May 2019 17:38:19 -0500 Subject: [PATCH 007/183] makes public tours appear in the dropdown menu of the map --- MallMapPlugin.php | 2 +- controllers/IndexController.php | 18 +++++++++++++++++- views/public/index/index.php | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/MallMapPlugin.php b/MallMapPlugin.php index 4bb1cda..b64bc27 100755 --- a/MallMapPlugin.php +++ b/MallMapPlugin.php @@ -206,7 +206,7 @@ public function filterSearchRecordTypes($recordTypes) public function filterAdminNavigationMain( $nav ) { - $nav['Tours'] = array( 'label' => __('Tours'), + $nav['Tours'] = array( 'label' => __('Walking Tours'), 'action' => 'browse', 'controller' => 'tours' ); return $nav; diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 5a260c5..4b6db68 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -36,7 +36,7 @@ class MallMap_IndexController extends Omeka_Controller_AbstractActionController /** * @var array Filterable item types in display order */ - private $_itemTypes = array( + public $_itemTypes = array( self::ITEM_TYPE_ID_PLACE => 'Place', self::ITEM_TYPE_ID_EVENT => 'Event', self::ITEM_TYPE_ID_DOCUMENT => 'Document', @@ -97,6 +97,22 @@ public function indexAction() $placeTypes = $simpleVocabTerm->findByElementId(self::ELEMENT_ID_PLACE_TYPE); $eventTypes = $simpleVocabTerm->findByElementId(self::ELEMENT_ID_EVENT_TYPE); + // Get the database. + $db = get_db(); + // Get the Tour table. + $tour_table = $db->getTable('Tour'); + // Build the select query. + $select = $tour_table->getSelect(); + // Fetch some items with our select. + $results = $tour_table->fetchObjects($select); + $_tourTypes = array(); + foreach ($results as $tour){ + if($tour['public']==1){ + $_tourTypes[$tour['id']] = $tour['title']; + } + } + + $this->view->tour_types = $_tourTypes; $this->view->item_types = $this->_itemTypes; $this->view->map_coverages = explode("\n", $mapCoverages->terms); $this->view->place_types = explode("\n", $placeTypes->terms); diff --git a/views/public/index/index.php b/views/public/index/index.php index b3e56a5..4d4b9dd 100755 --- a/views/public/index/index.php +++ b/views/public/index/index.php @@ -23,7 +23,7 @@ From 67ac35016b66a72a3902e54575cd097fb5e4a390 Mon Sep 17 00:00:00 2001 From: wanga3 Date: Tue, 28 May 2019 13:15:30 -0500 Subject: [PATCH 008/183] now tour items must have geolocationsto be added to the map --- controllers/IndexController.php | 69 +++++++++++++++------------- helpers/TourFunctions.php | 17 +++++++ views/admin/tours/form.php | 66 +++++++++++++------------- views/public/index/index.php | 8 ++-- views/public/javascripts/mall-map.js | 32 +++++++------ 5 files changed, 108 insertions(+), 84 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 4b6db68..12395cc 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -36,14 +36,14 @@ class MallMap_IndexController extends Omeka_Controller_AbstractActionController /** * @var array Filterable item types in display order */ - public $_itemTypes = array( - self::ITEM_TYPE_ID_PLACE => 'Place', - self::ITEM_TYPE_ID_EVENT => 'Event', - self::ITEM_TYPE_ID_DOCUMENT => 'Document', - self::ITEM_TYPE_ID_STILL_IMAGE => 'Image', // Still Image - self::ITEM_TYPE_ID_MOVING_IMAGE => 'Video', // Moving Image - self::ITEM_TYPE_ID_SOUND => 'Audio', // Sound - ); + // public $_itemTypes = array( + // self::ITEM_TYPE_ID_PLACE => 'Place', + // self::ITEM_TYPE_ID_EVENT => 'Event', + // self::ITEM_TYPE_ID_DOCUMENT => 'Document', + // self::ITEM_TYPE_ID_STILL_IMAGE => 'Image', // Still Image + // self::ITEM_TYPE_ID_MOVING_IMAGE => 'Video', // Moving Image + // self::ITEM_TYPE_ID_SOUND => 'Audio', // Sound + // ); /** * @var array Data used when adding the historic map layer. @@ -113,7 +113,7 @@ public function indexAction() } $this->view->tour_types = $_tourTypes; - $this->view->item_types = $this->_itemTypes; + // $this->view->item_types = $this->_itemTypes; $this->view->map_coverages = explode("\n", $mapCoverages->terms); $this->view->place_types = explode("\n", $placeTypes->terms); $this->view->event_types = explode("\n", $eventTypes->terms); @@ -154,9 +154,14 @@ public function filterAction() $joins = array("$db->Item AS items ON items.id = locations.item_id"); $wheres = array("items.public = 1"); + // // Filter tours + // if ($this->_request->getParam('itemType')) { + // $wheres[] = $db->quoteInto("items.item_type_id = ?", $this->_request->getParam('itemType'), Zend_Db::INT_TYPE); + // } + // Filter item type. - if ($this->_request->getParam('itemType')) { - $wheres[] = $db->quoteInto("items.item_type_id = ?", $this->_request->getParam('itemType'), Zend_Db::INT_TYPE); + if ($this->_request->getParam('tourType')) { + $wheres[] = $db->quoteInto("items.item_type_id = ?", $this->_request->getParam('tourType'), Zend_Db::INT_TYPE); } // Filter map coverage. if ($this->_request->getParam('mapCoverage')) { @@ -165,27 +170,27 @@ public function filterAction() . $db->quoteInto("AND $alias.element_id = ?", self::ELEMENT_ID_MAP_COVERAGE); $wheres[] = $db->quoteInto("$alias.text = ?", $this->_request->getParam('mapCoverage')); } - // Filter place types (inclusive). - if ($this->_request->getParam('placeTypes')) { - $alias = "place_types"; - $joins[] = "$db->ElementText AS $alias ON $alias.record_id = items.id AND $alias.record_type = 'Item' " - . $db->quoteInto("AND $alias.element_id = ?", self::ELEMENT_ID_PLACE_TYPE); - $placeTypes = array(); - foreach ($this->_request->getParam('placeTypes') as $text) { - $placeTypes[] = $db->quoteInto("$alias.text = ?", $text); - } - $wheres[] = implode(" OR ", $placeTypes); - // Filter event types (inclusive). - } else if ($this->_request->getParam('eventTypes')) { - $alias = "event_types"; - $joins[] = "$db->ElementText AS $alias ON $alias.record_id = items.id AND $alias.record_type = 'Item' " - . $db->quoteInto("AND $alias.element_id = ?", self::ELEMENT_ID_EVENT_TYPE); - $eventTypes = array(); - foreach ($this->_request->getParam('eventTypes') as $text) { - $eventTypes[] = $db->quoteInto("$alias.text = ?", $text); - } - $wheres[] = implode(" OR ", $eventTypes); - } + // // Filter place types (inclusive). + // if ($this->_request->getParam('placeTypes')) { + // $alias = "place_types"; + // $joins[] = "$db->ElementText AS $alias ON $alias.record_id = items.id AND $alias.record_type = 'Item' " + // . $db->quoteInto("AND $alias.element_id = ?", self::ELEMENT_ID_PLACE_TYPE); + // $placeTypes = array(); + // foreach ($this->_request->getParam('placeTypes') as $text) { + // $placeTypes[] = $db->quoteInto("$alias.text = ?", $text); + // } + // $wheres[] = implode(" OR ", $placeTypes); + // // Filter event types (inclusive). + // } else if ($this->_request->getParam('eventTypes')) { + // $alias = "event_types"; + // $joins[] = "$db->ElementText AS $alias ON $alias.record_id = items.id AND $alias.record_type = 'Item' " + // . $db->quoteInto("AND $alias.element_id = ?", self::ELEMENT_ID_EVENT_TYPE); + // $eventTypes = array(); + // foreach ($this->_request->getParam('eventTypes') as $text) { + // $eventTypes[] = $db->quoteInto("$alias.text = ?", $text); + // } + // $wheres[] = implode(" OR ", $eventTypes); + // } // Build the SQL. $sql = "SELECT items.id, locations.latitude, locations.longitude\nFROM $db->Location AS locations"; diff --git a/helpers/TourFunctions.php b/helpers/TourFunctions.php index 58f4503..7364307 100644 --- a/helpers/TourFunctions.php +++ b/helpers/TourFunctions.php @@ -18,7 +18,24 @@ function availableItemsJSON() { foreach($items as $key => $arr) { $items[$key]['label'] = metadata( $arr, array( 'Dublin Core', 'Title' ) ); } + return json_encode($items); +} +function availableLocationItemsJSON() { + $db = get_db(); + $prefix=$db->prefix; + $itemTable = $db->getTable( 'Item' ); + $locationTable = $db->getTable( 'Location' ); + $locationItemsDat = $locationTable->fetchObjects( "SELECT item_id FROM ".$prefix."locations"); + $locationItemsIDs = array(); + foreach ($locationItemsDat as $dat){ + $locationItemsIDs[] = (int) $dat["item_id"]; + } + $locationItemsIDs = implode(", ", $locationItemsIDs); + $items = $itemTable->fetchObjects( "SELECT * FROM omeka_items WHERE id IN ($locationItemsIDs) ORDER BY modified DESC" ); + foreach($items as $key => $arr) { + $items[$key]['label'] = metadata( $arr, array( 'Dublin Core', 'Title' ) ); + } return json_encode($items); } diff --git a/views/admin/tours/form.php b/views/admin/tours/form.php index 8a42acd..ec5965d 100644 --- a/views/admin/tours/form.php +++ b/views/admin/tours/form.php @@ -6,7 +6,7 @@
- +
@@ -17,8 +17,8 @@

- - + +
formLabel( 'credits', __('Credits') ); ?> @@ -28,18 +28,18 @@

- +
formLabel( 'description', __('Description') ); ?> - +
formTextarea( 'description', $tour->description,array( 'rows' => 12, 'cols' => '40' ) ); ?>

- +
formLabel( 'postscript_text', __('Postscript Text') ); ?> @@ -49,19 +49,19 @@

- +
- +
- +
-
- +
+

Tour Items

-

Search for items by title to add to tour.

+

Search for items with geolocations by title to add to tour.

@@ -75,71 +75,71 @@ echo $html; } } ?> - + - +
diff --git a/views/public/index/index.php b/views/public/index/index.php index 4d4b9dd..828c497 100755 --- a/views/public/index/index.php +++ b/views/public/index/index.php @@ -20,11 +20,11 @@ - - - tour_types as $item_type_id => $item_type): ?> - + tour_types as $tour_type_id => $tour_type): ?> +

Tour Items

-

Search for items with geolocations by title to add to tour.

+

Search for items with geolocations by title to add to tour. + Item AS items ON items.id = locations.item_id"); + // $joins = array("$db->Item AS items ON items.id = tour_items.item_id"); + $wheres = array("items.public = 1"); + + $request_tour_id = 1; //$this->_request->getParam('tourType'); + $tourItemTable = $db->getTable( 'TourItem' ); + if($request_tour_id != 0){ + $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items WHERE tour_id = $request_tour_id"); + } else { + $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items"); + } + $tourItemsIDs = array(); + foreach ($tourItemsDat as $dat){ + $tourItemsIDs[] = (int) $dat["item_id"]; + } + $tourItemsIDs = implode(", ", $tourItemsIDs); + // // Filter tours + + if($request_tour_id != 0){ + $wheres[] = $db->quoteInto("items.id IN ($tourItemsIDs)", Zend_Db::INT_TYPE); + } + + echo "\n"; + echo json_encode($tourItemsIDs); + echo json_encode($joins); + echo json_encode($wheres); + + ?> + +

diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index 1f60638..c7c0250 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -200,7 +200,7 @@ function mallMapJs(){ }); // Filter item type. - $('#item-type').change(function () { + $('#tour-type').change(function () { var itemType = $(this); if ('Place' == itemType.find(':selected').text()) { $('#place-type-div').show({duration: 'fast'}); @@ -219,7 +219,7 @@ function mallMapJs(){ doFilters(); }); - $('#map-coverage,#item-type').on('touchstart touchend', function(event) { + $('#map-coverage,#tour-type').on('touchstart touchend', function(event) { event.stopPropagation(); }); @@ -288,8 +288,6 @@ function mallMapJs(){ var mapCoverage = $('#map-coverage'); var tourType = $('#tour-type'); - console.log(tourType); - alert(tourType.val().toString()); // var placeTypes = $('input[name=place-type]:checked'); // var eventTypes = $('input[name=event-type]:checked'); @@ -427,7 +425,7 @@ function mallMapJs(){ } $('#map-coverage').val('0'); - $('#item-type').val('0'); + $('#tour-type').val('0'); $('#place-type-div').hide({duration: 'fast'}); $('input[name=place-type-all]').prop('checked', true). @@ -455,7 +453,7 @@ function mallMapJs(){ if ('0' != $('#map-coverage').val()) { addHistoricMapLayer(); } - if ('Place' == $('#item-type').find(':selected').text()) { + if ('Place' == $('#tour-type').find(':selected').text()) { var placeTypes = $('input[name=place-type]:checked'); if (placeTypes.length) { $('input[name=place-type-all]').parent().removeClass('on'); @@ -463,7 +461,7 @@ function mallMapJs(){ } $('#place-type-div').show({duration: 'fast'}); } - if ('Event' == $('#item-type').find(':selected').text()) { + if ('Event' == $('#tour-type').find(':selected').text()) { var eventTypes = $('input[name=event-type]:checked'); if (eventTypes.length) { $('input[name=event-type-all]').parent().removeClass('on'); From a11f83fc67c44150f79953d5954d53fb554c6291 Mon Sep 17 00:00:00 2001 From: wanga3 Date: Tue, 28 May 2019 14:07:25 -0500 Subject: [PATCH 010/183] removes alerts, remove test code from form.php --- views/admin/tours/form.php | 34 +--------------------------- views/public/javascripts/mall-map.js | 4 +--- 2 files changed, 2 insertions(+), 36 deletions(-) diff --git a/views/admin/tours/form.php b/views/admin/tours/form.php index ef947c9..ec5965d 100644 --- a/views/admin/tours/form.php +++ b/views/admin/tours/form.php @@ -61,39 +61,7 @@

Tour Items

-

Search for items with geolocations by title to add to tour. - Item AS items ON items.id = locations.item_id"); - // $joins = array("$db->Item AS items ON items.id = tour_items.item_id"); - $wheres = array("items.public = 1"); - - $request_tour_id = 1; //$this->_request->getParam('tourType'); - $tourItemTable = $db->getTable( 'TourItem' ); - if($request_tour_id != 0){ - $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items WHERE tour_id = $request_tour_id"); - } else { - $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items"); - } - $tourItemsIDs = array(); - foreach ($tourItemsDat as $dat){ - $tourItemsIDs[] = (int) $dat["item_id"]; - } - $tourItemsIDs = implode(", ", $tourItemsIDs); - // // Filter tours - - if($request_tour_id != 0){ - $wheres[] = $db->quoteInto("items.id IN ($tourItemsIDs)", Zend_Db::INT_TYPE); - } - - echo "\n"; - echo json_encode($tourItemsIDs); - echo json_encode($joins); - echo json_encode($wheres); - - ?> - -

+

Search for items with geolocations by title to add to tour.

diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index c7c0250..da8bafb 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -21,8 +21,7 @@ function mallMapJs(){ // var MAP_CENTER = [38.8891, -77.02949]; var MAP_CENTER = [41.9001702, 12.4698422]; // MAP_ZOOM controls the default zoom of the map - var MAP_ZOOM = 17; - // var MAP_ZOOM = 15; + var MAP_ZOOM = 15; var MAP_MIN_ZOOM = 14; var MAP_MAX_ZOOM = 18; // MAP_MAX_BOUNDS controls the boundaries of the map @@ -379,7 +378,6 @@ function mallMapJs(){ // document.head.appendChild(imported); } } - console.log(i.toString()); markers.addLayer(geoJsonLayer); map.addLayer(markers); }); From 3a0bdafc327bfa177f58b194f0a39a7214dd3951 Mon Sep 17 00:00:00 2001 From: wanga3 Date: Thu, 30 May 2019 13:16:59 -0500 Subject: [PATCH 011/183] adds line between markers in a tour --- views/public/javascripts/mall-map.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index da8bafb..8516d38 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -380,6 +380,29 @@ function mallMapJs(){ } markers.addLayer(geoJsonLayer); map.addLayer(markers); + + var json_response = eval ("(" + jqXhr.responseText + ")"); + var json_content = json_response.features; + var pointList = []; + for(var i = 0; i < json_content.length; i++){ + lat = json_content[i].geometry.coordinates[1]; + lng = json_content[i].geometry.coordinates[0]; + var point = new L.LatLng(lat, lng); + pointList[i] = point; + } + var tourPolyline = new L.Polyline(pointList, { + color: 'blue', + weight: 3, + opacity: 0.6, + smoothFactor: 1 + }); + for(var j = 0; j < Object.keys(map._layers).length; j++){ + var feature = map._layers[Object.keys(map._layers)[j]]; + if(feature._path){ + map.removeLayer(feature); //map._layers[Object.keys(map._layers)[j]] = null; + } + } + tourPolyline.addTo(map); }); } From 16bc9ee4c0e28adbb5d01373de882599de27b92b Mon Sep 17 00:00:00 2001 From: alexanderlewis99 Date: Thu, 30 May 2019 13:28:55 -0500 Subject: [PATCH 012/183] changes color of line to blue --- views/public/javascripts/mall-map.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index 8516d38..3bd4578 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -391,7 +391,7 @@ function mallMapJs(){ pointList[i] = point; } var tourPolyline = new L.Polyline(pointList, { - color: 'blue', + color: 'black', weight: 3, opacity: 0.6, smoothFactor: 1 From 6f5710a18bd7799bd2f2b92ece49e2eff177832a Mon Sep 17 00:00:00 2001 From: alexanderlewis99 Date: Thu, 30 May 2019 13:29:05 -0500 Subject: [PATCH 013/183] changes to blue --- views/public/javascripts/mall-map.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index 3bd4578..8516d38 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -391,7 +391,7 @@ function mallMapJs(){ pointList[i] = point; } var tourPolyline = new L.Polyline(pointList, { - color: 'black', + color: 'blue', weight: 3, opacity: 0.6, smoothFactor: 1 From 105fee9eb4479ae9554d61b127c22713c92733a9 Mon Sep 17 00:00:00 2001 From: Alvin Bierley Date: Thu, 15 Apr 2021 10:59:16 -0500 Subject: [PATCH 014/183] fixes error on install --- helpers/TourFunctions.php | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/helpers/TourFunctions.php b/helpers/TourFunctions.php index 7364307..0926d77 100644 --- a/helpers/TourFunctions.php +++ b/helpers/TourFunctions.php @@ -27,16 +27,18 @@ function availableLocationItemsJSON() { $itemTable = $db->getTable( 'Item' ); $locationTable = $db->getTable( 'Location' ); $locationItemsDat = $locationTable->fetchObjects( "SELECT item_id FROM ".$prefix."locations"); - $locationItemsIDs = array(); - foreach ($locationItemsDat as $dat){ - $locationItemsIDs[] = (int) $dat["item_id"]; - } - $locationItemsIDs = implode(", ", $locationItemsIDs); - $items = $itemTable->fetchObjects( "SELECT * FROM omeka_items WHERE id IN ($locationItemsIDs) ORDER BY modified DESC" ); - foreach($items as $key => $arr) { - $items[$key]['label'] = metadata( $arr, array( 'Dublin Core', 'Title' ) ); + if ($locationItemsDat) { + $locationItemsIDs = array(); + foreach ($locationItemsDat as $dat){ + $locationItemsIDs[] = (int) $dat["item_id"]; + } + $locationItemsIDs = implode(", ", $locationItemsIDs); + $items = $itemTable->fetchObjects( "SELECT * FROM omeka_items WHERE id IN ($locationItemsIDs) ORDER BY modified DESC" ); + foreach($items as $key => $arr) { + $items[$key]['label'] = metadata( $arr, array( 'Dublin Core', 'Title' ) ); + } + return json_encode($items); } - return json_encode($items); } function has_tours() From 4a18e2bd2e9593406a20785b0f0e772d62d1104d Mon Sep 17 00:00:00 2001 From: Alvin Bierley Date: Wed, 5 May 2021 01:55:15 -0500 Subject: [PATCH 015/183] no real updates --- Leaflet.awesome-numbered-marker | 1 + controllers/IndexController.php | 12 +- img/markers_default.png | Bin 0 -> 119805 bytes img/markers_default@2x.png | Bin 0 -> 254280 bytes img/markers_shadow.png | Bin 0 -> 535 bytes img/markers_shadow@2x.png | Bin 0 -> 1469 bytes .../public/css/leaflet.extra-markers.min.css | 8 ++ .../css/leaflet_awesome_number_markers.css | 99 ++++++++++++++++ views/public/javascripts/leaf-green.png | Bin 0 -> 2750 bytes .../javascripts/leaflet.extra-markers.min.js | 10 ++ .../leaflet_awesome_number_markers.js | 65 +++++++++++ views/public/javascripts/mall-map.js | 110 ++++++++++++++---- .../javascripts/src/images/markers-soft.png | Bin 0 -> 41226 bytes .../src/leaflet_awesome_number_markers.css | 99 ++++++++++++++++ .../src/leaflet_awesome_number_markers.js | 65 +++++++++++ 15 files changed, 444 insertions(+), 25 deletions(-) create mode 160000 Leaflet.awesome-numbered-marker create mode 100644 img/markers_default.png create mode 100644 img/markers_default@2x.png create mode 100644 img/markers_shadow.png create mode 100644 img/markers_shadow@2x.png create mode 100644 views/public/css/leaflet.extra-markers.min.css create mode 100644 views/public/css/leaflet_awesome_number_markers.css create mode 100644 views/public/javascripts/leaf-green.png create mode 100644 views/public/javascripts/leaflet.extra-markers.min.js create mode 100644 views/public/javascripts/leaflet_awesome_number_markers.js create mode 100644 views/public/javascripts/src/images/markers-soft.png create mode 100644 views/public/javascripts/src/leaflet_awesome_number_markers.css create mode 100644 views/public/javascripts/src/leaflet_awesome_number_markers.js diff --git a/Leaflet.awesome-numbered-marker b/Leaflet.awesome-numbered-marker new file mode 160000 index 0000000..f7b5b59 --- /dev/null +++ b/Leaflet.awesome-numbered-marker @@ -0,0 +1 @@ +Subproject commit f7b5b594e9fc451cd006ee345220a86390eb1cf1 diff --git a/controllers/IndexController.php b/controllers/IndexController.php index ba692cb..af3f1a3 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -114,9 +114,11 @@ public function indexAction() $this->view->tour_types = $_tourTypes; // $this->view->item_types = $this->_itemTypes; - $this->view->map_coverages = explode("\n", $mapCoverages->terms); - $this->view->place_types = explode("\n", $placeTypes->terms); - $this->view->event_types = explode("\n", $eventTypes->terms); + if ($mapCoverages && $placeTypes && $eventTypes) { + $this->view->map_coverages = explode("\n", $mapCoverages->terms); + $this->view->place_types = explode("\n", $placeTypes->terms); + $this->view->event_types = explode("\n", $eventTypes->terms); + } // Set the JS and CSS files. $this->view->headScript() @@ -125,7 +127,9 @@ public function indexAction() ->appendFile(src('jquery.cookie', 'javascripts', 'js')) ->appendFile('//cdn.leafletjs.com/leaflet-0.7/leaflet.js') ->appendFile(src('modernizr.custom.63332', 'javascripts', 'js')) + ->appendFile(src('leaflet_awesome_number_markers', 'javascripts', 'js')) ->appendFile(src('new_markercluster_src', 'javascripts', 'js')) //adding this so that the mall-map markers will load (most of the time; sometimes it breaks) + ->appendFile(src('leaflet.extra-markers.min', 'javascripts', 'js')) ->appendFile(src('mall-map', 'javascripts', 'js')); $this->view->headLink() ->appendStylesheet('//code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css', 'all') @@ -134,6 +138,8 @@ public function indexAction() ->appendStylesheet(src('MarkerCluster', 'css', 'css')) ->appendStylesheet(src('MarkerCluster.Default', 'css', 'css')) ->appendStylesheet(src('MarkerCluster.Default.ie', 'css', 'css'), 'all', 'lte IE 8') + ->appendStylesheet(src('leaflet_awesome_number_markers', 'css', 'css')) + ->appendStylesheet(src('leaflet.extra-markers.min', 'css', 'css')) ->appendStylesheet(src('mall-map', 'css', 'css')); } diff --git a/img/markers_default.png b/img/markers_default.png new file mode 100644 index 0000000000000000000000000000000000000000..2c81d15bf68b2444f39108823c7166cd7d74d8fb GIT binary patch literal 119805 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 literal 0 HcmV?d00001 diff --git a/img/markers_default@2x.png b/img/markers_default@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..35ff61b50db09885901cbd0e222c2540265cc357 GIT binary patch literal 254280 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 z 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

JVRE-K81RUbKAU)P=1 z5pdd9BKWBY&dJ{b0dakpHC^*vQ+$r;Z!0V8@_}x-%NKPn(lT@f_do7xWl9a|roUA4 z6zzrIOcCVm$#$e52>|T_ja?=&9^U95=9-WG<5f+-S*>JAHpXhf_bq0;w4l9h=CR)u`S>TM!)rjX$pui}%sQ42pHMf|uT++W>y%O?6 z9{_GTO)Wxz1Ra|m|L8KCKb*WO<#$t4lAcTz3V7?6szX?b$s_6s+I4-I^a=~O5LF)i z5C6fY<|uJ_4)4eF&{(LNy~AKVcY?@n*RhiohH`b@F8G)sSXtF{YxgbtX`=G%8mTOO zJI!aiBHlbKK=T3Mt37}{%Jj*7>)xYy68}C`UP`45%+ihGOVbT()8xgUt6NUneFWb5 zJt8u~k8s8%%-?^PC35=tPki292i1;i*jXdW#$orr6-tw-#ziL(o~+Jz zf7>~Gjc&fVh5#Ps4bo4g755%DX&W?hzF7#!nHrCzii)YOOgFnf=+-dgFfsTcu{}0v zeH=XV+uBjUk8Ff#QR@X#^5H_~M}TI|I?)C(#FZxd8QbH`<@xNO4LZ=`bzy#&kb~xj ziJRBx6F;i{HvDwm_Gz$T_+@eJ_(G}hWTuK5F)cB6COW&8zOEqhjx8o(S=TyKTViM* z+4khSi;=tuD+dyci}#i82$T8x`c_u8CakzIpY6?eb##!#P~_l5;)dA_O<1CrbZd># zZ3l}Tcy|Rk1v2U+TNWa-Khz~81n(|b8vuKELjO1k;BGtWpnb2R=o0kxOSjmHY{?L`N@K#OMeliB-rNl}Oi* z_WM2Z-ttis-LPfZprCd7?O&WsCe8CMiT{rrRUi+(tvynIaBI=dd1{hE( z=>VluhkA-4*C|};SRDd6f8JLUhjM+S?BC9V7110Df&F+~8dO~xS;0tl5yZxFWqPL{ z8Qh#bL0TNU6dx~Qu6@X?BNEyP=@@M(D7YuB$oySsw-1r~8j?D$<@K(|%fkyDQI|=z zhw548K72`%12~v4Ljb?G!z~NO+J9gxC*lu=@z(5|_x9h2HPW{I#y5@RD6K5#pZ3t7t8N&{c{onYsh!cdsaw(oZ)!b z*j3>vzfKT-rpC~vMLcm9%M}@ zBTnsNz3BSvsLEG(o<+kI6qT|jkA6W-2HV)61(h{EC)&dbL7vbv_ehEe7>C(H>kZ43 z$N$Jns$)Xq>bc^!0~}=J_FEv9P_6+ln+M2&xryswN9(-QC=1fQKt^HNjbD#;PEH4P zuTD>QNgFI5d}$*QWk!{jR{{G8o-BsR}cHp3LXkKX} zD#nRE1+Jc1Omxz_VGZ(km8@1k_P(iQeMmNowIo2BQD>g)eoK@MiyMYIh>ZTB+148( zlR3EaU})Z+k;1azXy~L=H^edX*NX2ib<>~H()ay1nB|>kN-pRljl(4ql7IhAC=5pL z)`-=Uclqf#OXtCr`2|2%nmwpkG{4EHqTo#ETx<1#aKPJ|h4_~Z#uv1(hAyAxp9l5kV$uB?b%^wERZWUBgeZlOV`;GWR;OL*&lEo8Gx zr)$0u_yS98W%=CfP0QKH4)V}{p9vBn)oHf9g_-!H4B{2ZgV`!Wmwv>In?QVE`g*D& zoW|kVW^``}or)3(2F($bYgU8tRbd1ueg&E!_vF z+@s%B>X7{3SE6uBi>gtMs$;wXgxmYkj$bpJliDIK@*b1mj3lO=FWO$Zq4i%I4T>&x z+~3W4`-7=fj4jA-KKA}RZ?7vIE^t(-SRW@=cr%*?4&`CIjSs3-`n~0 zWRs8ftSTmu(%}t*%(e|6M(SYul@CYEW&yu#WM@zMCxWt+ZJm~YX-tp2XX53?w|yED zl%&7I0<%vFq*8>yBcLz45Oii@vu4Pw><+ICYe#;R21bdTme}SG)!)X8ge5(GS5RCY z%2FY(s`wXRPtxl`onl3poh@5=QVLpF(yC?`4+9=cfEeFWxK`E}Xg1R?o`%x-C0=TM zQdx|B_h;)CXrF?vexmK$&@MrtwjIy+ zG9Y9(afmg*jwG{WPGitv@x0^FF)b%x5aL!9W_RDg`>{Z9=eXC}2eV6Cyj2d=G{E?$ zsv7B(-oQO3B6-zLAVzFd#!t_DCVVB3mDhlL)381zcFAzxAT@kOY zNC&Z3g&(mSTCRxOUZu+GgSXK>6pDwq3!Un&iMIqBBhv48#!Z|Z)O>bexRnw=GBmY< zJqg~BUxDInrPoP@$Tr=NIfa2ruiYt;!*_{79FYUu-#9#@Y=#Y3+$AR}=Z#V8lSj5~ zT{0WNw!XMapBW|vxPr#)c9(-|L<0HnOIMfR$=22rzO$>YAU$F;;EOxhzCQo+!?lH1 z9ZO8LtTCBB9$4j^r{@(DCWv3^pY=h?&7cZ;t4hDP4rS(W&>7Qj5utd#Bl2lobNn*6 z?Q|%SyKg9Xc}@PlHy7%=tBH{s!iZK>rEy4Q)G?g-;0Uf53_R6MTOFLvoBGcC9||tF zv3y<$MoY2#CF89vs3BzKKMwx&Gly)vMw~8u8f`on-xay#jVHu(5Sa z#TiYDrSBOoJNF_k9!<8pkBJPT@$qq@(2Hl7A9M2=ZidQXp)Cn*9~XkOI_?GJ6`PO=!u5>duA>uvV!I56mLkr-sOih!G)JGD_{;{b-kEI)Vaxan ziC$7+?4uTfVLu7JZv9Clx@+@!`mFz94lMs5)VtLG+e`CQHUT9HaGPz6xR)D9S!Yc1 zIAzjF9>33M)m`wQ7mB<)zy-%XD@NKum-8mNmh#+t&AP8|<}A~Ayysd3cTdfK7X}ae zWWD}jBrXxo>WUI-AbW@w?G7x69X!gbReo?ZF}I((tx2Rz2%`B}BNB<-V@;sR_?EDe zcX7(?zh36Pa_F}5;hh!34FVCL{-I5^=7g6ob$nx#*G2jZ#T(`)&UXW7p}N!De5ulg&QXo6Lu&U9lLd(>SDRwN9cH+BKxX8vh*L~- zi>I8TO504`3kjx@%$^ZwIqaA%yDrSCmS^HbF^l?=s-^9(1k@EWzU@#ezaI%OcK+uW z=(v-p!zjugbxk3h;daUp6qaEl}$O_VQL{dWJ;e>Gnt*oL&x zg2ysPlRpIXP?S-a&;~Z zDT0u#tLugUfX*;k1aqiIOUr@oTY;Gf*v-17_~!scjiBemaS~L`(7A$pUsa1Qc~wBT zVIVZMVia8J7#gEcJ$9s2QWIu|#eoA0Ur(T_#uvUsm#tXW6l*PC2r;#s++ z>t`rlpxeBd+}c*4RyUgAd#?(E9Llvx*XL_Iz};ko_Eq|xh28oo|JxmTWX zV42o+hIcESyL1i^X3JR*={D0EG_?qYVh4?_gPf^ka)U{UzuA-urFQA<=Y1*^Bn3!F z&QGn6ii=oZdcVzm9I|r~1W$NKKSA+Z;KfTKzhiVe>1^OC&(sn2bP5?``DcN|qHYLt)4WsNv|O-qap*_eull(X&Tk9e&r+=)z5b(DU9=YM3WXl!OUiu*{EmJ>qlIS@r-^o=U8!Z9c z5EV_TQmYxdVKt#ii_?6XMv7o;*Ql9SX|Wr4ZLpJz%6@igys7Cp1Kw-mEHB$__xryE z&eOyXAE^DxK5Xs@cG-Cyok6V!2QF7%3H*Ysild|{rP>ne0>OPHQfrfq-j^&VzXiz` zPCRW_D2XAZ1^I^kn2tN@1td9b`yPiKvDiEl<)L1g-=Qyh7h0I+pz*Yfn3w!l_Y9Z2 z%yfM?38T4BGjX=)77zo3b*%^wE4yHk{XcF=De+rJ^-bqSi}idQeRh-asj)Y?g$m+h zOuASIXj5jZZ<%G-xOlI#0K?qEGBRHST-MEhpNJ{4&r}>EV>+MWGEqS z_4MUZLL>oc<|=1WPGLQZO|T=HwiJB|jzZlC$$I*v@w zLoHluGCX7H$rc#YspmTKer`pUjU{{}6CbE*s*7clakC1tr;0leGukSBHN<1)YFqR? zlK$(9ih?(#mK76S$UQNTBV~td7E3{wxAInZ%#-48|H!}U{JStLov31(s*-aQb3%DE z*%sy!i<@lYsDchiv*w%QWvGhI1YLGGzTPxRe-qSG#Aj1Rt~kCen%@SWiUN9gh60m{b;^I7Xb|sU^)lKt^p;TwiA5?lT%TG=z3t z>us#*mUdg%vQDH}XI&qE{j}5$=c%WC1#0D{WLZ6RD~-jvRQU54-P3@l5AGbAetmW3 z>00wH-hiw_HbqjC-+aL!5=H-t=qYGNrHqd57@`j(Zglw+_KUW$pLeMur3()FSKG`5 z$tTW+3{8kW7NBIlu+)l9q2mc-n>5lmZYMOai?1j=IDGyl#O607?!#OB?b9jRm-hEd zh4jQlNY^RQ&&LRE*xvTX(Ju{`yxo)De+D+C=#i{b?%+dMRC8UrHjES1WQVr>JZB$uin4@@DJrW4vH~h^ zdN2K+{TvMwuoa|LMGzl9m6mbh3?(4Ps5MVpIOA`7d*!&Hs)WWPFnfP!TAhI>U@g))Xm5?0{TtO~1 z7gU7&PYD$4*!xS?Fc$yYmbU1Q3Zh%X3+RmY@xUalZTepy6rGx9)S@A1xkwF~F1LY0 zue$=!^_7F-5mGg4$+-HD$xjB-Uy2%c&;&>IfgRtRAB(<6-f76A* zfZSRRDa}Gx?+`~>?Vee~jzS4sxw@)h&t!fT} z@OYv0m>RxeT``m3q_su0#%cqsonU86m!jLFjeOYp;xD!2xA?3+6Pn@KX9=;SVBI&4 z)}?Qdi`0+#lYg%cCyIfPaMWVd_Lqk)K2DR5po{%x%$hA9$8%~fxvl%>w&QyOKF;zS zo(y(@9Ftml3k=P+r07BrUeVS>Wd#&MbM;^t0lS>gp$`PYH=-E&b1xV&B82ZSqHhY5uYIN9B{|)Y$)-6Kng$Z zD}`ZQq7_ZTHHCAZls78}yi+-|xaZ&DMll71Tf$_SqmFgonSObNGaCEoUsZf=25Y-SsRz)Euq+}YF9x|&~jA224kNu4Ho=pXP1+k<(owo z*S8J(|3ZX&>}`d=eu{won4C6M4Qjd7&r&U<$xzDo7RTEUb`F!4kr{Gp@bveGgXCO( z^;#9!YK}?pCJ;e5RV^*?#A*?qfRuciY&+%fZ)bR;n5bz%5n-Pb!t}c0P1o*B!@-|k zk(I?oi`gGmzcIROTwdRVf(vsS9n>A`j2my#wi^Ra9t8idjiy$%JfVYFuB#i7PF|0* zES=Jj|8L1dR7oUu=poZipYq@5j{0YTki0w54w_PMQ?8G)%R(lZ-L*Q1E=llulwdZK z+zAB=PZH=EX_mz`^6gk7l-i|-Jr2sM9ImlJ%mq<3QSBH>d|U*rMq~YayD@L~-Vy+d zB-6x`J#jqWJN_K~;T1$xwIR z%&*D`RfP>8<~BQ(M0ko2(3;w^fCLc-k@^Bj0DfBU`AF9LJ?o>Il&%$o*`W-_Mcic+ z>PH+>LYW^7aLpS1od=2c0(j2#IV=m_RSwm+>*jFlrU`h8kPzXr#OLr$Q>1Y*@}`3% zB^2gaL6vRmVJDW$tkxJOMn+r?#vDY)01B*nPLVdqMF)JtACYjs?CXp?MwG=0N+&dx zeV^`jyjYJdEe7gjNfQCf*LQCBG@Y@kRBP8TTIN_k5Xf7}^9v_V2oY7T_sduMb$&8B zMx7Le=YKf_8W6g^Ft0Y9AKA?@s z$f8RiJpOK%I5-9a?U_tqu5kB*)NjYo1!-N~s=k3d5Ij~b+Uq5K9JeT?(wLm+fhO6L z)!Tea!uH~%;Nf5g{Ab<%h(%LEV&V{v`7}UB+RQ2}g)Ga9n3@r>54AI{M9X%e zUI_MJ7{E4iOl-wA%+x7iB?cC^#!4H#)@gllb6xnWGZG7G@6=5{QK%tTP!OB*wsYg# z6JjdcEy|fcvE8zENng<=Tf_F)ezCi9%*Co^s{6nr<_e45;8z8ByZxt?Y0@=I%~Lk9 z?GVN7-%&-s-b>}8qy4f@8fqs?WfGS%b4GHuRc@nTSS3bWHT`UaF|qc68?^Ug4alN$;{B#%lp)Bg;s^#2F2R` zs~Eo7#Afh0wG2lOKV`@XcL!HCYJ!%#Su4<^>| z;PRi`@3~!=+x^*9(6K>m=VVY`PHh&~0d0TuvE+{ekO)L^a_}7|_ALMu&z}LoywzkG!vL+oT4$jS}595qAJt;Rt$zPKZd!_Vs6ZE5O7I7vPyzy1F$+}ZFEVK{l zH~SN89dKuZEo~o&D?Nt3I|Ki*So$Dw+EsE~1|rGIh2g59Hc}vJH?aUYZb4TJw_Wmx zt*rw9c24yeOx)ktGi=OW_DMNCm1KJurA(&r5)xxq@;-}Pj@WH5oY*E#V2I^~hk`== z>6Gl7%P)_$Ij7$nPrA7A9P&Wu-+mI2suX*LFt+~ui@3sTT4GPu-^e*q=@US@|6b;_fsjY^v~e%L0iNXYN;9pXfQvVq(q)vF zm=s+bQ&^Gl5ySgZs<@yk9{mUJ8bmz%|& zM{7_2?_i?sT6_<;M~dN!%Rk7B7lYEG!byl5gXdA~m&y5gkeCX?J)$m3#h1|TZU6qf zc#Ra3!(=-P&044%DC`J7LN{W$nCmsAv1YAe2xkB1KbeFL-6CzC4O)`;mO&O$k9Y0t#s!0O~JRsVj5 z#yoSTIVqt9B8l=dw#2{Zm=mew5Je-|3Hs5sCy>{LK@h9s=w~fR-%(B==f}3vl*=Jj z&$Mv*uW#JH8aXdFhQ+n4JYuJ79yE@iZco*aaI!)-MH{q`lX7z;9~rzvSm*K99DHR~ z-_M75x`&^aeDD@!_o`*-TAbh|Lz7N&RkO1Vzq|qs2Y6yx6_0ya50P@|*4-7v+ zOK_TCY&79 z=@X)XvyT)arCBE?#s?{$g~wBVS$&KDmlo%ZHd7U(^ps>@p6?J#9dE22#~9C5n-$-o zqb}zE50Ii02`C!_*7CsqSB2IEk%_mD?J`McazlCVZmu+h#gRli(t@bG%Vc#F$S4nEqlyL8WG9mf{&uLDVcFiQ#rC z=XR+T+u>L`zu|zo4$e0vlcfQi#UNDrw~ z;@3F9hx=u``@F~CH#@Ms4k+@ZpMOiALsD#P`QXspj@nSNfS*+#h{CJR%KrrObox58 z^;OF9(`Czu6+y zP3-WWevD?}DFee5cPw#x+;L))KYm09mVz)8Mu*TfW=s~ToH3e-mX_AzY;Vr<6Sg`T z)tae<642-s$5eW)Qr6cuR5dq$Sh$W~0MK`N4Lm}jchO>%2O3-JG(dQNN^*Sxt5c47 zYR!8r(_y4f?<%j#&C)BXmx3@ndt#7 z+Bwdu$ffxe@B-q)L@DlTV~+5M{hvj|+cXX2NV7m2HMrgfEK-1*{#vGewq6-a(O1_j z9#`%wC9#*;D&kObx1j~ zpMi;!6*V%fXOivIbK;d;Q^NMsPP>}8!g=U8NZ8y9Lnmz?|I_?LLB?gohkFr0ORDtO zz_skyD2vH`=lFHZRh=4NtsuF6NtDRll#EAnd~vBAL0(>wn*`IG`2B+`hvh zU6pQh=#OOMQvy?7eZS4)q4rZ1sX-brJ+Dfa~NIwW$Gw%mOw zonh$y3CBDj`M?0>EZjNFCM9vVM#n2P4j9BfmtHsUSn-+0NMqxy(dIh)APK-R)A*|9 z5LX-{5~4zE^02nvwMVJ?ka z^S&#g>e+<_Pf{<=#x9K25T)HAa)X}LVFs5Odu`MPBvt`{+Tj8AD~Ur~=?c+DQZR$z z#xNmaD9oJ6vb4gEPtfT16NBoMPh~d$@1;<486e^RKk)zFJ3iEU_~7MnnfY|)nOMiI z7E4^%)X7nFX#Iho7ctn*Z{XZ+9Up;06=x&@rxGXFUVE77m7DI(sTywDCxp&7;A!{&8n|z;3=BFL8nE-Rv^J zE2UE|a$(vzz_avR{TF(!lvH-%DD+h+;B2sR7k zI0jk)`~XX&alklF(`h^qw9GnNm7CF`cquj;VR@~FP-9K63K$J%!AP}RHUbBoD_|HX zJNF_5Nk0^7oi)NYhXAa{3Frr#Va%=~Wi`lz;q3jo$6cGl)3E-}472U@)Ym?Pbo9!i zkzFisBfRL3!b`DeFRMRGe?!eQDta#%XqDlZ&H_!2aZm4x8zaq|=kU+NQ;nAU- zb>{~EcG?~&ipf}uM9QhF$y=$jo0F^Uc)=~I$*;@QRL#*4*?eR~IiRJ;g|p}((b?UBIf;kaVY^ZfJq z&kBxqWwNCoTBxosjumI%XfW7a0;CHqaBg2!un>(NX_@h|d@oLnJG@tpP8U)TrPR=VJ|Nx^I(f^fO(iS-mc02> zeER_)!-b0@xM&j=93i&#bdVqL#u)DbVCXjE7rx;&Jj(5=2m^Ejip+fQ(4~k&8kQ+BXp&cX&Q3a6EL zI3R{maE$x@zuSs|_D?F)4!ZVlq~~*;D-ZaDl62>dm2SU?0SwS@V19qv6TQj=U+mXV z|7A4(GQCO@PTkgZpLftz*zp;%^O@J-y;p00*R)KmPGs{_rj#8}qsNFJHqzcf#H9nb{>o zukj8pKnmBTR#6_R0gjU=4al170sVg6t$A33J!MIsxPcVRVo*EjKL@W!7Vfk;+!8n` z4M^B6c}{HI2fhX)Z(!5%iswSse;NO5Oc#yOQLkS~hpwq1?!m8?dg#KEB~Jf)cEPfV zW#(K~aQ9o8pEw;k_hYekdtlwEy|X}Wf5u2U#}G$|vxtW|o$pn6TIm_LWG)~%bRU@7 zJeXnU$5&__ogdW>xsyWPEMG@5YKdXo#HK|x;F!P)6c&E4&Zd37?#N>T0{U@+QaL|bp2vgzyd?m>rJ7>ceIa9C~7 z_A2i8VOdcv3ESrSu(*uLS{QlI(Y8l|hbtZ?Q$BYcxXc5KSIYV?mz2>pEG1$F>zcndw`6I~3}Qk$EvXdnsS*yOPM#9PtOyEC!$mzDE|o zuJ`Tup_U1-FR*#xPojI+y~A0VU(|1{(i@`s!j&{keBbgU@#eA4EEKc7o_D3T@V~gA zjKXlO`{M=>@8m=1d|s!q+M;*OnvN_8^6tBe=SR<i~X?>Z~ ztJT>K4T;N+FD88zZ{Z?;OnL{>hd?K6+a6nr-sN_|U;uAIOUHg{v*XnK5I9K(jkJ~5vusH{*8w&d#lK5)NfoQLAiW$TSZfT*7?he_=LKJ=N=pxt7 zF2~QSdGuUc(rQ3qe26aF?KksBws9;oV3fS!j00geyVPU>z>{>Ju#-vM1IdAw@#@ju z-5kcX^F!O0vJ2eh{cQ>IUKv5t4iJhsVX=6l-RbEDD4^SZLzB(p zS)=d6$Zhcw27>ypV=f*QT*pC!ACBXuqUmpwI4kwbZdAGv0+S=g16Rpw8VfMDF1>J- zc6`u~UB0Aevmde)hB*p`JzYs>7l|CDjH77Ag3Yfwv(sDsjp1Cm0qiGF@%qP(eL@vwJxpVO%@*3l*M+onctl20jB|R z5oE-U>n=>O%6B)Bg6DUMDWYKISoZ0=r{EZ$fa|gk*UNbgXAhgP4TK4WUS2c}w5DNt zEoEEN8TjCVyZlK!Zoy^u+H+?91t(0L#DRPkFMvFT5NR&MZgFGnH}mriINWXsI6?uF z(T5j4XxtsLhrM!hKo2=J5T-F0OvB$&L#<^p{fC{+gwde?A^bWlL>ZOu^86Dgq)9#{ zq@<=eqC23?#}CD=3D3y5$$|&2dJ|S|HXVaPiNx;N+*tKivU}83XI0FtS2t85!EA8N z+vgN;6j%Li#&@Y=F?A}4zWv43*Yn>GT|(9$y5Bq}RbIO&aD9$xpM}gZD_)17MB0v@ zz88}WhS8u@A)>=cO<8MTR?u@G5Iyu%f_=XAL`s}9bn6luvTX90qM&+bXg*3T94zXG zxb{1l*A6peBcTu6SD_X5_->yzOtFyyGRjY)c{_+tzqzk_m8&vwgVL2q_{gKXuk{qu zZApf#IU9l%cA1zv63Yw)xD?6T4YI|?Lbe|0HhNV_*@tnzg}E)m9;w?ey>Pf0O_ihr zdyG(v65T(zM$0dpB&WNFpt_(xxybz9%}0yKBB=AEYX2txQVrhuWD;ig`EKs< zc(GfkB9QyjVY178dhTQP;D7xcX9{6{1QS{6>q^jDUI;Uzg3KC2PB{;SGy^{y5A1aR z4<3ogt91 zCYFW8nFOJ5>~@DQ5SI44E3)hS9}|5?{<0vqseYa(rxR|nXPV7>;T?WJ|4wr2<>4#8 zFPe@v4^&frHHK{O!9IY07b_f%7c2I8s;BW!@sfLXQ*_>GykhganL?&>2H%m58l+m1 zfJJscCyN1rs-B5zT}_5qp3QA?;r}_q!geJ-FDAuy^RjZmBR&+ETrE_c4e$9m+Ue2p zjAlV1Z&mh|!vIeNscj?OhOzU#XRT6+Bf7?6cI#9z(3dw3>0i{MdZ-S*&cK2ecI8EG zSi*r{>ENAAC=sLs@E@g?_|9DO$*ZP6GK!m<4WT5|Nq?^CcO_Ien$8znm~SrUz!kx~ z)Ic5>#hcPxZFD{l;5kU^?q9B7_^XD6G2IniJbGgO_;)$P^8xH(+hX@3oYQPR=ms_` z-*_Y}&ThHUQF_Z`{qSCiD9D(FC}HlOwA?>0xByv4>IM+G4Y~Y1eG;D(7*IVWZ&!-a z%`Q8TL}Jx(2+T1vKWJ1n$2L8*R`3q9`AHxLu}%R81>v48pEo?Z7=4lZ3#yr8pLoq7 z(Vt{L4+?n^buN?IR8QlDc(T{Ep1f$O?I<+=er|< z+oQ7`=5zr^G9@Nr(#q@c zv*CC9c}9*{SJ2iZ3upsIy|R7`bALj zbrw8sr3g7sxaq{>-H$m)!tip2E#&;BP;^?C5+iWSHAVxxY{49)Nt7e`EO@i}McTxi zR04m~pEZRTIaak1gqQ^^^&@_s{K@vaY)v%QL-qcQ{ZqnMiBQ{*qBAFhzE?b@qYY)l z^IsL&&tLz;EoPmh4v$1&9}^T^vq6xE_6{`C57*jw^~!9qV7Csk4`46z2ue3cP*Zc$ z(H}rG`{`-@=n&bSr(UlY0(To2zqp0*4~z+239%>awRE|+5jy8^Zyzy#sgqKB2Ix3f z3w988je_&Mcgc{;G~;N-gNgDw`xkLFxyC_G>s}hKIBna96!49mzcl^KFZN~{6i@BB z6!KUA^A!Hly&gYz>`%xS<=fjk4v<&5gzbbg5ySze#@yH~cc5F*_B4a)8iPzHVCLr1 zZ^%sP9NsCt3}>^u^><+7CT|Vk!wi2bsxTY0jWQ)*6*srMa!oSLKi90gOjq!W^2|cbt*Pe<6}vwP9}_2W0x&Dr80sGB9vT4CcL1)sF!z1!yJG zAp!_8h;zC)50APv>)ty_7%rLg7xzXuU!70Ic&SBNYEk2n`1Nb!-PhL|+cNPf>*I>m zyGwT>DJb;3pP~K*DuoehPIl=+V2!Bh!0;08Jfa)DH15$hP-L|L9cr4Z>Q8Ni$!os) z@|Vi*d+W_n;Q%g|zEZ=7`R-)N(D88>N2S7)uW#7V0#tRsLc?Q*Hcv9HmhZf`GD4>+ z!oRyCBq3PK0*Np6xHi;uMyML+m^61qm`Yq@ID#DK6g{iB> zOmpmW)#8T&jieJ<+`aewEjmeFGtea@$k0ShtDB@P zEQFA55^-i}>tTk7L&ki)>7?=ig|vI>R_!rTFz7GU3lxsrbkE1q+_iA>p=oz{Q(y55#-f&wbn7DmLqe;CO&f%#ux zX~N?@fIj*taY{;7*50qYG;CZ~v#4Ive?r)U`2#7DeNcQnX29utKNbOi^GccsM_E{N zZPtd89l}H2p7AyiilRHl)|li%8HcsB(0TE~oDv5M>6=x#+AK8Ik~~XYjGWPO%7i>Z zA# ze-Uhu4lD=U7FC!G`Uo2j^=cWq#9iFR$Jqtxb&)rbdXH;FK;$@2LD<~Or5V^wvjuIX z891|bEMELwg78H_-|wg2M0P%sc;YsGbCuwq-*XAJ$qbVruRMJT7$xKKR1EcHXT}#^ z#fr=lHWujb4o;VIJ2gv(3NLr{;^tk+!GOlE;oDRtQ68i6lW*U=u5;QZC}#*9NHlP^ zp7G={gv-Jo)g}U#C<+||S3jkj-}uFO&9($F2L%N|RN6h+J^Is^S?J@4Gn2cIBZ=+e z;~#U*3EQWv=(Vs{PlyZjB}4i4@`&Q@h~5XDo?A-x$D)|Ly3jy4`%O$L0}<7tdRyJl zz>^)Uf1BvyqWt9I?)r883cO9>@afR)#pphjXsG?hTpQu3QO?)Bs}ipSo$aE=y3e5d z#l~HHDqTL7F<%Lb9l66#a#TC{VGn{Vf)yX>ji zTEVW=%Pn9W$!&@eAJK_(Mqsq2d7&41#a>4u{P3l2%b+=k{I^cm0kkt32&BD>AE=78 z`F*Ls^Kp5>9_B%!7`(5kqYyrFi+hXofq`}@EZbo}scW}!P$Qh~tTp3%*=HvIz+LL; zt#;@}O3giJ*Ivg^E>VL{85&{AEH{u=uw&2qT*S*`;vJ&~M9tsB<2dK1gT6ow0u=sj zbMfH{^%*UAA=RGcx`c$O-ooa+?VJ+7u5#x)M(OrAOv_3~P$3C*AE-+63}+AH>BK8v zyJgt!Z@KPkfaT&pv>x)+3}TduRYhgOC#E9DS?NFr4I7czA_W<-)z)|@sAY-yJ|F!h zy(zuYR7J95`Vd2-NYBfT1KIpEDo{e`@KtcpQB_DLWxo>* z`cCceIwvT)3)zKms?{LE3x|e?{QsZFuFNAJ3Mnih`3pGfurOFCWN~AE-=tcyPT{sa z(S4TnwJ*eaT|}2ET=nrqd_YdYlnW2Fs!%f#ctTwJJqoDQ!$-VxpXylC>r4IxfW}_O zT;T_7RJaze#T$N@_t28Zb@;rw+qLA*!U=O1#RgdPSH4fw((ro1U7QrhKwp?D#CD9x zmZjbLMNw}%PDj#Hr_oLE701g$tthqWyWMSw6DmEAu^F`i^^kmg`nvviihZnCqvFE~ zYs9BQC%7W;?9E0Y!BJ?hNwlY*?-O~|U2(S=?{7)9$)xx9LTGQ%a(XI>v;r6sRRPahD6I>V_=g?rk$2V^f7g^LhW9*fmEIYoQJRN0<58UYr*EX%dY-J<|;j_ZaJ7)%^^B}5UC|A(%xjA|?D z+DveF2~w=MTWN6D;#w#kw76SwcPSFwy|@&L7pFjwqQzYc6!*#d&6-)?8u@#FM9#T) zpS|y6)M223(Q;2z#dw~h{M;(@wia>Q^x#r5dO|IKvmWs~dpeZJjDA_( z~i zGmlCf_v_0a&|B~1iV&ZO^dA*F&Pn_C6J|p0fSo<%C*`3C2_;_PdUcgw8gBG1PlC&! zE8nhCBmvdHRg{G70(chI+-F+YW%Y&goz=p1!1l>+wi^Ca?Ib11F-oPpeT*5IB&9BF zz|pl(6fk5>2Pc%O~c%ghz&J=6#Q(T#KAOLiUtB9& z`y0v>JssLqQL(E^j}<~oS(}ubT_i;#C9T+ghz5+Ta91B{yysF4`Xy*y+Ub3}_73lH zY6&Uew{cM-mI6Sb?1`5#h`qay5;bnt)tFsvvs(v9SW!J zgCGiS?b~3SUNCEt$zrzKP+vGaJfI^|Ud?sLSjg+xmPjIu{!|j(lWL=0vMA$2`ziS6 zyz|knxTzc)9^pm;B82Gg8>~DF8NdB&2rxm{4=oXpmWw(f@mo{L0eu*VjyhF^@FqY3Oeq@wAanqx`oW+{;3;2qAY#^CC!3$u{B;HN7^zu zVeL^BQWR1f0_*H%&Gw@n*>vPDK!RxPhA&DeOKmj1d=|q3%SN z`vlEU_TdTq8^0H>2Z#t0upcvFLXl{SsT@?!!K+CH=5ke20x6+8(NL?C_-Pv5zAmi_ zrD`d&Ss;#$&K2n3u%{oSGuq{rQekH!v>+fEZk#$Zk~YLoC-LV8f{y+rq6AA#c?yUW z5UEKX!*4V8VkR?g!>nD@>iC1Xv?Y(Xc9{qeIph1J3S7qM+6crSOdg>U3rHB)T8`w{VNNX*I4`Hz#62FUJ$tw< z2WD0+(ICXl7^pSCmThbrOScFx#&YTaRu*l+$;4}7>PoinYFwR(C|E7uTKK<2P{~*T zY-g8_ScXa5nWeShcr!RvSAE%Z`8h+!O!ky7ex;+x7P4HqajqUyK#W>>DAU9ISvWmd z`D*Ksr4I!0hYC`VF6lCeZWXbiqRurY)o@ZiE9WtYKF(MDuE&GW3}Hp_v$78?Y9k^6 z#-|i;3l0IpBXN2L;-#f$W#`&qha9JI{eSZ@KHFHNMQ2u4iV_1*8@4j546E}$I~7y{ zGH8EI{{#i|Awc$tE%x1uXW%p4jHmhF5+Iq_KQ(>aahds@oCOu?^GEr>`O)|kv|s#A zli+iN4dx2wD!*RPv~o}=k3c|Kex1^zS3ihv7Jx$p7+&mYVtL8eGZrsMeiqC&?F|Cu zidY@3BU2$hPubATRi3&@?F^G4W)o2Jnp^$YtFp*i9x(kTN zJ9@1uF37}$eEh!v+W*31UG;&K{}1r?o5i6evh)8&Z2vp3Tbe=K+wk8n{4b0*-B=ee z{C}dr|Md~R|KBf>{idzXS==XFoUEEy3?&P6WPI%(_th9AwyR=bGVks? zN;78!A=iB?1j)wD%3s^HH|CmLS>FraoI>=%^!}R9_)B5Nv~Ssj;QPyQ^}_wCqhaMd zRK7V8I|u-xw5LviC&xF1T@{5EKOcDGr#B=)5t>4s__*&qz_jvi4I9~n9pM5SZ!ODP?11GL1&M~0-` z8>q6JtLP{6F7UmqsRh63A`!0qoclQ;`n+Kf#MLd8rDMjt3{muJFRG{&aOyYBNDjKw zNj{kt(jTpPhe>*4?G}KGuDR_u|4ffCEY*~SC5h$6+;Vh)jpv;R(>dS%chj_!CYGL8 z@>iMculwJU1igl;5S*dYWU~w}u_S1p$5RbkL;l)j;f#!rs=)>TI!oeZ=ZbIpdB{*R zhLagyj(GrJW%MBLl$DIPGJC%V%^466G=pAt4xs-q^P*oXSpi1m>)Omj#-pW3;27+R z7XJb>ex2T64VTcuVHB&ZV6o#)r3KMi)e3`{%=-Yk4H>^#Q3nTZ%A;cI~YY$8a3R;cMZX_oaP`4to8!}9WJ*L*mAHMw@T{~Ii9LR>cwI<; zT$MKUFhNGRBbxPDtgU5KMM}(`j`R33q4xCMxxK$-n#iS6I>H9j*OdB??zw9}9FeQ` zMD+ArEqe-YVg;88J+eB)6Ffuj-xC(IMtsFc#6X~Q!%NVAfBqHdT{^j7fh>RcP;)8n zfiJ++Q=$1J^8KfmM#rZ^j09vrLOZ~`g$+E$#XXMR8@2RMNuQA_*n`R_Ylk>=f@zD7 ztj!Ua-%%fpWCCM$sq~E<6A9W*-VRf;FNz!jvfAZeGv64QQLy>E1>pFT^wlmCv#MsL z+Wz1vbMrrMB6zBDQO+qTn8mu;s;wCFs;~#XJGyXtu|^UgqtR)Uwe*coEJV*8KiUWm zX5>@4W}EqLyCBWyh-Nz=ZoUVkw5}3ibq}qQXV_xiWY#bEwebbjt;H9*pAwgc=VDqF z%C{Hxp(5se#e*`-@FAkWI`yIAvkr6ULTruYT6^X-vl7+IgYdMHlOt zSTEWP3dFz!*MuIr+5A39-BZk;Uom4?JiX_N8dDaCHbCDia;`@7%7zKREbrm@eJ}(X ztpE|aNc#BM(s&)kjmj0V#0-0@s{@kV9s}54WD`a*9Ufvk9yeC7Rf-LQDRIpPcykd- zg~{QHD8BsZfyY6EtR-rKflT%t7nBJ&AF0Z%zWUfFi@|!0G$1rbq1!1dn;(40bS(u1 z2Qt@ffG$^3k6hYUGJ=EWNx+=ndkCN2kz*#s=~^Nl^6l6|mx|2QlVItt&IP`tVT1$d zyYy3U<=>;OLy>T+38)hmJo2hvzhPJ#{Q*HtS<$B`Vk;93oXZDckc9L(toF1{6hNfl zr`vB#Z!eF+red9)Q=23ZEB;|WARjvHaa~M3eYsB3t+{ONK=rrCM8kEDJ1ha z%vl$=9tzUq4*vcaRhBS4=XQG8tWibGDp{fzY(Z3pq%Y-h#s5wWX|IS{LY56IceP%< z9GBK92^fwxn<2zyeaB$I82g5i&|7p6hq%QC0{9UkI{sEvrKX|Z{Gd~EdOQAee7xw~ zPQaQ*E|z4rR-w9WLds}MHm303>3jm!@1r_&L3tk@UU80;pnBE?`s>2 z@hu99?p8I+TJHQ|BNU$<-2s`tKo`RS37=J$gx{6oTOC~pEr~M-yztNj8|yfK+rdTx zD-Z7FWUSbyA%UBGwTA)2$}|@3hy^nkIHIo+sN0|TMYF3RWV2qyY6M}n|0#wLO6vw2 z-K!XV7=@EAQWW9c;Z;)=3||)BjlHSsVGk}}f)-?&msh_lb7}U>!U@u_MfR~xFlZ-} zMVSRA@I?L!A=V_uEKt+4n)*%h`$Bg%UEZuJ;A%up=Ua$$zO%gY-*W4iE$ zQ3iI9Ts+(+i|n?wuho^-1Z@1A5X~`?y{}B0gX$btcA|q_AdZYT2>_2{?0y`z13Jfj z5V`J@3DgHBB)?`U%c%9J!tDA$)(^#ztVEK>gaA~i^sM-YKjd?EYJwfDyvUnGVDPVC z9Zuxp+4qJ}a*6D41v!;DFj35Py&!$@zSh;S%3e??cT+jPu3$hOrt=i?(1325)Mxm@ zY9i;2!IZ<B&R zae8?|IYyNKe9(d0*zZ%ANWyFF1R$Xar}i`cRQt?XCP`Tw!b6-ft7Sfu4_}$P&urLd zrH_r+s;uCu^89FmbQX%Jn7un64p1T@`tdiCG#}uWO^jrzBUG)%5=Z4#wkQmK8;NfH zsup3e;5`%j?q@@%Kf4PUJ`~Wdl0z3|k0gqBg1^|<;D*Qrj-OvVgxT3020s*$k9{l` zMP2_mUa!6OGCno+4TH4moG2|BW3o|FtxBHDU^66!+-7`t1FDl@Cc>&&Vjm(c_Vq z<5;?{s*x#Z<;B3}0}6sP${*27zDwKQfC|f6;!r;>O4w?>i6Qv85(0Lcf1kD~{nf&W z7%@n7?3iR!X6%iKju2w@gn2nr-sOdvte-m5Ja1L%ECVs+574YAN0306()WtElOukN zf(taarjM~ob0Eh(J?ESYGX`Reasw3z|dv%$-|vCH@@FNNFfi3rN%SlVA7WGLVufTP=SDq0m=Ld(Q=)Vl!G!cLkQ7H7P{%)eiX>F?Ec- zZHQ4%FsVjS3E$j=FXbQ`UMBuxJ~pDEQN0#cuv`m^n;@8kv#^e?w?QIyjLsuRhk6#w zCdH4r>?fit4IRGm5{q`ap3KPOhk) zu7#!tZ^(_=g8JjwD6a-WF@TiC*B=o@yFx-4Yul9Q3RrRa3ebCW_IeoQG7{~t_}5>! zdFEy|DfwQ$xJ#Q1^_j&*R88F%x$WBtpbmcnj3^uP=+#D&H91)^1}|hXVCXQCy>n9{ z8eLg)$j#wi0Wc*e^B(!84Mz=dq?#o42XH%Tf1O1|dvH0l0oUPx2#N9d> z`o!JyH}EcMjgVkGGhfYbRdd%UPSOrr3r?44>V~t3YU;r zU5s0f>d);%B8PN7_hb@ot!Wn4|2(CIBzZCMmBtoEU!Mrv&hNj*@EZk7%YoG#`C<`$ z_i~Of5Gk!cVT}z9q#rn~Y-;T?{uEs55OkYYg4xQl;h8Zmh;>CfuTi!P(>}0#>e-#- zRkz$}3PZqBPXmJG>_Fmflc68S$#lzQjx72Q!gYD=R6Q(DFDnTq4spiW!7WGHm`8EC zbEOzT&eJX9ywlcx?$zd**M|}n?l`n#!)z2HRFs5#2sUoK=NnITg^C2i+VDZ;Hyx~`=Y)@g;{dq{vVZz~+h6p59)ujK9hbfrZS{r79q-V=+p)AhUGKPE z`0Xm2ZX}x(5dM{C7n+uzH4{sLsMTzXSH+|aJv_wVeS7KPj(@9y8Dvv5Gpo%DoRyQN zz!v%%pYZY&R#LkYp-&p5xtL3C=a-&9HD!09Fa14vTos`RwnxWD>^e1D39k z=8{;(L{wawwBkvKQT%>MQ*L|YU!Ga08Z~B-Nl2twIwEe4BNh7&AJcQaC)C`Jgkh9Q1$&hhyLFzJ68NQ4Wg0Mj5ry!PJ^s$_94Wa!^w#FGD45<71UBu zahOIXqrOa(7@=FmOHBD$yZzr3ylX_U&_P}U_oOe007^Y?$5jH-%D<>;CF;}TR*H!U zyzhg){-|oDVOQVst2Oy%L3o7GS}~59G!a5kaYW3SxLD+>iD5K{sg)3t*^w|FSX9aMHt4?i+47^^5*c`eU& z?hZ5(9ijuqSrQWN4`tsyE$oC3vNyRT1nH{nZ*Uv*gWm0JRwyAyPFHzTwaV`DDE{0V zhA|8eiEuu!IQ4#Qa(6UoiHWp7*>OEtnST?m)hY%2N_DTLUGIK*B3&(jJ(~fntz;tq-vvdI>Y_J=0fv1B(yr-g(x!=QDQJ|Icxrq&Y z)#hRPz%{csAg6_V!l$yh|Mfa|0ary^by_(LkvZw<^B84V|3B-ceUV;`C;OtY{)62* zXC7beIe!1uSRf_wJ8{cn7CVhhz0rSd+HK=A5dAg5#tTSoDaKJ*s^Quc*2)VHVUu^8 z=o{qeIe6D4EQg$Eop@WsFcnMx7{MCnG=8Iu0wLM{x6@oCx@HxO-AqpC#~W>0^+J+4 z3y%M4mdRI-soZX`v@dw$Lv`*rshV7khB|Dqi<<_JfZ9YF?7S37Q3hf%=wiC>>*ho3 zJi~MI`f4O;Fdc1>9r(2+PkK%;cm}6}@g>is5h%X`CDMQiDO9V`crF5;x_~tjt!VKF^nEJ}zO`OSR&-lQ0 z6$eNrSp@0i7x9*d^ed+}iY44wr~3{Glvywf^+}MvLW}kaG0;WKwj$~WdJ>&vCa#bI zEjr{Gey33p3J;2_q)%q(S}7|ZR2m{jicL>64?J3kFerV}Q5gg#=o3$s0~dX?dRa$i z>eRsWjH3xWgR3yCK-QCP#)bD25s9Cif8i|JT-k;L6WT>t<#I)|AS%DKc&gJZmt=^) zuE)(Y92)~Rpdu=1c}2XKiu|!EXW#w-v-96Wk#Y9#MRmx6AbZ3p9JL$6@klP6vSUk0 z6Be1r?6u*Rzq%){ywy%?-W50GUV_2uwm}e1c)P?RQvR|9kwf6;dFgalz7BJk-);`P zuiLQgl;nnBeE}w!!3T-Ydd}?JJ5|gHTob+8X4#cWl$2J5ch-y&Fm(rlgJ?5at@l$S z*4cuTiaNFRvzPGKJAz;29gr_S4W@s7jr(0V@dXDb6;*!2v7f70UJY2_vVPLl#)xYIY#)`MEtl)H*tc{V zr^w?{%>lVrC2_400)T1n)aff8RTS=sX%XwTfyq_SV8Ou`ghJvtMw`lll90Xq4-;5? z+y+fw14uhg63N+l6&Wk{ZdR>Lb4K|Si4PNHP-?&a z;+Q|^sn-P|WQbNyXqD#pbW1o)kj3Aazqj_(ZILVKQ`5DSL7}`cw!GWXcx7}b3ex=` z?n?S5BQt9QZG}**P*%s5D}GcfwD}&r?;+B56XU5QhNajbG&xp3_uoX%+&@QNlEi>Q z>CYd{Tz^W}f)<-uSdof~c0RE&*Gz_rkK?H>S!)-EKz=4vrQF?@sOjY1mGQ+eA_x;x z>!Jf#&5cTl-%69PXN#B=j|tX%=qHz+?`BKlNUc-|CaM7KI$&uTG}tZ?+CsMbi-^q( z%pDU;&2&1%MPyxy-_1g|dSW~YONlH--HGTzX0j@aeoEV7>i~nKtIbb6pHB(_IIeH- zc#!GJTz-&#!)Uc`wpBpGgJ=;VA^@d`nW86|Sc8!8XUl{j9)~AFVce!Coyb<Jl1NO} zKP191ivW)l1v7qjK}G}>UjpRJ+>n>#)durv(IesmsC70Xe4b88?eMjCEcQbnb_HP@ zc$}z$`$nSsSf-{*)d(8}N^z1c(x${vmg(>aF{ubai5&_l#I+8AiGjpYVr8AJ8gYT_=vbGfI4Ovdq-ThrsT-U;eau5$G z!ryiW1sRNpMX-167%~j0@|$UbD3h-NW&{w5=^T(UttPi%K`(J)NK98%{I-u$TB|Ky zZZG013RBQ*^Y$PRZ&oRB)sF#yv*;cY9QC#O+n`u6H7~aeUXC<6j)1IW9KLHMM$o)A zqxhTS5fJxeG@s|B80I7`nCnFo{lxJExlortsoMNV0og!X&XBG(CN!$z%8v^fOfIa~ z8$Qysxp7ml?zCTv*#oc6_$BirsUh3#KN`9&MYf+-NX4r*&R0PpYLy!_2;j4DEK7A%D^zYh?1G2;_0wwcHk%_2kTZR) zpD_6}eB2dH51t#h{Wjq^Pktj7BcWM0k_2BN_Hs|Y-X27~PIa}Ft}aMZgaNWaDb|F$ zRG%AmwUdd$$a2qG*oX4wvcz(-5KkN39?ZhFC9~GZhDHe!#sNJjp!TbW;FKiWn4rrS z)m8s+n=xdT?-h&lLqa0C(&5wXCcA!|jmq8L-tJGIQtKo(kni_W^0|tWeo=N)ueSea za$8q6%ltkt95z`WDj}St#R?8%N-AGs3pIWv+f_hgOsArG%gwwq;*K&zW1vhiO3iW{x96-_Ek|W(Er*^r>#Y9pC2u zclE=tzi`BqV|j>{)FyLdMQkUB>B7`o-t$rAj4U@=%_e^qX!U+;0lp%brzyHW9M$@3dMU}-wKe_Ls@U~X&&Esg}q{7UiXwb?K zNaJ{BPd%NiZCi60(cuL6=9v$|Itze}oVUMtOB4}kkwR$hn6nW86Ug9ZO*lIOKTO>0 zYHfIUh(_uiWANZI+&4UIVh_eMEU4`x&=Rgr(Rhl?Z>jo@jC=SUT4+B1BdW>59EwUn zmY40404@M51J)#0hWZm**we9eV1~OsEzaJEifBaZBYgXVSb1CBENhozrhpljmSbNs{0 zm8JZ>K7r~O-}OC-kUSuGIABX+vqs?|sDd=j>I0=L1;UJ&1?%*;NAY6}p|M8WAxoLw zvKYQHSS5_u0wFTsNMg2QyZ|$dBPXck*TF7!l!t&4L!4)+^zpeOH z9h5MkJm(^}Oz*}s_Jt53=7-tbAYl7g@)*`}z+;c|q(xTlcNjUz#?)J!m`e6;r1$49 z@w|IYkgvU=s7*U4Sy4#`M7DW__yT!eBKyTkRhPt^LqVB8Uz8anQ6wlu++W_r-R}g) zOyg;2l-Q&}llRr}=C9ASXZ;NRc;0FAC*N=K1%Q_j+KU@Nr}4lsGNIVq z^&7|!oB`OP^ejD*4Z9>8e@(F0l29?u5Ufnp{B&)f(oaP`OC z^l~79GQEDD`Dbr5qS70b&#d9G5x<`DXHZPiZ-`|^hCUl9omm1l@fw4r(v^C*xqv0` z)11w4$a7eoMLv2P{L1*N@%y_h4od1be=r&u@;+CVz&YZ8ZOWW!`EWd#T}`?AqJDh* zC-#=Cm=^r$9>mS>9v!0mq7ePD#F*?SBeL}s~- zKiPqE?XMfhKWrmJ_sl+U(=W3#jBMhY6<||Y2!bFRaLt}wSWxnjVf<5DNGO>C%7HBh zt7(+oDfRWuS->aWktr{c-*#BMCX+PF_+k9h2eS#jw9HcXe=CrYM~tQ9uwkN`r-?H~eSqH3{@-w95Iq>Y zkB1YAXEl~Nx43Nl`ts;?7AVh4NkfD{-$@5G>_$Hr0J*12F-U{3?Hz0U6ZeIu8pvS* z;2J>4R*)46e`#2rB*bm?wHx*JtJ5T^f7=rtn$RGes+wCw!I-V>aHxEj_zyqAzaGX4L-p1sq2T?#Aj}oEdH7l4{p3sUCgU zeXG&ks8mfaxs&-^(l>I`n+QM8-Gr=BKCUl6boZ}51`_oD9#R(*SIO&wSDhe3L`57t zGk?2d|AcLcUo3EYY(mmOH!6U+=|`u(PjlPbt6t_w2%LyV2{m~7LjVK3q|XJ}2!^Iz z4VPUZNJN!x9||u_XroeO;%p;+{CRTWM2hIb8n-_GgdjBg;b@I)rcmljj&zFLtix-? zaOak5>?9&30Ev`4B=~~m0+;9aaZAs85LWm1HJgH_)(BKwDjGC|dNK#h44o~oT+@<_ zwf`I2EOUtesekP;oZWZ%Nd=5&C_#a!A7rr)0bnm&zLYuVIGx@601L&`cQ*vnCpchr zu}dU1e2K{0|BuZHT-R%w(|6r@OBR~hN%z!s=708^`e_XJnHv;TZ!9jreR8+f1sfwn z+@=IVOi8E^j5Zo1r3Ho0=@M5LN&QT8MWT7YNdzuEiIZt;;tkgWT7hdLlsP=kLom@e zmu91Q3A|n~2*QMGZ93Fz`};O7)uH`y4Dd=E%vgao6%T@;qtnV(fg%3sUX1z}bg~@`3NGQ`A2}`@iCEFrkR^0de z6J!u*er|{|X@g*CxKpTyyvhWKGurV7PNK!(r~KYHR|v*M9m&p39MsEy=*Nk(ikqy- zCAOC37j@SA=%4F@Z5`x(%o3_Z9@>$gQHEfOMOW_+qd{mGq#8Py{#9-N+sv7Jtfa9sI zHNx^biXbhhzkR{Rykf2k0*Pzup$KG@M;L-S=m05BZw9GYjh(1m5b+VCxL&$V1prnE zNj&baK$I?`KYHZi0ngEUUOO>E)`#B$qImA?u%o707+}`M5RmkQ7Zo#Pp6Y6@{NFdH zb)Je~C}iP-ePN_rX$)AjXN zx>1HGG@N!^e2K&@>SweIwL)scZ&=yM@eAf(H$GBBz@UPr>44WcraJ#Fjhp@bc~z_s zx8^@$hI&CZF*uUv)64_E1Nm$Vqvk?jmP*c3^~dW z7c8BS)g3$^amiDIN9!z@Lw96JU-R=e4{!@h{A_ioP+^k~ci_HqI7xERhLWXpbu)Jr z1_1Sfd*xf(H$2}8-M=PU9(0Lg8vt*|c@JYSNEGj1A;KfNBf**QHZAtIV%ZH+I7_xD9_-}!{w7XZtKS1^m^ zmCz@B%;N+>I1wg`pIb};SC9TXnk3TnSLSMc?fsxY8%&EoZ?Q|X2_ee+@Z75%p9Hv5 zsog@Iv?BWYbwJIu{Yx_YuYwjeCvE|YJG zz<|buN7?lji(JE@CS>Y^mW6H1{N5gyquAvMDJ%<9Bo9kBl}5GeCm@JE-0yPeeKmha z=34jT?k#UL_j{CZJUCbyNfj4HIAXdK{T1^d5}*LWYVOm>k}N0dRJB{^^0^FT zWcf9WL9C$DXNk&sKQ6TgaumPdv{*_reO)8Px}l#Lfh(n*1AxyU#6I+am?M1OI~s*D z(#nhCp9P?jXDmajk>iOBzlHUy!?=r_-O;O#s%W14rh`Pv+yV;wSB7%Wr<*;~TfR#_ z!JVm4G(l+F;?Jm0&Rb?2{K<1QO4ox|c0pe%3KKQKBh$D-)a~nE{x*RS6~xb=TC@+Mz0#`(O>kcJ$lEJ&VmhM;tcmWerGwxyh@JLC`mL-LTc zg>A(3M2kt_4ToA_9uJCA`jrgH1NY!LwDB^ngj}yqHc%}7vixl2D6n*lx;NfjBCH_R zo(94`jP4@Bk3U}VEL~12Tp-s!0&-oHO;NJ9mw7!MEk82(mYTaK!Ql57$*YLKFd~WN zXMF1=)2#Apn_o_#e!wf|lLZ>dI}V%rdS8BpHUUYWk42nAfYO3li_K?gKywQBAwd5O zE%UdH{8|@nE`~FRraDM(i8G<;{KF%UI zSpaiMM*v}zYP#Pf4sD_pgE{xDBE-Tc!n68$=F|Gs9t+cmbPM;0Zs30sXunRZ0h`oRLTtYDK(%?%1&qz{Xh6gQQ zxK;W6rX9>MkOJ_lOLEpBUElOaxGH@S#c2<8cq!W#ChompRiM~TN$S4;Yo{UKoS4Z`d~=3LYr>UzO(0LZvw`IZKF@XM)bRTo2Q>afKP?sWTo@P z`V#DObWr-qB-jv`?6matkoM%bxT7wz$z%-BPZXsU_9?r^b-TU1M}`HxbjRIDO&KG5 zPB&{5OYeQ&6CtlkE%n*@i{{C`1j({eM(hCZ+aX(Dq@=tUfY1WzlQ7B%|CAaav#-+Y zukot)R&`qX6hp&Z8=QyW;o|5jvgCVIJuC93`%lNC&(bsH=2RqwOVY=u85k%?@XAKy zM)peuUss!>X)J@~H=YxQ5$y=w#efTy-1mWS2R_crN}}gtAEafQU$4bw!%6z-v@u0J za9`H5`0YEs@87>`RL}iKB^qx~P6D=$1O0>RW@d~DM8lYCdPiI#?Apb~onbB!zBTaD zgUmu4hS#&Cf841OUtXL8`+5R%$A6#k$W==8`TF7UAA8{6gS&&=?~bcdP3zJ`b2M@T z+nA@+*tC?+ebiYMsrZtt;UcOePH*WtBD_J{2M2gctYI2gcJWr1m(gfr9G+u}6HU!2`NR?7kqJa&g z{r-0Qre&GAX7fkw+RF0F+T^v}Iu3vrc3xqgdTQd4=ereXu5pLs^V;X-@!0?Vniqiy zfn*vNaEQhq)=L~Ini^2CDAA$0$*hORYqF8?@mb-cCeOmHW}w@4-Fda}I_AP**2(m> zv{Fb^amVxTvy_0VxwYvvzX|6%3o&{>wi;3v;`bv8y|{0h$-lXC-iY9bOi|ceCAhW8 znFnNt2GgQg##AEby^mUGeVH+J*yl=dHcu{3G>rNcAHqv{d#o0yOZVAiA&UA-`D}dM zt`Q(7SbFkHqK2hZEi$t^p2I($;QR0%Hc16s;u%Er48BoM|1)GX#=Pw@Nf*s7M8p#Z$a5630W@ zdhHDKI`{AYdx1UV8y+w&b+(Cyy%$m7jEUP73=N9DHBEu+#7tn9u$M{E6c?mLYFUktoKrM?5mi#J)oE28Nu zpHX80@9kQUIHk20Dh_<%Hw(HI3#?!-P?O{p2pPk4ptS|*5$UnelWVD1HGD| zdqH~~UqjH6s0}I<%Jnb9fr0>kZ5lC)7JWdYcr;C&)q1r7>krHQuVOk&0|stKkH3&n zRT0z@@}9&q6z|m>Rh|6*xX*}8E1Prt)B;algkTZq=hA%2@WR`pdiAyD7N(kL4Tju+ zrupFhVp8k`d$t1YLTxu)xEZ*Cbp)03#?*GN<3DO};sc`V8-M(ZH`jYoGg^2#{=rIJ zTa7W<9P2XU(FDy}hN&-_p;ILW(M}IUlbb8dKEU z5?OoQ#=vo!FPma|JkMe8;2`N7(8&YKOI?2q;#aY0<9#CaG5#VBIjNm#^ZIgc);E&< za`S5GsBk7~e~uSdOm>#`bz-9DEcX%RYz4xrB99ueb%v8fh%TBN;6d}#Acbb1(s7g~ z3hr+fhHbamC9j)KO{)2qAlcBFyM)hb9MnNecwMcp6KGl=aCrIK>ypg{%=QpxadlB5 z%OS%4rhB^c*1t4)qa~uJ`-4G&*!g_`w542y$|dUjW5cDIxu}r zh4J*}nXpqD5X!CfZYn#_1m!V)rh}_NSY;UTY!YqkdmT zXG!0fQo0*_nZMW(DlZ`Eg=i*cq6|3-){2QJ>aJBcZ3-|U5E5uoIp!OpDA)A%JWp`- zVSXj@*ur_ok<|&%WNA?(BDtgHj29prT2d)ZF`=l%g2zI2-}uPfbD_0Mq!m(! zPwndU#R3=2bUqEyjU2r}qnvF}{Vs4N?m8bBdb@eSkKbS4E8aBH#GF<6_!$GI=m!S9 zEEao)>l7X1)>l&ePI(PR>Wq|A6d_8PeJssv?!6q745cs4R3rHY9jW5-&o7(uIb0ZF z4;LTQJt9n>H}~1Rk&XeAQ?`lmws&XEr9Fp;qFG8w*#D9;s1RXF zN#8&G&0i$jb`*=s>G-tUf6WkhPqBiD0ODQ6WK^UeFlGP5|*jEbuaJw4rZaq>9FU;r)T&ym?p zri-)4^tZRSUV0jtU7TwE4Dq1lRt@27;n!Z_TkOeuE{$kPe2$euMF8evMMwOZg6alXltcaCFZ9Sms?&Z1T8pKy;(_2-Cwfny5pMGN=m>RE-1Tm0Y2AVM=rlz7>IgAq9~b z1t&i5a5{Q&VlAdkr;K8ASF>Mp8&=n^#6+?x-0_&%+j>40;92}pF~L64`9u(4)7f$! zV2!mn6XY@ybCf7ZIzji^PnI!%C^~tMsl-TKGd8W3etjStu>?Nc+_$^=_c9bSY$

m=G6Jk{JFi#O#6`R;|(sIJpaEH2FQUz8m|-h}Gb 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

+PWOqNh!VN{N&o; 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

&0ouuJw2V2DI- zWBnNq&C-W4tC|o#zxt>)Bc*R*322MfU~oHg*r-UdrN^K7iq_gd69a9QpHC1=uvs5G zJI>ONWYYr7A#fsAHV2;I?I|Nri9sc>BuO$Jjd&0Qh@$AK@68xPo@dzK+Xn#D>$PVZlp{UlEEG5v{~-v35NI?S zf70o6f9H|?y)SV&M}x7e7Fy@Bu+ySIqh5co)9!qyCIsy)pmr4x#Ddgo zm(cBe4}I|A*Nz+q5hdmQ_z4O>05H@Vst^b}tq(cf&M%oMb+2kAOX3?pwr^s zkOPpt`X|y+`yI7=F5WeBIRZw&o``U?g1*c$1C|sJTiy2-Ywh1%NpWL-8v+3w4&pFa zYFDz6h3Dr}zws;G^wL*l69>*U2&E_kl9>TZb4Mz75}sl=SoZ?!*AWa-k;EmxGRz+4XE zxgaZ;SF`}ax;tyH7vKEw$C7VzR0`tMuBg~Oevg&1usIsN<|jHE^>+xNRuBv3MKXXp z46etZsa?r?)*9quCpO>r@I&;~JRX9&5kQ`ZaI}Q~n)m=BQ)u;qziW5tuM}0W(XQZG zf&h-=!Sw=Y*I$W$TFvgqx}E+zAAI=!I~^{-C@+)Mt9)Z^6!Id&T5sbodaeHNKdNoPA69yt$>%V62?vMY_SjO-eugXzR^zw@a#ljT_eem$Hv*1F#^x%+`{g*Jd?*Zzpo09gU2*Se><-g~Dk zR#4oyat*r3*#`|$aOA7>@#v}E9?+0dg-~TE&P9>{*6_g!8Ni3S=aMybuY^?Ww zO=QJt&iCr$xQ>IseS!pkNw03$`e;Av{O9{FK6JY~bHJ}fI7$JPXk=-D%|ZXq`>pox zXGIRW0{;+dtLgL-Jw{e>|1t)YG7v)EX^eSozu!kZi|6Q$$1NVEG}hPG;kh1^l)q0n z`E#`*UI}9jtg+yn!*e~jOC!5~^viWU(P%VY`|v{#{lL8VbG7jh#yG~~G14?ex6}E@ zD6D;O)y0i#7C6{aV6-J~z@Xo|eKeasJQadDo(GrG#}SSa0K!@%#y}Z^X0!3bzULv$ zvL$`C#}`)!DZ5`~M{EVhW?q1FJ8$HZ>5J1euT7YTK4Vai@r^?WCdOc*G&rLmo%U_^ zu=25r3w-r7wSiHU;KB+ns5C1u+vvQ)KbYQbQo(23Lp!L*YRRLYU9K&PTmzhAI%wZc zh+WZWLG@t?IqWnqlLY9>M?$s2UakMqdOG_mk_hB8im=I`)a5kV0$`j#W)@;1V7P<5 zuyY41NjX-xeh7gv3Pv#)x|)L_PZKmd-5;3@4_+5fCg&)3KpppS&xcT2!n36SVHCAy z^E>DNd_@Zgu&k`o>k^^0ikvG?3$zE(+hzyRtFq~=<2eD~)Bz(Nll(ZaDuF3x0A*+m z!rKWeVe_lFU(DxDO~tWd^lAzmd2Z2Z+c!+7{6%@3N7NmI)d#Tp3PMAR61|a3p_3^n zQ-hC3`wUj*a%l8-}xk+f$jraUBFSs8AeN-Ysa!y`fTs zZh-an`kmGoP)b*FK_#%DbnYKOuV{aXG=tx1zdahZUOSsjwnOfs?gWtLO2TUkPB;>i zVI~qVO28Y@ca{yQ)tp}x1hgWlHA*iX!7-03MVh18@4Pi0PF|sBX$KA~RaG9_HJ%fT z3I$MtR=<5aE%i26bHSL?r6};RM6Iu>F>e?BTa$Qw`Unpo~0vj@kn0M1$lK

S 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 literal 0 HcmV?d00001 diff --git a/img/markers_shadow.png b/img/markers_shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..33cf95504706aa9d06ad40dbcd2fa168cbd43d13 GIT binary patch literal 535 zcmV+y0_gpTP) z;YUMJ9LDj?%v_nt)m$@krAcNsnI+jwmXs_h*_0I1l(LjkN~I{3^dGP1#rMT==4>za zro+dw-OhQ=@BYr2==b~ohHFF&QHddL@L-x8!b2P}iLwT)VFmCcAyeYZw4@|J+LCcd zBgGt31dLmO_yhbHCxp)=Gm?{e$xA_shLS@O1<5l<$ejLQAa{^JW|?eJsqD5OfsQDHnvnUgXTZ^^E-W#7^^w0LeunzBK-x-1c9PO_|#7#1eR0~!9Y z!2%sQlb+>5&iSp&bH{QZdu(Ej>Qp4pD-WoO$C{C0VX~C9$pY8%D9?sRxtCkHBG`!> zQKcqTS$0*#48qYK2$PhMvhJ|+CwZ4|`H~NLBh;N-${9iS2vRqy5lY}XMaDhjcuj<1 z$1eo=l^^-!y9c?VB8ReVRHG<4=JM_SfPLu=HZZ$bpaDDV{*~&y5~4?lwrtX0i&kGy z3FCsZhVuqCs^fD6tCanezPTYpmy@)`5w1{)SqaQL#BNYNM~7iVjaQYI8jH5DE$aj= z3ytaO32~0mVIoYHv@X61ix)=*u*SGyqDG*Uq**+qVktt$jsrRkUQsMcbX>z|j`P_4F?%Q_@f8Trt_r4(hxNiEFbHd*`e3wA~&9LoB z|JTX7kq}paKe_vc2M*ug64EAp8fjKield;^5n(28CRtDv6+dL~Fp+@_%zJ24`YVVq zBpE?@#aJOC0|_EPCT%8Af=BS!Pl8hiNCud49YlR>}1Tb-#*dPo+ z)$qjd<2BSi`Tw*-+e7qSQIZB2F9|{pVj$PjAteZrRFvox2~1WdF&r3yIy5pE{RB@l zFz=xq`k=pIC2L3tDv2DDqf#RRd?YC%r9h(yK?V}y#2Ne;Gy~%>VVE>brD8req55dj z?`V{SpsL6rIix0C3`wz4Xz)=K5@jHwsV3J7Ob2FQ7TONa5@{P|X@8nNrj3)41?_i<^tV759Srm^CO?9y)MiF(vXB8C1-?G z4cXS3j7SqpABu$-r~P)!vew(g&Y!umz$z!D6f{YWcMIh87s;8WY?KYzKA%uM*i&Y{OPyGq6Fs zND?_l42fYWNsXzKmMY_qTXxY&%XNuCjBL%1X}m$FZ3eW=ptqRhe&8VRI&f&=b<3}T z1K5LI+Cvh8kVC&qEUWpL7FA!ySwbVa=-RE?Ip857O-z|6KBeO>gNjo2nB;NbByi?% z3MX(JI8xFMkh^EZkQ$^&o$0EiOsQg9XZcj)^09RVjFdDn{Yp#)^G&{$dE&gm1P+<# zo50(^?-~5Y|GnjX=g5kJ4kbN^VM$SQ){wHO>Pp)zora`@9f+DD%g0H|4aC%l=nOl; z3IpF~a_0zmANa#?!RzmMPm~i=bVOpJl${JAOZ3}STl1s{Vdu#uM5J6@UE$=qt=bne zOO#ic!0RXl373Hn8eaQT1d$*~&9M@*tCr6TzJNuubXrJ>+i}fo$8t_#>G&xTG05@7 zm>N@zTeV8eLY5dN|5xB+;BWZAYf;QQ5_3+{jxv(6ri46KLZ(HCq{JNcNr?!t7gbh< z6?4zvZ`V?Mn~s<_O!!hufsZON?^RMxV_hL7+p);1TG9)2)Y)X*oMdfrE&4wW1rZ^n zh!Hs)@aVXzcBLN0cav}WloVXV)W9Xni`qg;ST?c1svT!ZEt$4mGA1Exza}AW9T6Nc z{!;Q%!?!W0&M|Y;nRT@*ovGq`0U|^aa-b5jo*|^;FBv(Hq%Ilw&tHBqg51N%A+JVi zrkTVtliOuUoFL!~ObubVu+t#7r_Lgi=5S`W-GTINSA^sclX#_x7zR_~TdOmHw%VOG zMGmK4Io0k^6jY~%^!?vr?AuzkMzhjgZiQ8>@H*G=ssxgX6?CU+ywRihMBIh2`n_z%eLT1;Q&-3)SwdsU@p zOzw5n)gm%XGRpSW-lik(1F^doLuy10r(wDOt*~=EVe(*Z=-Fl+8U1cCHGf}TjQ{(| z$|>1rNs5Y1hb^X72z)JK?4eJd957LN%xWK + * @version 1.2.1 + */.extra-marker{background:url("../img/markers_default.png") no-repeat 0 0;width:35px;height:46px;position:absolute;left:0;top:0;display:block;text-align:center}.extra-marker-shadow{background:url("../img/markers_shadow.png") no-repeat 0 0;width:36px;height:16px}@media (min--moz-device-pixel-ratio:1.5),(-webkit-min-device-pixel-ratio:1.5),(min-device-pixel-ratio:1.5),(min-resolution:1.5dppx){.extra-marker{background-image:url("../img/markers_default@2x.png");background-size:540px 184px}.extra-marker-shadow{background-image:url("../img/markers_shadow@2x.png");background-size:35px 16px}}.extra-marker.extra-marker-svg{background:none}.extra-marker.extra-marker-svg .svg-inline--fa,.extra-marker.extra-marker-svg i{position:absolute;left:0;width:35px}.extra-marker .svg-inline--fa,.extra-marker i{color:#fff;margin-top:7px;display:inline-block;font-size:14px}.extra-marker .svg-inline--fa{margin-top:10px;background:none}.extra-marker .svg-inline--fa,.extra-marker i.fa,.extra-marker i.fab,.extra-marker i.fas,.extra-marker i.far,.extra-marker i.fal{margin-top:10px}.extra-marker .svg-inline--fa.fa-2x,.extra-marker i.fa.fa-2x,.extra-marker i.fab.fa-2x,.extra-marker i.fas.fa-2x,.extra-marker i.far.fa-2x,.extra-marker i.fal.fa-2x{font-size:16px;margin-top:9px}.extra-marker .svg-inline--fa.fa-3x,.extra-marker i.fa.fa-3x,.extra-marker i.fab.fa-3x,.extra-marker i.fas.fa-3x,.extra-marker i.far.fa-3x,.extra-marker i.fal.fa-3x{font-size:18px;margin-top:9px}.extra-marker .svg-inline--fa.fa-4x,.extra-marker i.fa.fa-4x,.extra-marker i.fab.fa-4x,.extra-marker i.fas.fa-4x,.extra-marker i.far.fa-4x,.extra-marker i.fal.fa-4x{font-size:20px;margin-top:8px}.extra-marker .svg-inline--fa.fa-5x,.extra-marker i.fa.fa-5x,.extra-marker i.fab.fa-5x,.extra-marker i.fas.fa-5x,.extra-marker i.far.fa-5x,.extra-marker i.fal.fa-5x{font-size:24px;margin-top:6px}.extra-marker .fa-number:before{content:attr(number)}.extra-marker i.glyphicon{margin-top:10px}.extra-marker i.icon{margin-right:0;opacity:1}.extra-marker-circle-red{background-position:0 0}.extra-marker-circle-orange-dark{background-position:-36px 0}.extra-marker-circle-orange{background-position:-72px 0}.extra-marker-circle-yellow{background-position:-108px 0}.extra-marker-circle-blue-dark{background-position:-144px 0}.extra-marker-circle-blue{background-position:-180px 0}.extra-marker-circle-cyan{background-position:-216px 0}.extra-marker-circle-purple{background-position:-252px 0}.extra-marker-circle-violet{background-position:-288px 0}.extra-marker-circle-pink{background-position:-324px 0}.extra-marker-circle-green-dark{background-position:-360px 0}.extra-marker-circle-green{background-position:-396px 0}.extra-marker-circle-green-light{background-position:-432px 0}.extra-marker-circle-black{background-position:-468px 0}.extra-marker-circle-white{background-position:-504px 0}.extra-marker-square-red{background-position:0 -46px}.extra-marker-square-orange-dark{background-position:-36px -46px}.extra-marker-square-orange{background-position:-72px -46px}.extra-marker-square-yellow{background-position:-108px -46px}.extra-marker-square-blue-dark{background-position:-144px -46px}.extra-marker-square-blue{background-position:-180px -46px}.extra-marker-square-cyan{background-position:-216px -46px}.extra-marker-square-purple{background-position:-252px -46px}.extra-marker-square-violet{background-position:-288px -46px}.extra-marker-square-pink{background-position:-324px -46px}.extra-marker-square-green-dark{background-position:-360px -46px}.extra-marker-square-green{background-position:-396px -46px}.extra-marker-square-green-light{background-position:-432px -46px}.extra-marker-square-black{background-position:-468px -46px}.extra-marker-square-white{background-position:-504px -46px}.extra-marker-star-red{background-position:0 -92px}.extra-marker-star-orange-dark{background-position:-36px -92px}.extra-marker-star-orange{background-position:-72px -92px}.extra-marker-star-yellow{background-position:-108px -92px}.extra-marker-star-blue-dark{background-position:-144px -92px}.extra-marker-star-blue{background-position:-180px -92px}.extra-marker-star-cyan{background-position:-216px -92px}.extra-marker-star-purple{background-position:-252px -92px}.extra-marker-star-violet{background-position:-288px -92px}.extra-marker-star-pink{background-position:-324px -92px}.extra-marker-star-green-dark{background-position:-360px -92px}.extra-marker-star-green{background-position:-396px -92px}.extra-marker-star-green-light{background-position:-432px -92px}.extra-marker-star-black{background-position:-468px -92px}.extra-marker-star-white{background-position:-504px -92px}.extra-marker-penta-red{background-position:0 -138px}.extra-marker-penta-orange-dark{background-position:-36px -138px}.extra-marker-penta-orange{background-position:-72px -138px}.extra-marker-penta-yellow{background-position:-108px -138px}.extra-marker-penta-blue-dark{background-position:-144px -138px}.extra-marker-penta-blue{background-position:-180px -138px}.extra-marker-penta-cyan{background-position:-216px -138px}.extra-marker-penta-purple{background-position:-252px -138px}.extra-marker-penta-violet{background-position:-288px -138px}.extra-marker-penta-pink{background-position:-324px -138px}.extra-marker-penta-green-dark{background-position:-360px -138px}.extra-marker-penta-green{background-position:-396px -138px}.extra-marker-penta-green-light{background-position:-432px -138px}.extra-marker-penta-black{background-position:-468px -138px}.extra-marker-penta-white{background-position:-504px -138px} \ No newline at end of file diff --git a/views/public/css/leaflet_awesome_number_markers.css b/views/public/css/leaflet_awesome_number_markers.css new file mode 100644 index 0000000..8f294a7 --- /dev/null +++ b/views/public/css/leaflet_awesome_number_markers.css @@ -0,0 +1,99 @@ +/* Marker setup */ +.awesome-number-marker { + background: url('images/markers-soft.png') no-repeat 0 0; + width: 35px; + height: 46px; + position:absolute; + left:0; + top:0; + display: block; + text-align: center; +} + +.awesome-number-marker i { + color: #333; + margin-top: 10px; + display: inline-block; + font-size: 14px; +} + +.awesome-number-marker .icon-white { + color: #fff; +} + +/* Colors */ +.awesome-number-marker-icon-red { + background-position: 0 0; +} + +.awesome-number-marker-icon-darkred { + background-position: -180px 0; +} + +.awesome-number-marker-icon-lightred { + background-position: -360px 0; +} + +.awesome-number-marker-icon-orange { + background-position: -36px 0; +} + +.awesome-number-marker-icon-beige { + background-position: -396px 0; +} + +.awesome-number-marker-icon-green { + background-position: -72px 0; +} + +.awesome-number-marker-icon-darkgreen { + background-position: -252px 0; +} + +.awesome-number-marker-icon-lightgreen { + background-position: -432px 0; +} + +.awesome-number-marker-icon-blue { + background-position: -108px 0; +} + +.awesome-number-marker-icon-darkblue { + background-position: -216px 0; +} + +.awesome-number-marker-icon-lightblue { + background-position: -468px 0; +} + +.awesome-number-marker-icon-purple { + background-position: -144px 0; +} + +.awesome-number-marker-icon-darkpurple { + background-position: -288px 0; +} + +.awesome-number-marker-icon-pink { + background-position: -504px 0; +} + +.awesome-number-marker-icon-cadetblue { + background-position: -324px 0; +} + +.awesome-number-marker-icon-white { + background-position: -574px 0; +} + +.awesome-number-marker-icon-gray { + background-position: -648px 0; +} + +.awesome-number-marker-icon-lightgray { + background-position: -612px 0; +} + +.awesome-number-marker-icon-black { + background-position: -682px 0; +} \ No newline at end of file diff --git a/views/public/javascripts/leaf-green.png b/views/public/javascripts/leaf-green.png new file mode 100644 index 0000000000000000000000000000000000000000..6c24f60f24b0b4b1ebf63e3504946e748f8a9dc8 GIT binary patch literal 2750 zcmV;v3PJUWP) z28^4)U?ptdJThTb7@w73{x0mj2j*eLAdO8L*Elq;8VhOWEf)1O4NqtwKSF*5k2MWX zypQpM=HUrfb8k}9@c0;P0`q6FcNA{NaRD1+qwSi8#z|d&zBCMu6B-Z}LPviF`CEL5 zZy;#Ht*k!+=8t0kBXI#j0yVa7)9|>L>jny?x;ICv`|^dSr46xI8ewNx8UB0Up$^53 zgX1=V`90`i0Zzf1p2o(9GT|28WUxe=15dA5Mz4X<$;=6!Vda{J!IErj-Y`%c0^_yL zTI+|>Lk9Y=ncbM8$g%hl(lAgYmE9Rq)txC#o=qE|4cmFZpV`dLKQ#=Le8|{{6qrER zKL-o3PN2rtpjamp-Hj@HGNrU5MQZ!=wGr;2$l26Aw=;s}uj>bjYU}$8kH!ix4)&jf zEUY}HF$#pUcnYN6Dq7u_OLM7G!>i@GP)Hj3i=3?N+@R-Rgq@-DKE~BfQ+pk>T@?FY zfkP1HZA>vS2jW%Poh1uf5*T^4JT3pd0%hkqE7yYmbj^%l^x-WuJo?4B-L6{_eb7o# zYhA+r+XwyRr@*Ex8gPneLGWAalUvxDAdB0RrS{!Cr?`&H*9=e2v$L+V^P``YJdttQ z0TnAou66cGQERUa<8XqDg-uQY<;jcNl4KETXq0Qnb2kDxH&6x{R@VDdo=BF$3l2_( zu{puT!XmqXC(}@l%zGzJ=Di&&)jio1x9>4pdCa+;0bO6(lJ(jnpB1hT<8XqD$(ytI z15a@)=jrPzYfqI~Z^p^WE3c$y~SdQp@IQat)~eGvhrqz1hpd!05q7p)eNB z4Ok3hchkk~DKrLSKXcYDS4w{jVUIcIa z%II>hlR?IhRo!V>For`A86hnC#9P45AOqE0uk1>b89cdrUp`(Iv?S=cGq1AS%3QZI z>^vFahC@I!5XR(-f)?;(xQ)(zJ6`Ugxw&t}a_(E-nd;8-X4v@_a)jX!R8?o%x{O`^ zVhB*otAdY^Id8?u-7g-;KgP*Y&b2Dv+zMsQRd!BU1Y|zI>)cm%}Blp#&Gx@Ql>zHOO|q2=Q>tmNn4`a_2Thz*GtFg zcWq^-y+)Cf+>8?Lh5X*eR$##*s~D0z8G*Atxw~IFUT%B-Xqm-7M|pdaubDAE#b&Gx zGaP=eO2WQ?_xD5tI55E)5 zC9Xk{nzHr;in)d1&9JjJ0Ze=KB)Q?)ql8yWbMbsQCrV|{(xwvb#MUq{dicZI;_oPJ zkN;6Oq&OQm4QMXa91k+=c}rU3Wh!4`H`3hgFZ1+XIO+4LPo8`Yb0X>nl0#r%^zcWq z$y#i3Hik>v;-s_{j82A?V>QFgRow}EoSY)#Zre|eOxW=S7%wOM88jGoVtHHK^Hm-3 zKbE(}>c&e@+Tvt*avAd~I^%w6)*gc+TiyVScSdU~SlhOD5Uy?8h;99GZQEAty>#L+Ub*s(96$nj%5QE^3HE=eeMNlK|pQcD9Rw<=gN3Fh?@ zSLl-M_qk--eL=GJ&QMu#rBizJ>G|Wx>HT*@9nILBo0Kw#HMz{OF{#v1OP~-a2><~O zi7j+UOrg`W9(u$n2e9k@AX$HBuxzJWgq60jz)M&&srJkKRNh}rW%ATf;Z!9Y3iaG*py<`klN##l>S61sP^ zjGQq*hK}!Rh4L~sXD7YFVZx-e3da|zP_ zQzVMLL?edrZoO=}bZO`JrN3{$SST-Jb9S;S?PD@3>{Y~hf*7Yn<-2b}45NwSW|8?W zNi@cr#LBn{0^;0J22Us_w)@7JGHhbsIzQily-;4p=FGCI?7efU?Y9xb&Foy*xVZ7a zbBdl&R$}q>+1Yji+ zQHno^`xTrX2ulYDHR5p8cz=Qrn4a@|&?uYS}+I^IaT)m;bKm( zl)#q>{DV^z;yx$teIxJ{+(%$6Cpesu+MwL{wA6}geuDSW`>3#nBdP;N5H=Ql37gG$ zS70Q8J=4k^6QPdRxt-@{uw(EY1peNzMn{+r)Y;-~`rs{m4f`3xcJ12b6CNJ!laP?$ zrkV=(^1*o!9D?bL|NH3ZXm^wus)^&);!hN!h5Hpc@WBEI9z`=f!hk6Jj8#xNg}s0R z^wcHH2Ypb7MX>1-Wtoriq%)+uZtUdDPTUBWE53}xt|Q`i!G zie*r`gmuItco-I4!mNnIcL;&1cUW$2t~oU|)d#A+j`}Ns8Tb9C>gKB7)`%52F1HPnLia(Hz-w_Vgz%by*kt1fP`rz$X<9qyxd<<@! zFypIPsB>jJTT}4^1TL5x9@cO+Y(*_zf^yR#tSxSUAV#OK-gqBRV4N;tW&}f!4T~;e zEs%x3unJ0-FkjT*4UE?*tP6g@4d|>>SU(7Efk~&Z{is7Ululun;$zIwDXay`@d{e$ z6gC#$;dv;X!gfNCrBhfRJcv3>)FrF~Qt%tTheemLwzvy|d{}h}>w^~|$VN+@M)@87 z!9kr)%ok7K7p#YmE@3v@55Wc~J;H!I2qx + * @version 1.2.1 + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e.leaflet=e.leaflet||{},e.leaflet["extra-markers"]={}))}(this,function(e){"use strict";var t=L.ExtraMarkers={};t.version=L.ExtraMarkers.version="1.2.1",t.Icon=L.ExtraMarkers.Icon=L.Icon.extend({options:{iconSize:[35,45],iconAnchor:[17,42],popupAnchor:[1,-32],shadowAnchor:[10,12],shadowSize:[36,16],className:"",prefix:"",extraClasses:"",shape:"circle",icon:"",innerHTML:"",markerColor:"red",svgBorderColor:"#fff",svgOpacity:1,iconColor:"#fff",iconRotate:0,number:"",svg:!1,name:""},initialize:function(e){e=L.Util.setOptions(this,e)},createIcon:function(){var e=document.createElement("div"),t=this.options;return t.icon&&(e.innerHTML=this._createInner()),t.innerHTML&&(e.innerHTML=t.innerHTML),t.bgPos&&(e.style.backgroundPosition=-t.bgPos.x+"px "+-t.bgPos.y+"px"),t.svg?this._setIconStyles(e,"svg"):this._setIconStyles(e,t.shape+"-"+t.markerColor),e},_getColorHex:function(e){return{red:"#a23337","orange-dark":"#d73e29",orange:"#ef9227",yellow:"#f5bb39","blue-dark":"#276273",cyan:"#32a9dd",purple:"#440444",violet:"#90278d",pink:"#c057a0",green:"#006838",white:"#e8e8e8",black:"#211c1d"}[e]||e},_createSvg:function(e,t){return{circle:'',square:'',star:'',penta:''}[e]},_createInner:function(){var e="",t="",o="",a="",r=this.options;return r.iconColor&&(e="color: "+r.iconColor+";"),0!==r.iconRotate&&(e+="-webkit-transform: rotate("+r.iconRotate+"deg);",e+="-moz-transform: rotate("+r.iconRotate+"deg);",e+="-o-transform: rotate("+r.iconRotate+"deg);",e+="-ms-transform: rotate("+r.iconRotate+"deg);",e+="transform: rotate("+r.iconRotate+"deg);"),r.number&&(t='number="'+r.number+'" '),r.extraClasses.length&&(o+=r.extraClasses+" "),r.prefix.length&&(o+=r.prefix+" "),r.icon.length&&(o+=r.icon+" "),r.svg&&(a+=this._createSvg(r.shape,this._getColorHex(r.markerColor))),a+="',r.name.length&&(a+='
'+r.name+"
"),a},_setIconStyles:function(e,t){var o,a,r=this.options,n=L.point(r["shadow"===t?"shadowSize":"iconSize"]);a="shadow"===t?(o=L.point(r.shadowAnchor||r.iconAnchor),"shadow"):(o=L.point(r.iconAnchor),"icon"),!o&&n&&(o=n.divideBy(2,!0)),e.className="leaflet-marker-"+a+" extra-marker extra-marker-"+t+" "+r.className,o&&(e.style.marginLeft=-o.x+"px",e.style.marginTop=-o.y+"px"),n&&(e.style.width=n.x+"px",e.style.height=n.y+"px")},createShadow:function(){var e=document.createElement("div");return this._setIconStyles(e,"shadow"),e}}),t.icon=L.ExtraMarkers.icon=function(e){return new L.ExtraMarkers.Icon(e)},e.ExtraMarkers=t,Object.defineProperty(e,"__esModule",{value:!0})}); \ No newline at end of file diff --git a/views/public/javascripts/leaflet_awesome_number_markers.js b/views/public/javascripts/leaflet_awesome_number_markers.js new file mode 100644 index 0000000..7f2bb5d --- /dev/null +++ b/views/public/javascripts/leaflet_awesome_number_markers.js @@ -0,0 +1,65 @@ +/* + Leaflet.AwesomeNumberMarkers, a plugin that adds number markers for Leaflet + + http://leafletjs.com + https://github.com/zahidul-islam +*/ + +/*global L*/ + +(function (){ + "use strict"; + L.AwesomeNumberMarkers = L.Icon.extend({ + options: { + iconSize: [35, 45], + iconAnchor: [17, 42], + popupAnchor: [1, -32], + className: 'awesome-number-marker', + icon: 'home', + markerColor: 'blue', + numberColor: 'white', + number: '' + }, + + createIcon: function () { + + var div = document.createElement('div'), + options = this.options; + + div.innerHTML = this._createInner(); + this._setIconStyles(div, 'icon-' + options.markerColor); + + return div; + }, + + _createInner: function() { + var iconColorStyle = "", options = this.options; + + if(options.numberColor) { + iconColorStyle = "style='color: " + options.numberColor + "' "; + } + + return "" + options.number + ""; + }, + + _setIconStyles: function (img, name) { + var options = this.options, + size = L.point(options['iconSize']), + anchor = L.point(options.iconAnchor); + + img.className = 'awesome-number-marker-' + name + ' ' + options.className; + + if (anchor) { + img.style.marginLeft = (-anchor.x) + 'px'; + img.style.marginTop = (-anchor.y) + 'px'; + } + + if (size) { + img.style.width = size.x + 'px'; + img.style.height = size.y + 'px'; + } + } + }); + +}()); + diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index 8516d38..f9cf319 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -313,13 +313,53 @@ function mallMapJs(){ // postData.eventTypes.push(this.value); // }); // } - + $.getScript("./src/leaflet_awesome_number_markers.js"); + var geojsonMarkerOptions = { + radius: 8, + fillColor: "#ff7800", + color: "#000", + weight: 1, + opacity: 1, + fillOpacity: 0.8 + }; + var smallIcon = new L.Icon({ + iconSize: [27, 27], + iconAnchor: [13, 27], + popupAnchor: [1, -24], + iconUrl: './leaf-green.png' + }); + var redMarker = L.ExtraMarkers.icon({ + icon: 'fa-coffee', + markerColor: 'red', + shape: 'square', + prefix: 'fa' + }); // Make the POST request, handle the GeoJSON response, and add markers. jqXhr = $.post('mall-map/index/filter', postData, function (response) { //response is an array of coordinate; var item = (1 == response.features.length) ? 'item' : 'items'; + console.log(response.features); $('#marker-count').text(response.features.length + " " + item); var geoJsonLayer = L.geoJson(response, { + pointToLayer: function (feature, latlng) { + // console.log(feature.properties.id); + return L.circleMarker(latlng, geojsonMarkerOptions); + // return L.marker(latlng, { + // icon: L.ExtraMarkers.icon({ + // icon: 'fa-number', + // number: 1, + // markerColor: 'blue' + // }) + // } + // ) + // return L.marker(latlng, {icon: redMarker}) + // return L.marker(latlng, { + // icon: new L.AwesomeNumberMarkers({ + // number: 1, + // markerColor: "blue" + // })}) + // return L.Marker(latlng, {icon: smallIcon}); + }, onEachFeature: function (feature, layer) { layer.on('click', function (e) { // Request the item data and populate and open the marker popup. @@ -363,32 +403,55 @@ function mallMapJs(){ //adding this so that the mall-map markers will load (most of the time; sometimes it breaks) for(var i = 0; i<100;i++){ - try{ - markers = new L.MarkerClusterGroup({ - showCoverageOnHover: false, - maxClusterRadius: 40, - spiderfyDistanceMultiplier: 2 - }); - break; - } - catch(err){ - $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); - // var imported = document.createElement("script"); - // imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; - // document.head.appendChild(imported); - } + // try{ + // markers = new L.MarkerClusterGroup({ + // showCoverageOnHover: false, + // maxClusterRadius: 40, + // spiderfyDistanceMultiplier: 2 + // }); + // break; + // } + // catch(err){ + // $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); + // // var imported = document.createElement("script"); + // // imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; + // // document.head.appendChild(imported); + // } } - markers.addLayer(geoJsonLayer); - map.addLayer(markers); + // markers.addLayer(geoJsonLayer); + // map.addLayer(markers); var json_response = eval ("(" + jqXhr.responseText + ")"); + // console.log(json_response); var json_content = json_response.features; + // console.log(json_content); var pointList = []; + var test = []; for(var i = 0; i < json_content.length; i++){ - lat = json_content[i].geometry.coordinates[1]; - lng = json_content[i].geometry.coordinates[0]; - var point = new L.LatLng(lat, lng); - pointList[i] = point; + lat = json_content[i].geometry.coordinates[1]; + lng = json_content[i].geometry.coordinates[0]; + var point = new L.LatLng(lat, lng); + // markers.push(L.marker(point)); + pointList[i] = point; + try{ + // markers.push(L.marker([lat,lng])); + markers = new L.layerGroup(); + // markers = new L.MarkerClusterGroup({ + // showCoverageOnHover: false, + // maxClusterRadius: 40, + // spiderfyDistanceMultiplier: 2 + // }); + // break; + } + catch(err){ + $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); + // var imported = document.createElement("script"); + // imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; + // document.head.appendChild(imported); + } + // markers[i].addTo(map); + // test[i].addTo(map); + } var tourPolyline = new L.Polyline(pointList, { color: 'blue', @@ -398,10 +461,13 @@ function mallMapJs(){ }); for(var j = 0; j < Object.keys(map._layers).length; j++){ var feature = map._layers[Object.keys(map._layers)[j]]; + // what is the point of this if block? if(feature._path){ - map.removeLayer(feature); //map._layers[Object.keys(map._layers)[j]] = null; + // map.removeLayer(feature); //map._layers[Object.keys(map._layers)[j]] = null; } } + markers.addLayer(geoJsonLayer); + map.addLayer(markers); tourPolyline.addTo(map); }); } diff --git a/views/public/javascripts/src/images/markers-soft.png b/views/public/javascripts/src/images/markers-soft.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee4c348dde1a740fd946c4212b0642ed5ab137c GIT binary patch literal 41226 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 aAw|UvuR9IAZi0KdKr~f#RX!_ONBti%eZQ*! literal 0 HcmV?d00001 diff --git a/views/public/javascripts/src/leaflet_awesome_number_markers.css b/views/public/javascripts/src/leaflet_awesome_number_markers.css new file mode 100644 index 0000000..8f294a7 --- /dev/null +++ b/views/public/javascripts/src/leaflet_awesome_number_markers.css @@ -0,0 +1,99 @@ +/* Marker setup */ +.awesome-number-marker { + background: url('images/markers-soft.png') no-repeat 0 0; + width: 35px; + height: 46px; + position:absolute; + left:0; + top:0; + display: block; + text-align: center; +} + +.awesome-number-marker i { + color: #333; + margin-top: 10px; + display: inline-block; + font-size: 14px; +} + +.awesome-number-marker .icon-white { + color: #fff; +} + +/* Colors */ +.awesome-number-marker-icon-red { + background-position: 0 0; +} + +.awesome-number-marker-icon-darkred { + background-position: -180px 0; +} + +.awesome-number-marker-icon-lightred { + background-position: -360px 0; +} + +.awesome-number-marker-icon-orange { + background-position: -36px 0; +} + +.awesome-number-marker-icon-beige { + background-position: -396px 0; +} + +.awesome-number-marker-icon-green { + background-position: -72px 0; +} + +.awesome-number-marker-icon-darkgreen { + background-position: -252px 0; +} + +.awesome-number-marker-icon-lightgreen { + background-position: -432px 0; +} + +.awesome-number-marker-icon-blue { + background-position: -108px 0; +} + +.awesome-number-marker-icon-darkblue { + background-position: -216px 0; +} + +.awesome-number-marker-icon-lightblue { + background-position: -468px 0; +} + +.awesome-number-marker-icon-purple { + background-position: -144px 0; +} + +.awesome-number-marker-icon-darkpurple { + background-position: -288px 0; +} + +.awesome-number-marker-icon-pink { + background-position: -504px 0; +} + +.awesome-number-marker-icon-cadetblue { + background-position: -324px 0; +} + +.awesome-number-marker-icon-white { + background-position: -574px 0; +} + +.awesome-number-marker-icon-gray { + background-position: -648px 0; +} + +.awesome-number-marker-icon-lightgray { + background-position: -612px 0; +} + +.awesome-number-marker-icon-black { + background-position: -682px 0; +} \ No newline at end of file diff --git a/views/public/javascripts/src/leaflet_awesome_number_markers.js b/views/public/javascripts/src/leaflet_awesome_number_markers.js new file mode 100644 index 0000000..7f2bb5d --- /dev/null +++ b/views/public/javascripts/src/leaflet_awesome_number_markers.js @@ -0,0 +1,65 @@ +/* + Leaflet.AwesomeNumberMarkers, a plugin that adds number markers for Leaflet + + http://leafletjs.com + https://github.com/zahidul-islam +*/ + +/*global L*/ + +(function (){ + "use strict"; + L.AwesomeNumberMarkers = L.Icon.extend({ + options: { + iconSize: [35, 45], + iconAnchor: [17, 42], + popupAnchor: [1, -32], + className: 'awesome-number-marker', + icon: 'home', + markerColor: 'blue', + numberColor: 'white', + number: '' + }, + + createIcon: function () { + + var div = document.createElement('div'), + options = this.options; + + div.innerHTML = this._createInner(); + this._setIconStyles(div, 'icon-' + options.markerColor); + + return div; + }, + + _createInner: function() { + var iconColorStyle = "", options = this.options; + + if(options.numberColor) { + iconColorStyle = "style='color: " + options.numberColor + "' "; + } + + return "" + options.number + ""; + }, + + _setIconStyles: function (img, name) { + var options = this.options, + size = L.point(options['iconSize']), + anchor = L.point(options.iconAnchor); + + img.className = 'awesome-number-marker-' + name + ' ' + options.className; + + if (anchor) { + img.style.marginLeft = (-anchor.x) + 'px'; + img.style.marginTop = (-anchor.y) + 'px'; + } + + if (size) { + img.style.width = size.x + 'px'; + img.style.height = size.y + 'px'; + } + } + }); + +}()); + From 483f705616791f4f7675c30a3ce5552eaae9958e Mon Sep 17 00:00:00 2001 From: Austin Mason Date: Thu, 6 May 2021 06:54:44 -0500 Subject: [PATCH 016/183] Comment out additional simple vocab filters --- controllers/IndexController.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index af3f1a3..f821b40 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -94,8 +94,9 @@ public function indexAction() //calls down the data table of the Simple Vocab plugin $simpleVocabTerm = $this->_helper->db->getTable('SimpleVocabTerm'); $mapCoverages = $simpleVocabTerm->findByElementId(self::ELEMENT_ID_MAP_COVERAGE); - $placeTypes = $simpleVocabTerm->findByElementId(self::ELEMENT_ID_PLACE_TYPE); - $eventTypes = $simpleVocabTerm->findByElementId(self::ELEMENT_ID_EVENT_TYPE); + /* REMOVING ADDITIONAL SIMPLE VOCAB FILTERS -AM */ + // $placeTypes = $simpleVocabTerm->findByElementId(self::ELEMENT_ID_PLACE_TYPE); + // $eventTypes = $simpleVocabTerm->findByElementId(self::ELEMENT_ID_EVENT_TYPE); // Get the database. $db = get_db(); @@ -114,10 +115,12 @@ public function indexAction() $this->view->tour_types = $_tourTypes; // $this->view->item_types = $this->_itemTypes; - if ($mapCoverages && $placeTypes && $eventTypes) { + /* REMOVING ADDITIONAL SIMPLE VOCAB FILTERS -AM */ + // if ($mapCoverages && $placeTypes && $eventTypes) { + // $this->view->place_types = explode("\n", $placeTypes->terms); + // $this->view->event_types = explode("\n", $eventTypes->terms); + if ($mapCoverages) { $this->view->map_coverages = explode("\n", $mapCoverages->terms); - $this->view->place_types = explode("\n", $placeTypes->terms); - $this->view->event_types = explode("\n", $eventTypes->terms); } // Set the JS and CSS files. @@ -190,6 +193,7 @@ public function filterAction() . $db->quoteInto("AND $alias.element_id = ?", self::ELEMENT_ID_MAP_COVERAGE); $wheres[] = $db->quoteInto("$alias.text = ?", $this->_request->getParam('mapCoverage')); } + /* REMOVING ADDITIONAL SIMPLE VOCAB FILTERS -AM */ // // Filter place types (inclusive). // if ($this->_request->getParam('placeTypes')) { // $alias = "place_types"; From 7524e37ee82c44afef06fa1210cde00431de3944 Mon Sep 17 00:00:00 2001 From: Austin Mason Date: Thu, 6 May 2021 11:29:20 -0500 Subject: [PATCH 017/183] Cleaned up leaflet libraries --- controllers/IndexController.php | 18 +-- views/public/javascripts/mall-map.js | 108 +++++++++--------- views/public/markers/img/markers_default.png | Bin 0 -> 119805 bytes .../public/markers/img/markers_default@2x.png | Bin 0 -> 254280 bytes views/public/markers/img/markers_shadow.png | Bin 0 -> 535 bytes .../public/markers/img/markers_shadow@2x.png | Bin 0 -> 1469 bytes .../leaflet.extra-markers.min.css | 0 .../leaflet.extra-markers.min.js | 0 8 files changed, 64 insertions(+), 62 deletions(-) create mode 100755 views/public/markers/img/markers_default.png create mode 100755 views/public/markers/img/markers_default@2x.png create mode 100755 views/public/markers/img/markers_shadow.png create mode 100755 views/public/markers/img/markers_shadow@2x.png rename views/public/{css => markers}/leaflet.extra-markers.min.css (100%) rename views/public/{javascripts => markers}/leaflet.extra-markers.min.js (100%) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index f821b40..2740be3 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -130,19 +130,21 @@ public function indexAction() ->appendFile(src('jquery.cookie', 'javascripts', 'js')) ->appendFile('//cdn.leafletjs.com/leaflet-0.7/leaflet.js') ->appendFile(src('modernizr.custom.63332', 'javascripts', 'js')) - ->appendFile(src('leaflet_awesome_number_markers', 'javascripts', 'js')) - ->appendFile(src('new_markercluster_src', 'javascripts', 'js')) //adding this so that the mall-map markers will load (most of the time; sometimes it breaks) - ->appendFile(src('leaflet.extra-markers.min', 'javascripts', 'js')) + // ->appendFile(src('leaflet_awesome_number_markers', 'javascripts', 'js')) + // ->appendFile(src('new_markercluster_src', 'javascripts', 'js')) //adding this so that the mall-map markers will load (most of the time; sometimes it breaks) + ->appendFile('//cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.1/js/fontawesome.min.js') + ->appendFile(src('leaflet.extra-markers.min', 'markers', 'js')) ->appendFile(src('mall-map', 'javascripts', 'js')); $this->view->headLink() ->appendStylesheet('//code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css', 'all') ->appendStylesheet('//cdn.leafletjs.com/leaflet-0.7/leaflet.css', 'all') ->appendStylesheet('//cdn.leafletjs.com/leaflet-0.7/leaflet.ie.css', 'all', 'lte IE 8') - ->appendStylesheet(src('MarkerCluster', 'css', 'css')) - ->appendStylesheet(src('MarkerCluster.Default', 'css', 'css')) - ->appendStylesheet(src('MarkerCluster.Default.ie', 'css', 'css'), 'all', 'lte IE 8') - ->appendStylesheet(src('leaflet_awesome_number_markers', 'css', 'css')) - ->appendStylesheet(src('leaflet.extra-markers.min', 'css', 'css')) + ->appendStylesheet('//cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.1/css/all.min.css') + // ->appendStylesheet(src('MarkerCluster', 'css', 'css')) + // ->appendStylesheet(src('MarkerCluster.Default', 'css', 'css')) + // ->appendStylesheet(src('MarkerCluster.Default.ie', 'css', 'css'), 'all', 'lte IE 8') + // ->appendStylesheet(src('leaflet_awesome_number_markers', 'css', 'css')) + ->appendStylesheet(src('leaflet.extra-markers.min', 'markers', 'css')) ->appendStylesheet(src('mall-map', 'css', 'css')); } diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index f9cf319..945ca32 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -11,22 +11,22 @@ function mallMapJs(){ var windowheight = $(window).height(); $('#map').css('height', windowheight - 54); //adding this so that the mall-map markers will load (most of the time; sometimes it breaks) - $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); - var imported = document.createElement("script"); - imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; - document.head.appendChild(imported); + // $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); + // var imported = document.createElement("script"); + // imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; + // document.head.appendChild(imported); var MAP_URL_TEMPLATE = 'https://stamen-tiles-{s}.a.ssl.fastly.net/terrain/{z}/{x}/{y}{r}.png'; // MAP_CENTER controls the default starting place // var MAP_CENTER = [38.8891, -77.02949]; - var MAP_CENTER = [41.9001702, 12.4698422]; + var MAP_CENTER = [44.458498027103865, -93.15750479388674]; // MAP_ZOOM controls the default zoom of the map var MAP_ZOOM = 15; var MAP_MIN_ZOOM = 14; var MAP_MAX_ZOOM = 18; // MAP_MAX_BOUNDS controls the boundaries of the map - var MAP_MAX_BOUNDS = [[41.908628, 12.451941], [41.88927, 12.490607]]; - var LOCATE_BOUNDS = [[41.908628, 12.451941], [41.88927, 12.490607]]; + var MAP_MAX_BOUNDS = [[44.468498027103865, -93.13750479388674], [44.448498027103865, -93.17750479388674]]; + var LOCATE_BOUNDS = [[44.468498027103865, -93.13750479388674], [44.448498027103865, -93.17750479388674]]; var MAX_LOCATE_METERS = 8000; var map; @@ -313,27 +313,27 @@ function mallMapJs(){ // postData.eventTypes.push(this.value); // }); // } - $.getScript("./src/leaflet_awesome_number_markers.js"); - var geojsonMarkerOptions = { - radius: 8, - fillColor: "#ff7800", - color: "#000", - weight: 1, - opacity: 1, - fillOpacity: 0.8 - }; - var smallIcon = new L.Icon({ - iconSize: [27, 27], - iconAnchor: [13, 27], - popupAnchor: [1, -24], - iconUrl: './leaf-green.png' - }); - var redMarker = L.ExtraMarkers.icon({ - icon: 'fa-coffee', - markerColor: 'red', - shape: 'square', - prefix: 'fa' - }); + // $.getScript("./src/leaflet_awesome_number_markers.js"); + // var geojsonMarkerOptions = { + // radius: 8, + // fillColor: "#ff7800", + // color: "#000", + // weight: 1, + // opacity: 1, + // fillOpacity: 0.8 + // }; + // var smallIcon = new L.Icon({ + // iconSize: [27, 27], + // iconAnchor: [13, 27], + // popupAnchor: [1, -24], + // iconUrl: './leaf-green.png' + // }); + // var redMarker = L.ExtraMarkers.icon({ + // icon: 'fa-coffee', + // markerColor: 'red', + // shape: 'square', + // prefix: 'fa' + // }); // Make the POST request, handle the GeoJSON response, and add markers. jqXhr = $.post('mall-map/index/filter', postData, function (response) { //response is an array of coordinate; @@ -343,15 +343,15 @@ function mallMapJs(){ var geoJsonLayer = L.geoJson(response, { pointToLayer: function (feature, latlng) { // console.log(feature.properties.id); - return L.circleMarker(latlng, geojsonMarkerOptions); - // return L.marker(latlng, { - // icon: L.ExtraMarkers.icon({ - // icon: 'fa-number', - // number: 1, - // markerColor: 'blue' - // }) - // } - // ) + // return L.circleMarker(latlng, geojsonMarkerOptions); + return L.marker(latlng, { + icon: L.ExtraMarkers.icon({ + icon: 'fa-number', + number: 1, + markerColor: 'blue' + }) + } + ) // return L.marker(latlng, {icon: redMarker}) // return L.marker(latlng, { // icon: new L.AwesomeNumberMarkers({ @@ -431,24 +431,24 @@ function mallMapJs(){ lat = json_content[i].geometry.coordinates[1]; lng = json_content[i].geometry.coordinates[0]; var point = new L.LatLng(lat, lng); - // markers.push(L.marker(point)); + markers.push(L.marker(point)); pointList[i] = point; - try{ - // markers.push(L.marker([lat,lng])); - markers = new L.layerGroup(); - // markers = new L.MarkerClusterGroup({ - // showCoverageOnHover: false, - // maxClusterRadius: 40, - // spiderfyDistanceMultiplier: 2 - // }); - // break; - } - catch(err){ - $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); - // var imported = document.createElement("script"); - // imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; - // document.head.appendChild(imported); - } + // try{ +// // markers.push(L.marker([lat,lng])); +// markers = new L.layerGroup(); +// // markers = new L.MarkerClusterGroup({ +// // showCoverageOnHover: false, +// // maxClusterRadius: 40, +// // spiderfyDistanceMultiplier: 2 +// // }); +// // break; +// } +// catch(err){ +// $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); +// // var imported = document.createElement("script"); +// // imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; +// // document.head.appendChild(imported); +// } // markers[i].addTo(map); // test[i].addTo(map); diff --git a/views/public/markers/img/markers_default.png b/views/public/markers/img/markers_default.png new file mode 100755 index 0000000000000000000000000000000000000000..2c81d15bf68b2444f39108823c7166cd7d74d8fb GIT binary patch literal 119805 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
EsCP3Gi=!X0}djBu@;PRL^6Wl0)h*~ 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 literal 0 HcmV?d00001 diff --git a/views/public/markers/img/markers_default@2x.png b/views/public/markers/img/markers_default@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..35ff61b50db09885901cbd0e222c2540265cc357 GIT binary patch literal 254280 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 z zjPpOIn)BnsylMw<-XoR#njj!3Nzc5lvEf_#;1na=v6f# zIbE%|nn&@ds}v%GD$9D?;~y;)2F3UVKR`V_IOi&L-0yh;0a==e>W!lx%d~B}oz_NrIv%VsD~1Dy4pHKYO}Q z1xE#fL6uEjTU8d3QjpXn{PUV%aGf-1B4o~?noM4sbUVKlY_%uA!LkAehcE-+kOa6% z_GR8%Bt|2mn)q&>MF5DUz?S#$dGw*bYgB*So zAl&3Ng6%Jfuvs|D%x$tjZ&Bt#cL|-Ae8|_Je^o)4)sGqf~1D`6HJQY zOPz23hsw^XaPa^MR4%|HfMx^%OoVaaURzlQWnw^@8bF-m^V3`~xDYTd-D|rkzpr$A z0~}FPK{l(3fk+^;{>!X$FiESP_~iZkswdP*rHB&v;Wj4LzpfSO4_C8n3)K}I);cKb z;AfmM0#KFq9v=cC6@f_1CBMYe?iUG=kYF&X%AT~Pg`2VWoeB=?;k}qy!6B7IHL1R+ zDyt|_2_$6QmN2jJ4;YFR6lxOLYEr$1t^Z|Txn1LuYl2Y%I}a9h3*xL8$>-H;T;-sp zhJ={!2MjQjP%uJc>?ZJqeJwlxt8D$Q3?eXrDZo05iY@G{3JwA$#pHFc7SOuk-w5;T zzjlJex(a1dOkUe-wST*sH7<5a-s&CTXIHHV63EK@b+8qXM0G&z=l1~>jC!Q5k-*3y ztBTjPTiB7wXq9|Ttt^E~it6dO=wbjmO zSekNk%=msGgfDf@!5DKW01lvTQ^~Rn4E|CQ^lKdG)&UOZ93Ul%@%RDnEVR*(T(^15 zvru46JG9Cydqq`M@ILIynx+7Ua}F*zxEXXMEF^3;dcZq}C^C?!t03lG3>cCFs%-oU z*;_<#Zcl*2IY2qatdZ8t64DkYDR@XdEohj3{U`;17;MW^)>?>JNmB!Gc;~=!j{s2$ zh;sZ&3Kk;LpgjV~xr=`c!IJ=0lb4681hd~2)OmOW2RLitoP-y<50Dpx(PZ*KWjzuj znsXO0{|b@-2;)idin6K@X1xk?-S_33gNFmnsL_-AVq8?OScqif zzpg(%SM85?7PDS~NC0J7oeJzBNHmpr^KE|^fIvNl+*Z{o>s>w3V-JACItT5<%oaHo zKt9f2=_&`6sJi0g5cqcu4M74$R=m6@tE;5M*V^8|U?w>0AcTOQ;g^H}%B*;$cOEU1 zLd`oshWdfWkgnfmCgsabWv_D5T$h0P#y&f)*RD80NQ@@q2Vh;zFEPEq^M1jo1|hOZ z_6pmv2yQn3GzB==xw`UW21qT5FfOuJBKW#}M`C{4Q?B*fs#Zo;j9=l>&P-5!NUiy`(HlbUGbWW%=^Jp`H-J*Mk=VL{zs|ItM??zmtG-_JI%rq9~f% z=_#`S4iLdP_X;%36IDD8O z$k`Pfa2BB|?`NO}O%8#6JZk$ah~TU0g<n1LYfRB%)bVHsgo+rP9RS1v--2rSJr zzrJB=Rw0TFC0NAHM4Ir1PAiv{Q!X!J&o0Up8Y#107`&@yHB{x z5QpmeZ3*%qr;wK=vO+-d?!?pjfTD8u*Gd;n)$5!Gh#`QfCW*4n-Io<5+>8K-*n>$R zR~FuT(2M}ug@B^+_cH@b>T1i_JOdoeV5z6oD=!=uwkB=f1K?2B!}w4K+1Klb8I|Yz z82~F?m)y^Lei}lpA0bis@WP4pwSKOPU04#B2t{6jCMDbqSMRNdt?UcA35NJk037wm zSR#UT{=PCRVE3uuuvvx518znMVsHVjaQ71lNK%I+{s|DM?T@$N1yxq+;Mwj1paUaF zf-5Wp3wSpp!Egb-a`!VcG)V~1+&_RZGZe|%zdL`Q&27yMblnA$3^)qNWsX8+$gcz5 z8GsKCr7iE@K~4@q{8Jlg0D@4t>b|U)z&SeufNo--iolfyx!wA4!K3oki|R~-FyG~w zSM4(-0g6z$>V;XEW4{WH(s@*pQOs zT}O<;o=}#6EokO6jNm+MRo&0bJJk$xf3=8ERaG+?EWDtYjRgfD4?~j39|Q$ zix~{m_IVD8SN9TQ41^G1<`?h{eDa@?0XQTPTv47TDPnEn z;(DU38mK0S*n^aZxE^680)&9Cs?!2EH2Mjsc}kQZ__93BN(!OVaD9{D4hM$@yaK|E z`@_mWj5n948Mk+J{OLR=@C?y7c(%noOcJaU>|&m4NJgEAA%p^p8LzCu!1(GciQ4Eh z9|8woV-bK9AYUvpi&I`E=dWjp@*=UO)z`O_c)77~Y`wx#K9mk?5-wEnat#Ky?t zdXA0h2rT~YDHB1sgCcDd1 zwb9tx9Nf#UPI{-)MCRLn1rP|51gfICM<|I%$z7F$Q-DJ`4dqo`&T@U6U?g1S&msVV zsjg0#_xy_)f(3+-u%%rFaLTmIg>YR0N}izFWqS(EXqW0U0+!#SV9sZF)>;)LBh!l`z&E?bq1nt7sDZle-Ik5Mi8p1JR^yW ziIZwq>%??&ijDwfcEv|^2qj=$bsB=|?|B&TA8zy`36-l(OOli-#eCiVr=8kH1!x&C zt9d|4gMr_?ml0~fEgX^uu)2U1-une5G+5|eBpXdZA)+{fOe93Kd*4baY!9~2cwZA~ zABGAAsw)#}fWx_CB*m#jn~T>IjRxkOstf|}v3CY@I12#!5LC8Y`?*UY5kfcvU_l76 zy;t0_=dN{G56MMpF(Bt)P|Mb!{4eLxXUNi2x~a z2u=^c0Ynlk1rYp+Sc~I=Xmyu*qyR`DjtrtWf{%8G&?YtzQk>;*4N>$V@L$vNW&%z` zanuGdzP`0>3UHX9p}m2aQNf`i1rl_IJ%d;@#GCV8!NCv^pg;%|pksYjr{==-EnXoo zq^t?Gr4gVR0EbW#M06U=kPwH%e}#a$7KOmfT1M&~spZ!7lT;KdfC6F@LCY91$4>`9 zh#;keBsz@{4v~Mq#!dqZNtB$GQl8t@CO5SuItGm1HD*r`K@b@NovO$1VZI4iuT3x- z{v!fTBsxAWh}N#395}_xBIRKu!_UZ1jfy}JXBYt_>*|Mqd9To%#?K65oQzb`VsLgn zQ9sH0C>Rq#L}Dhup|ysT@~rp1u5vvj07nR+CS+9#k%`Vmk-2z%e8_=ejDeIABv}TDg8- z?CL+e^gMU1Ei!pu=~Bq8ji z2dO|JG>;tf|H4C5PauF}nC$XGAO*Va1tU=&rB%4J+Qs9e7>i~G$Al1=6je{kraIve z*q`Yu6%ir$fD3EuJt@R)l1%mh5z6ieUQ19YcV91}sIac5g}D0UG4~04!=fMrLI^m& zG49bU68;9@=q|Kim=LZjQEdXLPUS;aNC_sf=d|YeJ3<5!63&(S{IKW|u)0ecv;x;^%`ndblkub{m8!?XhWWo=bdBw(D%-tsVRZq(`1*ZK0gmoiAaxPktTEM6 zpv=kzrE30-a0md_(AZ&t`bBvA(soZsvFmg9O$Eo2axl^C78Q~NSK0+3cL0GyPyxgs z5QHE&4#-vqJt4%d3ZRG;JOy0pT*7&^icv^s*k_THRndi%4Y+X#3{YrVNk|}ghYM>L zdo-&Lepn33}xoFqAstchS04U&alyKD5-Of34e(Pe72y54?XIjCrA|1#8 zlNktyAc4Y87L?M>10f%R7Tp^BkxIfk+glx8TmU%R#WA4+*a`I4T5wwuBA&$oBv6%A zZyGBcCV+#vuFBZl*yuIw7*G3ilgR|#P8VfW!FxZmMTY_KFgF+yhTCc!|BMI9{umZt5x_V-E0~{P2n5iBSy2}D_9We;L zrayQ7Id1CuQ?A3s;Og#*>tANr1EFCN_a3umeFKaT0&z38@-URpPcyJO-VN~16N?#v zO9OCt9}wgoQ&d2L1L~Tz!*P7B8Xy(`9J~*-AHd-~!*QsmGhMG{0tIev7Kq7|0UYE!5X7!Is5C|SnF&`9(BVL! zr+g~`@ZL2|1UwVq@IJsX&*WAWBoVld4+9v24@C`P{c#Hhb0F_6%^KTIp24BEKVioC zxyFedj#txbebY624I#|-U!fjN%^}phTzlvz0Cd;@jw#4d=b=~QmsNfdVyzukLe0r_XW-S3+gl(Z31GtX3e}``@}V2=l8hjKgFS# zVt`Ns8lhI$?E6&%s5`OotmAVvvj~SQfUZlGYx2t*LB>-HPP_AqsnQrbrM-v7{7m;q zG+RGJS3TH1_IXNM7wXP390vR_puSr~JMMmO|Hap!A~OJ>sS%peZ}4F`I}K<|R|B0H zw&j}mX2#BGipz&<57WGBh#LDGu4dvyySzL#_lvKIfp$mGQ@!!i?eyH=u&ePL5%Hcc z=d|B@pQw)z^EIuNhXmjV*r~=P5opDnMsHfC0A1WP9K_DX9cVl}39P#2Jgp`%dCxy=( zLa66>&wmLkfjPhj2cZn&#l?c8+=YPEewz>(11%l+`U(yr5Q)N1#ziQ65`vx?D9mk+ z;XOzzsKw=+gxIa0CTHg~z$LSL2w55kSL9p_!EE*{BbrNW!+SuO(zTW*gc*TdLo!;K z6he#H92`PJx}xMNyXxQ%!wX?RGwzm9>V-*=26WvEmr@=j6ngCzmJy>jqeVqaiAh-& ze$w>j9*O|ER*(+?iU^CHR<4!W{esLMAb}z^@JjEh;2;1}iZU;3k^6A%mafzeJBR4ft1?r$RqMOOLJg%E4@`((TG7eM>KP(-{G%RJ^p( zOak3*3&}!fW{Zl}3bwLEHqH@DfM9tjTELhByz?+x7rn*Kgn>OtMq4sP;tcc*5@@Lf zTwWDbRy{pYJp>7AXh=$ug=C^)y=w~5l!L>x6Br{PXN-v@CEyBMIPZ4|SPw%7q35~> z9um-@wAi=Ha67?NG_p%fy|i>!3cHT)9dkRXTw@E)WjmO6{Yv_)VB ziiVJ+;8=m=^(`s_1WfWGE4_75ZQu_{038_c4w7_OP8N!q9&2|62LN;;i*^(sX9Unn zXjoqsc|NWmP-j$v%%^%7&Ut8|i%z^anMJNovaaB8?G~I9dyYvx-Gb5@LduyO8$`sOxu_oq!=cg7v{kF&7AbH$Q&dcvLP!|^ta|Ux z`oMMB>)adYI=KkJLony2m0prsV;0G1V1iT(AuQx9fJ2B0f!2cKMbC$03K&sse4P&v znl^RXSs^K!QEAr$90ZOmSOu`&ZD3f%fKZnaLfy*3bSM(k`hhusv{<9KyHz{$84jKR zuOkFG+xU8E5J+5M?_LpnXet`!KY(V>@V*8GStplSCD=7ZMc4Csk~l)k8MKVt6-a3* zAqXqMhZk@NhonM*>R`nOK*`XGq)mU=kZGqgG}E z91sExrpdYG}3GY1!dM$0GTXj&qn`Bfl!2|>CG-w6~ zhcXHzX~hTka?c)$)Z8Z+1crx)Zvbc0GM7!u!0$masuK-q#MO-K8a)dsKt!wT!}I+i zvCnn>Uf%~2BIv|imRjNZDSH|3|TI=Z#G$vpTA#`^D4n70{bl~~{OzMp^PF4j8>`5|eDi{^u z#qJnUO9PsSD?T{*5Fif&z(GxX7#xhkN@7~unBjLw)nj7wIEG91064UQ=+g>;zCcQO zD5?~g8B)sW7*uFuE*oQZ-LDWBCW;|ypb&dic>q`q%%8vOe$KI6Ln`Z~l$QnVU3jr4 zz>%%4g0upMumTeG3!@P8&(cqI$xiSLA>?{F9B$Xi(+oQfLMexcQOzV7B`E=>Re)aP z0t4c3JTSY!@BxrQuDRi$WbbAs`Cx#C6{PmyVg|q=6yT~gCWX)tWzW5R7Ik$3dw`8v z!DKs7aJx6w_-mbOh#}GUBSVDuSlXgpxOzb=NGM~MnCL5w9#9mNxm|gOm>-7LS1o?RXMEC5M1p( zKa#-AD}tIb-$PNJAi%+cIY3FVKFX^>2s3U)(>^esRFG1F?QRDy>mG#_X1*^tR}(AF zz5OAu_we39YOyvfedT6sidB8sbbp9wy$?T`aekD9cm9%)gb;l5fDz{Y{Dk1aAwUYT zG8&F~7XQe!f@9P-uvWv*sNfJG8hoX)V% z3gEB;fma-w3XZzJ8(-#q%lwEP6xiKcB!c5h$5Jlg3+O2kG}4L#WA?DkA=<(HQPK40zz;ytxXIxetLj<>t;YQ8E-sGn==MKy{M(_baMUPt3f^g+* z{SZ*a3y`q_&tQ@ADh5$_Opn(PY;-6bJOKzUfSf}x>hV&xGr?|`fiB3y3Wa069txG9 ztL?7)mqrnM2#;;_w-5z)wO5zs*amU^0`I+p(dzMT8VBqA47*wni;p@npc5eM9s?E| z3FrB-{$LE_Y^|Fx$N2@f)-W0&S%L5^$tBTe$S zZktJPyE&q!Q&i%`6j3B+PEnDu0$g}>yg7t(7Odxg5||*sd5hp2gi0S5so~(+NIt*2Y&ML}+Ae0QiDjQ@WJf{I0S>4&}wzyot!-;))<7qj}=7$ZOoyl z;0Vmnx~4l&NgVFX#IV2_aCHCA@WjGLJJe z2WH&znAj;1r%K`nrKImFgNLifA%N#N17mnp?7{4y)8r#cY48m6Ylj~b4PZUvO!xp$ z96u;Yyu0)P-iw-fea;iq(la~*DosBklmx7tsh=HQu|39@b07qvuMiV##qiBb<6J)y z3cy;1_W(=%gpdjp+-yZseOvq>St!q>=fERtnC~8gW*?ga$AIPnrC# zcZP&miwC8Uf0JzqnpRrPv!f3luq6-}Nu)j^l?2TkKtwyd2ps%OmURw{SmHq`#JfUS zKpY1BfWc(}avrHs4@oH@W;h%nM6lk$$Z!Y(=(;^FaDdeE2@-N< z`w2A_91I52l$P|mqZm9?q8=1VqVyG7EMH$e}I(0R1y~6fQQQA{)lVQs;R1wEfQcTe$Dr{{|HTZj za|n(R9L+q8p42Cl((qM4a1v6?caaNwhO6qq7ff<}I(=aF0Rq@rK>FQ1%mCmW9Lqms zWh@t!W-CFGb`hG*(*a`F033o~MfB0Yp&rS6eeBl&KUHN>RRR@uCn3&zNI?%pO2JwO z6~Z-RTINwdb$dau7D5nWtvFf4w5q)xcmu9Jw!3f^h)njt^ zpRpl8O7RCm2xp8@TGw1K^EwihnW2$d=YVe2+1)^%TAbNf7d)Kt9Ql zw$ix;ID`3N-|kB$2M7gWX|!u&ok6A@epu+Bjz z33R9PKZ6f5M-A=Z&q6drE@GxZlWF=X8K*1xU~nqe3JFQLIdxzHKox+zw9rXfh<5wK zA=J)n*UrUNBUHbF%|;`=Ngsqxh9Mt!U8$hb`Q>pD0&ouSl?N#UXWAdF$@%s+s1mdb zoxW=C8D2$WXIdXtS@z|=ilEyxxA`dvLMQ{cbYN{zsm}kX$Gh&{zYhX|ueo0oW}crU ziq?}P{`h2T`vKz}gqq_3nh3#Lcv~Vi2Ax*=yCDRKnIpagm8C$}_MrcM^BLNc0fIwy>VJyIa0f8~sHUeLBuYFCh0ilEg zHb!6s3Rnc?Fj<-$d%EIDU)=Hj_)c~A%v5!yb84zjJ?rUtr0!GaTW9aJ)?RzP?~5ql z4~M?EzuSw?a#etcs3bVMCN~%XtbtYs2Tjg!B1#_ZT&Ex9zvB?7XY)|j&nVd&rO``#c) z(wgQ99`mo^8+Za^HKbACo`Yn*?xw;FfHDH&$fZ%=rxpPs6azo4zKEcq~u=N;n9hMqXeMk+OcHk_`^f7&I55%iEjdm9Kx@} z6|edUw~K$=6?uL)l1K{&pGS8I;m27XS5?8`SIN@|Z?B#DnLtYmSttlD5Q^%DoV7dF z$K;AbKX#F+cGf^}(dS%znsfdQeh{GF>%sH9Ytld37(`(R;d>w;2&3r3W!k4Z9`-4t zL)gFDMF!r15VA@sy}iiu=M}QJ)Zn<*wwFW6xss+SvOEK43;;fAw7%+jfbQN+vgPP6 zB@j{cK{$upm3KSt8Z`pI0MJ@Ngwfv+#=Ba|l22h5b7qKrv-atx4ZtX982t&fMY=sH zeT^CeL24Zeslh7IpF74gtMpa<1Lr`7xAadlW8kPT#*6+8#z0DUW%uZsGfGORjVlza z2rnAue+o*$4OJg@va(xIjzI5Z7Jy>mpE?Ve?An(4BoxrO1EhlH(F2Nl_Yx~FW0Q%!3FCRiR;f)8nhlQh8@&A`24uzA~@a#qzOO;bl zTEPpw`-4SHEfR+k85MLmiUNlng z>>snekK7gi{bV!7f`B3nDj$Tk<@m6>h6`wr;Rv)s5JZ2)nCNS*ci&&eUb}u8-I9LApR5MnC5tao!{E#*p zDmTOC;kCJd2nAGbAf<#Sf(x8_x60l8`%T!?!Z=MQMDcZ@CD=7zQ9Zt=P7yOBS!#y}RuuC>6mU=BbW$52H9O33Hn+^R7K zSDWJ4b%NuPtc;Wp)#`hM5IXmp8DEz!E(SLOb`o ztdyYD%6mEI-=AoMf>DTJBjuVafgF$+2M`Jxgnt61;H1P(4%&{hmlQ>Id0=N0v{!u} zXYBPVw=jy9N+j1{rD!c6a|c)h<5&Ny0|C|f&bJMhWZn4{32>)N5d}-d=LuslsfCs9 znw5ih1~6%<)-HMV18@%16g#dTY7D4#uv)g-xvSf$O6>!FB9Zk zW7l8K7&u+3SyZFo{n{8vsdjfJp`|1i0J6)isFXk@;O`NFzuguon4gz0m1_}(;T)Wd zL7YW3 z+}V{wegLC~1rphLf9XO&1pJS=;QuDG86p~iT&w5B))ZC0 z^4=cj--}!UiVk5a*P?$&2~R1dK5y4nLm9QpUfkYidf1TP*@fCt1fudj%GhgVY7o>J z2)i~>sMcDjv}|64qVit|al5V`VqMAMXDy7~9kxxhhUa-7gd_jDQmMf6JXmY5IhcwY z(k4`EH5g-2tpp#iT0^Rx*N>7CN_s=dRJ-d`&v1(4J(RM4HW&=hY&D02Sl8D6A^?n1 zNRv`ghEVze44>m_(f#8_p6#5zq(1HM&br@(3 z#wbXw_G$P52-zi23>zGlTWG#B2gkO5im3g^p0}DJjiVxGs8lJmy0-koIDwQ7D$^js zLmo~3wqf4xW$re{l9XE2ZWrYb2a1fhK3(M(EX{IiQU} zvf21O!5GMHwOcMmY zhj!C{FK0lwTl^U|I06O;wtGK^5Qnx;KCt|d7qCSYX-lMO&Q zLtT(h`_zH%lEED-<*GcNLj)eEFLw41C1_4I{&@A`Mw%o^#F-DD1+dpx1x*QswhD#H z!39Tavi{qi&v#W^+LnpsmV;TkEAJzr1itXT%mvT0EDH)&AfgfUHMYMv7zz}~bOzxG zRHiEbnFeo=?5elcSsrrzEqp%Wr zk%M^x-bC1huy95e?tAk1cA&A zvQ&a|j)p(^+l+Yd=S07xswqB9{BKQrhl1Pi=MHN_G+vQC$&RH(6tUK%i*_L zcY5uKFH&c~IK8S-Uiyi0vZFBykRY(SKKU!m8RUtD(ZjRFH8Yx7{+Xv1q{v~a6Q8oR z)@=+LgwZ1zrGW9O{VbgRbqWPJaIpGnJM-iwF*&ecDnk)Y{)G;j4=`du7`v)b#y}ar z>fhnQLwln2ui*fjXT#f|YYU!205~mCq&X%hn*Y7ts9v-{8LW3Ow*B9XfzoY1J>3Xl z5S(MG75<`g1Wu+y|B!1Ap5lrax+pL?QT?rI==Gf=<+ESK7-c1o3)|TUrSJvEbR>S+ zg2BXHI9ZfM_q7C1Arx-VMV>3PLhp`NByP1JWp28Pm3fTqn&Suv!Z0xH>DIfHHc&Q) z8II#!YY-Lb3M6@k)@0)ot%=6%)(pwSuVR<>*Dgjt;fJBCPE>!(XoJKhFu2zIQ%GBS>`ynH7lI z)&J_(!!_ctd)-GF7^5XFld_VaYX@_LfN>A)iRoX2LkVHnMj2cy@a63qsIWjL(QHor zPE@J&?GQG1Rbw1r9N=t6bBsXvA=7y^u2M8B?Z0hAtvem;?)!_E`^y*$ zqcn`(*@ns>Hj1L((psZ6F#*o`Wdy=CQ9GCL!B(pUYc0Ys{4*iM!&0i!tHyfs3}lWM&KO>j_g`Nqdu zi`wGSe;%x_|6Ff#VW0u2T2B%%#Tp5GiY;d_=husJhLbU3Y2rCt>rg6%Hb%xdRLzS z1_EXmk}YgE3LVf5mww7i*KT2P&WnDCpv87%u0N^M8!ENXeF@_E=myJgv5vxk?b=>7 zj=(ww&N+nO5aR0Hlc|Zu`yP#gcjrkA$_1zw4CQ67h3+ARQxe6XkHGh^G&gfg*+izh z#~)YTj&cStw(CXoFh5!>Oa;Hau^If_R=2xU;Smtj0V}VO>vsXj6ejLK2!WZF_b&)> zD07zEeS!lHf&#lJIX>y{E>+pDuEpL@_2Q&miMn9TX*iQ#1J|eyMEJ1D0J^^g#s!wE z{0BW+^4VQ&`2c_r48r4}9>1DTk8fsRg&|o*{6AfO8KX^B|memHp)~KfCl>n;YvtS8Q!9g4c#} zd+u7;UM0)5v_Pr=#?fv~{RcuR7~@y}cg_J!3>!f9>i%giziYF1@u$?FJAtrXPI0Jf z#6O$>nFa#5kg-B zm+$CXiz3evHX0xIDp6O-qGSr+>t{a%F-n050e^A+?ZjAgjfHZ!bgVt;#H$X#rm@gz z27h+yZ^h)q-cYMk;E3VaG=+KgUU`Pki-t8$RHat zf2J$V+endK^_iWuaHf0{ijtRNCj&~J3d^HBt<3)%a|Md7fhkH1^fj@;0La*ZsSH^( z_Xo;v+|P8juQzb}AQV$dBMbsFJvs3!QYzRygVVa~vRwn@V`Mmal4lv_=ca$7Uaej% zvSMFkYWv|^Q^tZYg1MRMEdYT{w}9>Dq`eldcN|>SL7pizYQYzxNIaTLvoH7V=T|7> zAQ;6$UHqs8g-d!vh{`q={)CzTeCz)c^` z=X(z+wH=@Bj%F|Ye?vcA&8!8X1j6%v$2o_M^^FpWN9nEv$tT6On;aYK>&S}&QKj!&^Ejt#_jzVn?s{vV%t&wDR1M#DKcr6Ho|p1jk&B~Idq3W1Q)Crz-O)ai}b z7<8nBpcL)1=Wb>~T(C;*tc>y`CUJ)*k?>()tiz5{2HQHIqj>aRBw;@;-FD1ZZS1l&B(x}xcpY9LhAL#e{b>RsxDuy~wC(}U=4wO(R zTOi3|_`Z+x*PVVbA!MMHy6OSmqV!**h`Iyn`SJFnez9Mb^074CBvk&$~@3+N_9jfYn?jf7!B;#w+6Ex>vj-OELjQ zP-D?0xYJ3ke>@`4R|(eB4t(E7^=$ja#6dY_uX-?Hwj@&hTlN69kU&^^Riy*16rxJ? z%iUz~Ce!avfP2Hyvy(plLrPdpDgjEda^||13L#dNl;t7wY6lc!VQU=L1FSK-A5!6< ztwhzY-P)D$cj|t(4ekK}2TuAFE2kwirJn(whf_1xzl2iSQAS-|L1y^pslXzn7Sdh4 ziL0$b#Ot3*)ZhpES-;NU!K={n_;I4sJAq6L`kf5EAK+B;`WF)*)=po&ElbP%9zO_} z6ac+?eAY%I48o76Y5Fz*q33z%ZEX!^2?RK!bwgyiK zgi-hk0wg=B<+R)Fr*F^Q$6B5oSd38+LZCV~`(tUZ`|iF{@CZRfDbxua17bsB(XKJD zMULjmsoxG-6Q3#4WM9e8y3!AtxIN>nGa8f&h~=f5y>9Q0^+F;d9;%e0IDt?ehmu${ zbq?#=f)*0u?CE!rdhK2rr+f16ZL6qg<3Kb@-iWKd6pSYjx0h~iCcRJQ1Bt-*;dul` zpUhE2N&urBve-ZviKKbDmiZWOs15}-E#qH4aFM6*8 zz^gOZ6H3TR7=hIe`Gy8}8r|s3+j1Ii37Np|@qKDyp-rjQ}5W+x(SISwRz#T>?h0_`~OCfWGndPb94FfO9()W%&ArUKO?Ecm`4!Nh2B-29NjORvhs#o!?i!?HI9=oarY78diIjT^ zEtNO-WT>EG_QWJ>tr0~5mX_yU-|6=LHkAozz(5HqIf_IG4=rGFl)0fZ2UXb62m5AhTf+G+G`55^eG zoSt~Ah*&3&a}av<1!SEA9D%kP)X+WQk}h}P6;FnX^*6~o^Z(w-`v{4L8m~ZFbwZmz z426~0kX^W3!(VCqXA;n~NQ*tg0d)?BxKc$9dyh*SXn4ZIWPAFbKfby70c5HyFa$lh zhj==ah0P3*7icc8{KrPUaa)$A`ztV=1B?Z<-cwf4XanJKEVNc`zCY>Rif&Q*#yi3O zVWgaF=_|lUwA<(YRW+#JpBC}n(5!706;(!_y*Se~Gy)!Bwz~ZKUeW!VB$g0W3LerE zTpt2PIiy_;r+zx5l_%07*|SgkgwAy^cbj!1~YuLI`A8j*AypVXcK91n*^(t|}?_U9asr!SSizf6voy znXT3cTdmu4QG8w6>728}DGrL0M+!}bi)hOjq-lyuy>W5!y6awKl`M=gN)EXBWaloe@xS@*4GI*Z{g*Q4ngPs8WTNpPwPv}JZ~h&n1-xo0t9ud`5ak5fx&i4Y$fJq- zHmYaeBuoYZyT`LS2wF~X{N>{l7)TC}**$-uRtC*x{Y$El&)eGQK3gyX!bRDkKXLl- zC5F-#DY7_5wN~j}cmDK?jJ3w@hnvTh@1glL9Pvxp*gbChm9}WqygQ|`-_Y&lXFW&| zQ7NGq_5>~IeluP z6z)%D(k+92FG0ID^~F<-vu~27fFpK~XLSHA*HQK`gUJEM>^`7Q8c`VCZ>&9&q{&y* zYBltFJ!qp(oNTOf4oYh*E-u0g0x(K9rl+QE)>@ZSUwgm@wNl`M<7>Y5YY|o|P-^cc zvULue^Sg~PUr`jrvx+=NwOR#ZLsHfgH2Om*0i_gAT)2S2V1OV9I*mr-8yI7b>_V76 zagYfPwj=9b$@V&V_WbLzUau3UsSwpF+KjoCZ2c$^`) z?%cOgPrw=ja&^YX@;!z%B;gK(17x3024ScICN@fzCTpmo4lkyUG(Y*C+UeJ z9AzFs(X}vL3Bd_^m8G|Uc_2>1QNFi(n1!ogy8Um z2eY4;?f`2X&YfER(Qdc@imguPG_7%XEQC8j4Ip;~v1ptP5cmPEKY#W{!3B)A;9~Ff zvpvDV6d#g|?lb;4i`mmN-`S4G3}s@O;9&c`MIWAQYS&GEyXs_H=^&|Yk}hVv2@rR(T0kD<*ir-Z(mn(zsy9sC z#H+qCi3IcZ-eAlzfKV_Yz?lGZ`>Y8V!Kt(7UVB%szvbeTgI3E!{7JfD-X<2!Es*3T zH09j+mw7>eJWF>u8|-ue=E^wF_`Vy+1`e|mOFz@;ul@kyw4CB-ipw2=6H_1(AhWJ#pU>t1edyW@{H^8x|!(PAZ31$bu97$r1?Aaf2+6cSDwgwMI*`@L4< z9-F41bbp`D4hh&fE0rGXe&dJJuwI00YWce=gYL(Yo&;we!jP6wm6Nc37=bJt`dtH} z6w-xrKZI)IF)xn+M)&_lj({^#a&YV~^npV|^AMZO8(uOkzxYMFnK9{w5S5cNibw^4 zP8^C21?~!LHqQO)qB8U0z+`3O-%sFS0JlRnXhK1V-Pit7N+YU7`ub;`d&#YzyW>+u zJU~E8J`Q(62we!JaI%0-W5`0`{0--RW^!usuhKN#Ro8r{wE#lO^~TvAG9i~=g#n_- zi_e{H{=>WO)E`xG7asKhzX3S)%om9cWx=a*=wu5@0q3r7ytO$Iej&|t>7V^9p>1+d zHk6s!XKt1Nsv%#$ZVIos;|cS>WOoC;2tcbXI8^{AAcGMu;EEh_^8&1Oc-Cz2eT_)m zn@S6^&;3>Ea}yA-a)0fks3Zh1#v=41oI7*s=1+g2``NUJfq;NfablVrgisi#kn04Q zEbzQ%o&K?jM)UE09D@!gSN79PCLo}opoC&yX^#L-J9wdw#p{+{a^G$DeW6=)84oyo z;zK)qGU^{N&dUo7xu2%mcJ0lDZZw+TA`AJ6&8jG8oNSY|)kp#6 zB$RP5*6z;=3DT_J;~Zc%HeWno3>8Y@(`VK{xWYe=YJ)V%P&u{yTm1B?U(`ujvg*5i z+K}XrPZ>ZM=)#to)%!486exn)LvXg?^|rn~(;U7}!CA@q_e^(J0fMcLfsIqB*7WD% z*)u;xioE>%w&Z2m(@e?RVj}_r3!_UM{N85aRDqON*DPiC*VFaa6gh>67$_&t_$2){ zVQO+wgXan2+RXo1tKaY@s2a26&@ki-e*7iK?r?uN7fI7`#v7@*yi8T(0Q%UGr81gzzN zk#NTBX|M*WP^j1VL)2lgxlw#8vl%E4OF7nOnw5-@@^~4qAseKaU#P$D>`MKgb0zVkf8Ra8pa;e1F8TcFmK6o6)#wRhb#r}l3iTf_;T3r3d3`s_7xd);FW%d5zv$c?gL|6^h zD5DQ-ZFF9vse(_v5{mH*-hw$eP!KpcbZiGnnxZ}3{@B9#h3_tM31jq7m0)i(wj3j` zMkPK{?>B#01C>j#y7xHYvVH1E-JmZ|c z+c_*VKtD!fdFegNXU_gqo}?vF#D3LjOlht{;HZUDW}o@XLdyb;u=!=_EX(>EFM^_g z$4WTQGkw4q)`#dQAdbGQvk=kb9Q%k1#)E(!_HX%zde4-E>PBjVK!?Q~;3 z-S~P^Fz}Fp2y#ieD?=!)!5G7-)2HDa5Cr~5r=}*q zx8%s$-!l?IN=^#j#|vKgLU^8sG|iy3-j_)!!5DiC1W%-C`tl+#P^nbF7#r58&m6Jn zHX-bV3m1^4DeCpwAJyu$TclJlMql+@IW;}C{|3jW-~0YuoeKcgT2v<{KBdy+9}K$P zW#)NLQdN1TVzVFweQU9mB&gQwTZ_+r&esrY0b@$64k7!p?Psks4M7|%DR0E~WdNMB z5bf6gK^(tY_WQF^aMT&ulN@f`FOL$e8iP(+AP9X_o_)jD5Wo?w_r19YA)p{2An;}Y z5&+JU1NnynP_@>Fyln6$7RM9H2}A+iZc{&FFU|;heFNDqKm!lSsb{}{aUN5vhHC@+ zG*ZgoMq+q_L53l2KL$`|k$a8XBh&kSFN+(>mZ~bx^bI^^1lgtm>F3a4sMp)i{VK+2 z!L1rjW9)DJcnr{v;{QC>#6WTQ-0ge)5R^B~t@gwh@+|v??#AX>!5JtQ&#Ww}9TJPm z9O?>+%QC^Vl$3H`ALSUnEb03G-36#l@5FcLNOa7*QChGtWBn zRgAF0Xj4wAfb7eNE2lTA^^$|bx&7yNhf;MVXjeb)a`TPJX78*O1T_}onH+?600iae z>H)fg9->Aip7@Hz7ZO5^Qx5dfG~wRHi2w-jN%k;0Btrmkfc#EitU;sQ{zN}cU#d5| zix6H}Cp^;)4l-0t>7@{@#>F$wd(Jl+XUl`n{)?Z>8>PyxP>b2Ge@bc4My>s^Za#RO zNqW<80`S>z^F4zH3`U2%8z~S3SXp}Z-v^_)apsEW-rMZ(&lTUHLd#kR2g>jctzhCq zebxV-el}<^!%IF6_ssHfP)?9-X~csJK@i}1)6e@VpL>b2YPi4l7oQm`pEZ66&^bW( z!Sd*^0dPl}rLT9uR1gH{bUGm0wZk(Mf3((ESXe-%Qh~Kvw%hHmGR8=)&4J`ox0^Lz z_w`?oN+p6+@<1QNIfoz!KIfeMyZwIujI##ydL7o-C&|wqr&;G9gg|F&3tJl-2%~T? zH9h?T%9wRk9g@&X+iVwzKA z_V}SZ+mf&YW3j0WxYiJ7R^H|~w=T;L{(i$G!x(`l$N?uW2nZ|;_mIq=xv`$!{$&*x z7>EG%Y6*3ECTeKT39{589cTz=(4Ri@ecB5y@;uoeM*FF=dLR&tfC#oXP4?5K030-@ z*s7g=^;~h=XYD|u2nhTpgOkqymx3#KH)L#~y9$C?tX59FUQw^-$pi;p(Zm8~2vK1i zgdNnq4#qjGoICZJ-exB*p(+$q_|F(rg%Ap-B~+RK&SB;3@~aqUMVh1smnyTvf{8JJ ziT#66u`S-?U>foPd z$iV@|K!gBs^kDu0ASl7vHhEc`*++{(j4|59G0poGF>{!nw?9lL)hVbHcf zp)(j`aOV8V_XI((8pkmXzP&C(R5;;fJUY;jmV=-IbEoEBo!k+BCYCX{$5EvfD5pV= z**_&TrIdt?b$OdSvpjP%^H@JivjfK;W6Op!Ck&ji13!;*0Cg0#b5pM=w&FoI?IU0U zOp`8MgQ1gyq%``nNCJm_S3a^U!EFL7`X2+p7n_(;xKc*4i| ziSsvpUVh=OB+fy6ilF%nsqPIWVe{A`?MWD7uu?zuT>%T%;vzn9KBc5Afuyuha^DEu zC)J0Xb5twU@7vni{8X)0!_?FiR##UMgu$_=FG7I4oZLdI)k2nKm}s|eri=}gln0N` zLo|Zt33x#OPwNAJVT^G!Tdh}RS+=&dwG{?oh*qnGqR`L8@_{D=k~qQI+8PKUsMTt( z1fYweIJDI7t`i)edC&Xy4$?{?s8lk__`TirwbyD&;WM^>&WcgSW)L_6Y-x=wP0^g5 z{>$dl(l2FM3Ilg2(+-&67CyCyQmS%FgH@{oN7<@bUB5{(hAN}rL;sLtTs*w&x!`ea zp_3H;?DWU^>CI3*s=11vcBWVZuAw1%nFHmySzb~pY(VHkuU5S$)+ z4x^O77>91(g6A31$=N^YPp|w0$+IEs1P3!+{u|!#KsYVsrCJASB23Ed{hH#9_%Vyn9F{>^CVUvink8n-W4%99}~2Du{ms|yo|6@y33 z!KNip5=uqYic+$uY_6?;Bj*&9mz)F7LVl16r`HlJI`Crcl$#A;E9?(iw zYva$tQEw;{d$8*!tt={4kugf|+gMFrL#+fAQ7O-Q>Mu?pnVFrzTVe2GFyNKRS?FHUv-9+_&mGuDAHVG zx*`7ZREz#dE_HdUV$FffItOPAY7ajIo}@6GANaCTDTzkCu?e_hb#3)qC@XLEOCGD^ zy+$P|gEJ_=mYlCW|cEMN^ zbT+oW$q5TV1Q_A42YkN~Xf^@FA+`g=S%R5`>Gw@7P5*M1Ww65=IlE8zg?084M5WmX zz$k&S2fNh+9IQ6r6<->utNB|08wzd_F&~1I{yy&dkPw2^ViS3qqj7rj|MM4{|F4R( z654dY^#kjmox!L4N71Dje9I3!4PcZ;SgWRlu?OM{Yp(_=C$Gv2G916`g#(alV2~l4 zoBs6tsimKlNrnR#hgZT>8Xn-&;RVmZ9AvaY6xI6x-Apw#1JaGY8mZ8yT{AL)2|4)8^=bD?J zfBL%IjdbPLzx8GNI;2usGD$yr$L;s^JDszQY87qHVUC$KTM&YdG3aI)e9p1*yyq{8 zFnmlOQsdVFupn3x8LCtdN5~G-)}$c52YJ_*Kb&4%dr7li#Uf`=$Lt@E5Ims`Hq#uT z@9E$xpEpH4uWJi=xK7J3AlII6!J2@RhjcQf&|IMP@ZF#CHaEV8H>zki8H_pR^}`7| zeS@r%fmFk!bMASQgtDCILlUD6@tR~N0Pzn?kmcYghb9aQTX)_OC0oz2)hep9yeuS- zF^MscAlou9>oHVR+q^LK6_W%6)E>@1A-6~r!!Lef1s7ruHScf%l`#fF3GVvB?GN@k z-BXo%4a|>*GLXl&f(T`>GDp(uqS|PzKmV)0YI<9`?2suD06`Jn07Gja?r?F8QUcFs z_|olLpV?fEUl_IOAkl2uR5-Rn1{p$AHXsL^;3B|tzG`yL5BWuzo5RJQA;&~@sRdpQ z;FLLB_#uGDfiGRuA6@HY-&}3Az}ic2TH$!a&xglT?!jz5j;y;0KM2+H7yT)ZlU|_@ zch|kGqB8Z755Zqug^8j=eKy7zI2XA6&RajTwz2xcdbI(MAHS*!B@EK!7$iMZqgwoe zuYBPor>rQHJn-!)P^zdXq8YbEBKX`y`qG5wWmOlhu5a7OB z@BVQ5`07j0tO7niewZ8`LQ~=l#1lCGHP4^*!eCYA@^BOV+bSxv!J!F4%dvC{!F}BS z@SPt^H=lShS`DBffa6w`V+80apqGG#fjoci1yh`hzEX#~UEcoqf3L1FB`h*~2q!xS zMmad;xNZH8&#v`1UeKsj5lxGd%i<2$hgPspDBcf)f;lLorZb&SGo!)T@o~a*?M8ho(HqK?H2b>2j$47zhXq zzyvm$XKz}N@q-xT$ovpdn;naEtQ$g8RO%o%B?zIoSUvS}OE`p14?SvJ;{1lhYLo)> zaL=NxMHoaleZ%=1Z~x3^?<~?70VSYbaBPP#LK&PXpz;JpOUy3JzJm*nWDp;Ev~F7_ z))7+r=Wq)M#sQ8{%q>;_ad$KOw2J%iXaM*vz!W%^4aNi@2QX;|N)ensU-{m!!Y`(Y z-k&7eE(_DyG5`@;awr_8@URYWgy8fPeRW*ewY=B$Lazc^Ys0A=W4|hN4n%mcaR;iu z1w#Z@Cg>YNfnFl*VZ-yV!G{urvAvEC;UQ}rm|(d6>qyt&n?d- z)fAb)T7$Ev&%WCCf+9|mp??nUAqzLm@0WQe4&xuE4LA?5bb9H=9r0Sp36xq;xKc1 z{;dzLZQO;dD0v=^6RJW9pe>LqKq<^V``mYjwaRKbD4{9N9n$g64LLa|K<(k;k8`lZ zVR7NytM5w(YqpmP@G4N@<=DgVbPs{l0)ql@26HoKULS~{pB5!FOCTSHMz-vyIcQ@|hcAj@;q>NQMGO+jgeR;zUr z87cxEwmh`9oRkxu2R{g)^x+*OJnmYp=1qB?-PY@N5%@kPC#O&p`Pdsk&H=vfqd(|l zb7KR5Ll{N3P{yRvM^`1Iqxb?wYdwW7i2zjQa6!1%TRQV9Yk}UDM4mfPI%I_& z7cZnO*N@f?osNbp6b6f@en~c3e?hYh+U-*@6(VnIeN{-f0qRlpP({0x9*a%#-RfcvNS`z)w=7< z_1FEdF$yY=VRbQt)r>a+mBK9wI!{pK2^LPTd|-NR?%in|m&eTgs;2B}N1r^-bAv`Z z{LJ#%=1*t|n0ON?;4PYPv zB{4B~_E#sG(|?rZ35a!vf>u7s;Eq%v5<-ya992Jh;#rgDUu)nn*vO%BTdIp)7PJ|Q zIYyv05U)$*TI0IOv+ta$v_Bdb=}-{O9m(9G>&w!dwa`j|G4?>cUi%(d6qszcQL9!U zFUg{g3swn8DdBqpiwldeS|bSj-}F51($92Qb4VCEArx-RJVU7;~aHLz{q$8p|=&SI3ZXy7K0>3 zFgfw*==yW7qe_8TdmvKmryAS#(UgS|4q6?p5n!c4R&9Qn7~Sxv|{SZ8f2v)}7!3F=(gT|cysO2riu@Ul^&Z7CglNOM}DFPgU#YbI;S z=GQ3AA*$@~H{ko+V1y7Ps~RNEP(=0BwbuD>@u&rb1EJ(V$~#Y1Q6bQd;$x3g(a#(N z)d%JoxNI6q7HGC7KBr`Urn9;J6`WB}!7j^YjAa3p$_qA6k;MblTN4jn|NO7`d!;If z9Wr(w)<~(MLYoJYiQUbN)M&QE-xjI)%HC#ngCIEwk4kQg?J>!byJ%QGq-)6g2^#I{ z9cQ06@iJ{l`6~~kDzlSX0|Br2AQbzSiQQRx*gz_SnrCm#HTiq}Se@oN1&Qh)l#P*( zgMcsw+r5aiAERCOKY4!6d%dz`ND_Jk|4;@{is1e)gADr6oE_;PSEvH5X8TLZ=+@@u z+Sf78!I>C4BRwG$O6Q1^KBn8VpM2JJ&wZ1W#U)9(!x~7*%TSR%U>y_;jI)O`SV%2V zZPsqnT2FVjw!WGO0-ySqrbWgvnXuh_=-D3Pe1KZ5e)06#GcPLnp4=s+v%~zr0gMtv zm6H2JX|r#c;hjuN1<{H=Yo$3?Y!05EGmQ%OFG}r+jBsN56Dy~#e}gizZ2ld=KX&-%A~*1zfz+ie>S3*r5-qQJw{bRF9c+FhRSZ0$ zmj-FZH@!-bZEAFTF=iXnfBW2->%O}%1sv?KK0JK-0)XTp0w*cBM-RnSK`(Je0YMnv zYPFfwO204+LiBpQOHK4~ysWjb#^BWQDTHAFYwZ)YTK$`qQb%qa45eQ2)nD_q2!f#G z;4tP;rnP}q8lLZe##nnUNs{O1d5)-30cEV@V;X~E3Zdos?ujR!Kpe-YRIB$*Pffp= z(UPx?v4efb(=#(qzu@0*0P}(YaAS$l9wF#h zi_NTn7X*$jE#6dQ5>Cpa`)62_1dd$dUpi{ZCRBlZYWioZoy~t@lLCEC(5f-mF+njn zCm19ad7{7t$6#Xm2TfK0vN(Fn$(0=xHVpLc$XUk0GX*y5OK+{{_+>%TJCk=QqKWZA zRhS^ix&}6pU>?PV%JNN8J2;ac*+0x0NX3T}9NVOYhrflg)FbR=&T2mGfCQ75rwK;CfPkV8l_U_pkHyoKm#IQQ=H}?%#+8JIlpOi{wXWn`T50oF zCpk8XBojer6>MVR$;^@?oXsSj2RrDX=ynhUo>`ipFPBn7YBz%LQ?7Y8qUzQ;heGC< zpIQ8w_4T#4=S2!eS*fZrrVLLBg)$0-%)z<9+|0r)vdEFk>`=JwCwrW-$&ra9+b3cn>_wY_}fIl=%$1%>P@~(Rk5uc8NAffUWo#7t7jOiEQ3y7gBFJeCT8a8Nz4Cf< z*FFEUqckE$(4Z8B8?A5}A3}Flr2#Vr{@GLC&lT zOf^gf3ya@fyZ7FA4`L0E6NEm69`PZbF@i!mbYlZ93nYun|K2nj53oEdnaoGAg9$;Y z>~Tm8^V8EJ6!)-MU%GiQ?|)8qB)I28M0DiRV3ZT6)FR)~2%N-f?es5aVf(YbPH|vO z*WEH08A`-*0m8^pR}Zvx2%-op*IobeyFdTgPs%KT&lm_}0NM9J;d#V+l@AihoqA@{KgN2UT?4`B%`AWRy`3M)}eAECH;t zsD-uU%<`G$qMP>+QV#+3hSIvD3qYK36t+N5 z^+A+D^@jN$kJ^oURGfpcqpu(4hSI{Ez%c?hg8EQdg`g4@bLUrH{rDHZ^cTogIpsDE zJ`OUJ)yoy2HKuPk|3lSwC86PUuH=x7vL;<~9*|8BN6^@T*H@c7a97iDG7O356uuwWy~ zy^Jx0QFK$BB)7IFCoza)^!t4TK`^q*073|gqCllu#nkjP@=~4TUvS30pp+WIE{|G5 z3@HLA9oo_BXX7k9&qI5%eN&cYpV->mLKsE}!w^!+kv2Iv=g6`Qovkf6=g_D(-VsI7 zJ#qw>@B3^*h%XMc@%|GCE@D?fc9%Z6Wg< zVZC;NwVS^~@@!bBxDf=?;h{h}klew_QTWFJDn(qM_j-rWj zIk&?AoxTN03dnl>!FYP+7Oo3yLk~uiCAW!$+~~es6=T3EpYH|}A8QUazB$?CsEZO8 z6B)&21zl4wP6}C7}z9ZF9>Wd5aNOCP5<=jFupfBl+0L zmPWO~KQgr#{pRXJy*D$z2f~9PSv&@vN0i)^@5I}1U zT1Z$un)MTFpcUbNOgHEURy*|DX>ScggdmKUoE9VTPkDJ@yQ?U2g<8#jyj5}UPIC=A zqJxYZVl1_mP`ZH8qiJdn5{>r6)bGtq&ECAa{=|)paZtjBWP~G%Kf?_qjYO7bXx3W~ zEX*#wJAQ1f^<9Rv?_6{PWgy`!};eJoL|q8qm%GQULTmKmsSSTm5JY-t4zKALVxYsc!z zu`%cs1%&6Ly|C~qX*85lBW>bZ5a=Pth#pmPu?|FO@a4rfx;XjPG)~)FjABlVPIV?A z1RKVnD!)X2JH+Yl9FN`mas!AJ}UG3YNYz1~lf4J3J`%R;nk48)B_ z`igUcZepPl3C0<=7ME|*4seMa=`Aflz^xm8?hz#y>i`(6)s|ix$z+YC1y4H!)kzM6 z(G)>c5M&(#Hz;5{fhVdfH)`WRv^>13%u`;>8Aw$^O9`-xwDI#sWH2RXO@^DWNGGsZ9~f7(xgvE-l@toq<%v$ktCuvQA)~xeNsx zQG9lJfy(04J7hO~ecbOaZ7~m%ULD4b=3+rmfxb@ANqX>tz*Wx7yj*JyQ;cp(?Gi-A zb0dYYIp?4YjoDL6Z_fJhjk*`lgHga^qifJpQgUKs5)d3yOLK2B%9QbWRHR}^Q-7OSqj3OF7+fn@E6N1D!tSJLl zD2UTbzwEbLpSD>B2sX+`036`?4#FQL1ab&fiGqBvvi!Q{-S_(2|)u%ixT~(hcXnE2=j(vNQqn{1Gl6TWXa10*;9h zHaN<|iwFf4uW#LS@8^mysALO*`2Y(6E030lDF;jjTWmr}i|JFfe-pK$I8PLqKid7} ztONA~s5e@&OXGmhBW`)xzVgctiNBJAE`qQD;#c6*(WG?=_u%pbrnd%Z7*=N3zic)6 zXS2eAk5IMFu^~i-dEiWdFmH70$2de`H9NC%{^mQsbnBnyDg&jZbnH=~DuhrNt07f3 zR84u-Pfj%3UrN#h-UuDE-QW;RKtOchCB zOjtNjFeoPx>ljKaoH=vuEv;(n(KJipjq*F*hNy54f>Ti9M!9t%d>_@t_CL+;=>3;Y z(Sy%8DlCAs>d=Qs2L~~Prfd{lz!=o8pLFs#yJNe1oAw?+S(eNbC{f(dSj(h*(&nl5*h3$U%RTPeEdKEE{wH@vTedYKdP)6 zYihkt=Nk-T@F*QhgB^|+yBuRIC1JBHL$lrf$lUVscWJF)tQj_nN5}GN0n{PEt%kC0 zv@$tT!iCYJgtLz7_P#A8K!s88p?}CB@(Cvd8V-*s1C{0Qrzii2uPnaVN?FR{jgkd- zC;{e8S`cnwq=hx3GZYd<6y0Y)RJhrFN#Q60kCl^%L;1pkES^hTgpOcqV1PJBJU#v1 z!Q#R{WkoTR4a5ko?93yirD&bDaAq`Stp!yI39sB~9fC&Q`=&f6;2s4NwCsEzN>zq{ zI3QlrU}=uE`s{CP)E0hTsC@W5qcaW*sR{n_ks5j#AfOJdg0Yh-hL#ewTK$X8+UZ_r z>#G?dpp1i1diWcvVPH2!jw~Kva&G>Q7f+q}sUl5>WQ8NvFm?`-v|ucU(??TLd9qok zTp_Hoi`Ljie#|i8NrBc(Rr z%+D_V{>tL%cjQH0N^*`ef1!N8S}p+Npq)OFO30OFZ8=R*tyJ%{uu-SK^^KNUaKcM& zkwZ$O0tAjY49oy=F~I!n!hc+xUHpZ-$euK5F`E2dCfQ1*Bth5O9J(HSdVN?*6Y^?s zmvd$&@ASVqry3#iAP9pwM1|a5eO=47LS|6*f%)Ucs#ZZ!bbjDl>6Z!;w z5L-5ZZ|KPKJFJB&B*IE`(Ktu)jn0clqN=hD)66xH<_M?Te?EV13Y_i~Bn(D@tGPFsCXlnWo=a*J~ zSjz&|*pd2YyIxr28otwz+K#OLvBsA1hga?;gxJlr`^`iWh=7$`XXYs74?(`AkY+g+ zo3rme-CFwbOy}kP!U*#hDbE=F2P|w(Ks|CK)vPDkko4d4#2o;sDy6@n(WoOy667UB z<51blnDUZtWn~4v??VXwAHp#FMQiO4wL7|J&_=`eeZ1g>FNE*=mtZ!dGASj55O-Q* zXVWBkVV)NVf&fAYXsr)%*0!LO!WxT~&o&1uig839-9Gyr_(O9_&`T_e zZU)n+KHj_T^fwXf0IlI18EtMK9x_l7B?*}w{rMNpAr6`!33dANFpcM>u&f)0%YZQ;5ecWphX*w2#~`z9j@~J&N@_^{)du* z{()?e);YBxqJqQCT$kEzuGoM~V))fCIrZGBuOx&RCC5N6s_2J8* z9G|bL5Zn)u?f0)7p?llJ=d>X z|59xfw9$t=(Ou>Hb)^J$t;RqpE+1e<_2bH%5==DyM91lOrh`G-FrdPNlHUmSK&z1e zV3cA*_0doJ2*OCWu3PzPLP&14KKPBuUJ|s9z!Hm3vxm_oDSXFA8r}#1Sc|Ap{mVf= z{y`h3^^$O!9v(qLNy)pB7NC_NUVP5^uOx&TJtRIH$BRS^CBfY2Q=~H%^;YYXSy6nw z+UlJHVM8d-AqwbHMgoWx&`-hZ)s2Pgu74o_Xr(VnCy&bP@Xuw>AfgUxw_BQ1hQu^=%i>>>yJKr_WX;CHPA-mN+i-Kj0`U_;|Co~ zPCz-qNPkGlR49b_3n}HRD5bNNN`zjodr5-)paqGN5(^9SXf~TrT3v|3=p}C0m>=~^ zYXcz!Uhu-NMi_)B@?x|X@W#Meho}<$iIVb-ah$ZZHmFo8mm1&)X>tH1!Rz|^I=bC1 zqA1ccGt(~wkZYrd<vjnuc@mxrfE2gOTLI)%q5h@%)sl}=zmW~XlPy4^eaQe%r! zOmK?A?jNe+P)fq~twm2Mcmxp3^RHxr!Dhwfzck8EzTGqs1i~j{QRyNM;LIUDz3@sg z$S&l)B8+K(T0o%=BBi(uP01|cz67BZ{gs86bB}>#IUFY#%K`$xydi#e3{tLS*pygn zFW(f(^a&bE$O?mB9YR$O;2-7@$izZ+HGFEZRh@bp6&#*Q;ppi7!+0q}$b<(fJTPHK z{}ng~!UdMjU3cR>w|(J0mFFOgfq4h#bQppqWIJSh@{X;o=Izg}KgIb6B%IvoXl}bmYIXE4?e*_rFQ02;T4!F_(4&xj|;9=(6@{Nz* zcFz})%d$z~v4cZZws|)S1vrbT(~Ga=fhUVJD+$Umo)_^r;0u6_et%i#U>L>3{QM83 z8=XfnkN~4VC=RYV#t4vGU{FFdrJXfpgO< zuZXi`HR)!Yc@>Dt5UO&3{6z(UPAsym0-Q0NX)oO*I72EW7$1Fnri_5VK}iK!Snx5_ zpl;Yy_dIb^o@I|!DiJ1H6S#QsBBChTca2C0L7wMmHk)X-+bD`0o)`QRtu>6b7)R?+ zN(s;N5ClGgD1xzOEDK0@0+UnIH)eT$Pru)X?|Yb-m?$qD_W5KE4xZ4H#- z)0_7YA z#z0Dm>FJsORH@bfcQ1*@(jD7g{MHd@W?*1PM>6`<&5;&B6yC|Er+&>`xcFo1oFO0t z0WD>4$v!?OBY=j(rnZ1op!2i;)>f*2oe#3n>tAmN=pjtRD1a#ktH!iKm4T`R-NDS{ z+Z*>j`kUQ>fkz2ACHrP}rxY;SVJo&EnZjUs_FYL7eZlLdP~*z%LkK6bl*D?i{bwCs``=zX7?F0z4uQuQ zC{=d7wIa|&kLCBI1BEb*?w^@o`mx6zy#Lo&QIt@X14zdbLP~P8qJS(UCTC~=OTF3r zuSvHvw)le~$*7hZj@!`@fIj7w^$o(RxNUN=`U@8y?EE|{Iv~^oxW9i=O+o=%z{w6| zVKB8=|E*e`e<+JvkqDrP;FtA9glw$;0yP7yGj1<)iwU3thWZjLl7Ronf>sU zxN@>Z8`$nTQ~}IRlV7X&=5OMj!MI+Iu~G#?D{!Nr&3K9kr4^zu>MYDIe$V|6-}_#v zaxm{;sw&%mSLp(UEU-Ag@^30p_10d}ADe$lMH2#LB$&a-R8*ekpG+bQDo-rTEdJn^ zAN%re#dZKn2q-A*K4--#C=@gj7b7iF%udYyX{}cO&{n!Nw)kUh+2Byx10`%^Dk@K_ z4`U4$2KPmCQ}0j@J@&3{(MLczd@7)w*;oC;2}NNgwp1UcC{UT5{s3!K|NEfV8!>s> zl?PM?LmZ5!;hY&ZtVaLJ2Pwj8<<|QA^uOpo{P@p8va;Y~2jJt_mV}iCkP4NB>EEo@ zYk!{i24jrRT}v zcvn=Zd?N4k#uuNrRa6w9$Y^9@cZ@$uqvC~Ii>>+Zz30M%@5wt7jQb#*!0q#rkWd1r z9AsA`R|S^abH7m))!Vv*cx?Wmyj1er&JSa$ol$a~F~%PEJpYFZseYr~Zll-hK}rR& zFHRZ)r4&5R!`%Elw9(*Pd@%6*|6;5GWo#^;U2qQ0*suYVLrFEJ^`jt!xVK)f|MMj(!Z3tZdSB%a;|xV!U}IwwN^3M5jrR*r{9&)#9bf&t{q5}b3x4VEzG!rd zl~M>U@Zf_Fe6ic>eMKz{(GcR&7(dw~P6|TNHyT@Mih8B;#QAgA%{ynI%@_+rlqxFA zJVTXg=&?+2Y46O{j;C_AsE3%VvzL9{ICoZ|hsp2vM8jWrJfMzm^Gt!McX+<$b%bTX${1wu`N?dOa7LJ@7}s~uoXW)s8&G2 zY3v*8LQ9@|Ptg%wR5Uz&9Lb zObw3h_z{Qz_dfcizqru3@GXs?i7KmtWnaqpwuc(7QjM+hfG z$z8CY^v)^ru0-6;5d@xo?&5Vbg7Ph8##cXYH#jbQ#6Wf&SOAPMK!Xs1G)+HDIekgL z+sDHXJq+RP%_-$v$v3&OvVvx-30cUb5=E1QkbInn_dL&0sZ{X8|M)GKoSH)(Kmnd z)Bd+zTU0*dBaL<*V_05Xx+%%BM|)C2FotL!QyiQSq|TyS6d;6RX<_kY0cXf_1wqCa z6fUc%Pzc7xG9rHECZU{xEic?;zkL6f2C~2=4KT$iiaq?}6M~+#*vu6KWAGN|ZsLr< zDLZ7<9G`zmhzczsDrAfS$T^t6!{F?~jqNYq|9Kfp45*JrxQD8W0|X~XGK)0U5Za)7 zYWX`^)z5jF!wE9h&kPVyuf&BCGu}=mI76p3_r^xr-*7#N+$RX@Y)@4c<`Lw51Km>) z#Nn~l!fQ$BXMxP%==hp?oLg{|g)Q|wFmJrgN^p*a(`R0hCh^V`b?k&kLN+GGL7Hd0Rz=3J%9O zh#TKpwa$Tg4AW;8Z+bjQA4Voi5-YI}=~zn2>4~%eD8B6mFx(kEySrHAPDp&i}i~zYQr#Fm4b7AJq2sm`A%gMVj zer5pR9)m9^j2&xuhA$XSPcOXo_Wa&YWdjK&DEu0O*<*y63IdfFojL9LT1!rWe{wYba*{cgF*Bh;--;QIfudgErLhRZ_Bm_mCV`^#& zt%(-$qJS^NtF_X(b>sa)i=u!K0=^$03@hWkEE%ew%*@QZJkRs>Zm)|l3Q?=oAm!C> zwmr{7nk4A=dZ3hIYI5?XFpQj(5^S9H^Ii=OYe)M9WqF1$2p^lBo&ACPA9>`r`$~a( z-X&#}os)Yx-PThI$`~xq&HrqrQu*Q_%dR*?j<><#tSu$v#@OH>09>AfM&Xy)-1Lvp zM<4&Sb)^wdfrysyoSmCLK;ax#wSiL-Yg(;JL(LY4Z2ucH@{&?15;GBYc1V+23-K0BL@^`4rA>GpOtir|C?0@L_ zjXw+06w+a={^8C-DFQQOw>Ngo2_erAgwf{g;_`PqdjCD|*I5QpVV9ZZcS&Gy7DndK zN@8yL)W5FQ8-J4}1B}-@mm3_`I9P&_%Ea#IpH#t*yho>(8*hI6p4Hzpc@K;S0O7!n z(v}V&3~&lI-+<8?Gp8p1d06GQ7K3!`@n?I2!#E4-j;@}#*DEg^f{1)+dWyW`@yGbP zSZ@=Qg{5??mOHu!Ou)$krn?FyfypWQ-=e_WktYUY{yO1Usl{cjfpd1``TXhmJw>h7 z`0U*D{4YFu;h~?GEC;0wjIdps9E1>9XCZX~DGSU_&%e9XZ2z}3i^o2?x-AoXNj-;* z*FR~IBJwNoTx;$Z@4I;a&t)tHCkzY>c9-NyL1AE!nG{kX41N?o(psARq0W7e{swY=Sykn#`3oiQhBj!Nn*Zsr z8r>%2Y~0!F5;3J2s={F0`8~8bp zRIC1t>?dP)&-VLUXP}QEf2A@75hU!lCF$ z6jEYwYUX#_)#iU6r0Lk>GeueZ7_&`$NyfgVDWwC>*iUP%esy+k7HOIy%QE=B_p~iW z2q0yFFbpv>I|HQ^1n0lbIsXf5Eg0BXKP%@PjIm3EpLX2!p_K4_f1@=q@x}`m9)It~ z`UW@`5P}csES|oA7-Nu9VPkU(N^49_Pye##d7m5%24l}(dp0=oF~C1$nxZ{1@t?Ay zc-~`cYi}o%qAA3Voc*PuCqZ9pbh8X|?e@o)=jMN@kOc_Fhs%0W{2>I|T1cm%#tBi` zekB>mWc%NWTs|jXTmSwIMzQE|5IntqPzo{IP?)K;Bz86{n-ej4q3jPmM}I4b!zPKF6%2ar=s5~vgUI)9@~6d zz}7*c>0vN_%J)MkKpb4Qjv^VLHrcv;a%J*gDyhag`E%t5cErId4VxEZgQ#5j`*I0P zw#cu_j67%kqW(V0R>3D$%I5b|3wXi+V_`avqZs6aN53{(5KT}0_He`!dq zV2m33S7I`Qnd$j==CXLs`o_iA5y}woa2Gy~lGsoVC1Kmm$xokII`=(FmyGJ;-eHuK zB;wLa5NpQ@QMq)8&ove&7k@r2(yzVPz4)z^Qq*V-C7qsoYV-jCL1r_=GR8u4;iEUq z-Ed2;3&7E_FCUZxQjl7~5#3x71ZeCDTAk%JOC_VvREFRLarNwj8 zM_0cGlmRvGG6%_11As-Tnli}XO*QYFdDf}dT4Uh|0U_ge4FG6mp{<2Fh6B7&DHd8Y zKVRhXxfeG#Uc)viqDfJ5Y&_-rAryde$hQ=dq`=g~#HY?JE`MLC*yKRQ9DoQdRjwFk zV1j`0<5;f*g3({g3;9yQ=s#FmUdH|R-FJzPg9W6S)`IKVx69Ow5-fiFHc_Z?!8{X-Y$%`FySs>%TKivH zx`@mp$odxO7f`;Z9&gONk|+ge3409D#}Wf;0LnNR7ohxj_Ll|0)cnFNgI@OyGE3o8 z3g!n-JAiFV!pba#A61gc`T5t$qJWa}m|}Bz0}ob0X~sRlL554#ID+Yw_S>_#xH0SX z&w5;d_!Gk^jwc`Bo$NwqeK1d8Vy^nevRS2%ClCxLI0z%49zUL#2f#9d*+ut{(gfd@ z_0w7EZGu*&N~p>epMh`=Gq?y955T#PnOXNTXDy_3$8@wHCEV#LCooC~q$!Zg44&s>es=NYS}RCd98>-(4|#%e_|AhS=2-kA z2*>%k^RFFbgUwW?KKD2(tOE0t12P3g;R+1Y02QwySEg59RpT%}T%DV{Sr!?LDsUXt zvxS9$g9`}2DV(Lp;GS|~t-U<^)*?y2P4|+spcL?TfU1xo??x^GkE1y=`6eTW@%fl~ z8?df~Df)bTESgWP*$L1-xA?uqAbF|jr85Xv*#vSsG&oXKLU#fWt(Ey3t+r5EaV-AX z?k8|cAv_9Ya4cU6Wx(nAg*U`$x|zgTopOSpDV}zNN+?A!P{;-a0^h?@d-f(JH3}t< zCH^>9a&Ty+p_PSW$5VBcoJZs}TB*$-487U8IXwEvBVdd_DJ>O6fvKr!G@4B)DGQJD zS2=5sX)Xan{uBq__u&V@$V5T*Y#4Bk$;tMQ$MN9J{XrkX6KJ>FPn!_+gokdYi*Ba_ z-}BIDG+tjw38mCAHCOj&aExof#%hBo2r%Dn|5!JP-#<{Q#Cl%A$H53eZY^T1p^U-l zx%q!ysYG`T@~m8B4#yKLZQ03X1Y;gJx?*=34eI*{7Uyo#_doQxjY1&|1R_cyhyD>m zN!TrAz>Ni8oO`Q_!Urz}XLk(K0z;BfLMb={G&`OJ%d~=yd^?WK8sfG($m-C-^XHAoWn5j*{bPI+2nU zI*2M8vr8-A`N)0uyiXSe2zxRg2cZpp47jbrMo%!ts zN6F;N;K=c8Fl_)YpqO9AO%L9sJ}WzG@M&-vssey80h@GT`kOF@V_^}uM1g%cAC!mp zmTKq`rfUrEl*p1b+>M{fULnMuJ3hfn=WO%4hQ4UNPk zppN3q%$e7F+#B@s{#Yb)cW!W4I6}cd!9kB_q?iCsDTGmNZDR5Cn=ame$9uYR0FP2s zm=8Jhk01=G$+0D4IHORTUU?@Gp32eza7_MzGcd%#lClxxjwS99Xrtjp0UC2tZ`7ry5sszgw#tPcejNYfOZ&K8^l>W#)b0jNQLfMe`!T)n~3AM#u{ zY@a>K!#?MHm}C#XBUPTFRd0M?qS^ZX)o$loC}U_4a%oiD0_YE?H>PU!&n`|*{!48P ze0KOkji4NJ)J9*zla`Bu>>7U@2+|^lPzLg98Em-e387$&ffBOw*x-IYYo3EtqtCO6 z=6_PF8{fai85TVXI-I08aM;imR!VrS#$WoA6aTMOswCw&q;JZi#+A(F+x!%EcLLAt z21k-O6augX_U)e|Yg+en6!pr-*?jx|sXns)){e*Eaem1^0MN-TXeyD;w?0@bw0_So z6cDgOEuZbL(ijJ&&1F7~J-ZeLagu{5`gDlMQ~cwG{^3La93|fom0>HWf6%W^ynD8@ z@!d(6K?sUV+tvc{mIluXY)(%8!JygtA5~S9H!V24f3&gC+Q4m(6AyVLcJvIjFc!$O z3~6kxN;10r7L-yj%8pDZnI$pmt%>)yCZ}HCSzCP-7U}OQ6=cqQCcekcy z-ersd6GtOO+Geib#!Fru$6Ag^6F~x7~9wwgzPb38^m}%5RQxk_Rra4!)KTo57>+Y7;plUOc0g?lCEw#sn6+H z=}kL)f9$uatGny1sy^q2uJ_cszgPF_be*o+tM*>u*=s#33h>|7Huzt=|B8CIIKBto zz6pR8HbF!89v~YiG`F0eTHAL1mdpY6h@6l{E4zORyF6?Aj9M(?WC%0tpQ{i!^+HDD zwolHv1w7ib)|A(#ht?$2k|IRlEk->NPgry*4DnXLQ*j(HG(T(=zKTY!# z&O?)q*$=CYKI7lZ6*QWnGE4^0I-5x{Ix-6*`@HtB=U?r#cmCl zuo!~Gshh1>#~5S-Tx(zZv7Oe=kH%>Xk9!ZP9qUiDR#ra~_NVMNO>5iR-H-c7Rr$#A z@d+&^5pZ7U=Mn5rK9uk~Yd;VjZ~Xr5gS%gPz&RX7V8mdIfr7z7-b0%7QE#n%ps{iF zuNbA_IQ~QH2LP1OkTO5v8!_eak2VaNfNYo|;X}AH5)3NdgNPu6z^OpxAtdW32pCn}4zY;@$rR!~CRGWwbF93B)P9owc8AT;2HF zd7gtj@z8dU0L$eg)!4slqe}sSkvfJ$iGF5gOi?k`9vcgU*z-kr6a(GMV>H70Pj9u? z|Ms2T-9MJ~1h}w7=EeY|f#g^s9wgY=TK|!)_0A6@Sq9g8v?@S75g*!5qG$Lzg4PCk zo*~UO98NRrkKOx>F$iwCDe#DpEF<=#O6wnxQhwF;&NhaF0c4(mnDvcUuU-M?3|X4} z7e@52^s7MWpr*u!W#4j=BrsaxV1FNsF$@QTxp*2Y?2izl7!vVt8j6QQ_<{ce^+x^o zA08fk>Hfh!gd@P2<=aw9VgFzsah#ytX@6jAYwNqTR^a^6E?T6N$n(tZ(FILt>6qC6 z{R`iI;@q_^N`@5r@er9*;6&iXmwnNlWMJS52TG~vS6_T#f0*Z9)ALXh_5cl}L^n$z z7{^<0+}I8rcQ=z4FRi0ulSplW43~4%16y)w$c~pPTmOh;^a(FTU8wRNIkNrN1cN-6 zh|>hA(qJ&)j7{yYUFfq54&-V*{@6rr1vB@8% z^pFaIM*~BE$2n?&565w!0WikPH&Jmx*!(R9P8%>O=ITdEi9wuTkSlNk++xFDR6k?@ z?JyX|(Eh;7&(mT2RHNl#E##mA+&DZ+fWYnUz3KWU36}C)!dx)<8ttFF=$j8+jz-Og zaD-*O<}*q&ic`q8BU?gR)}lfL(i)5mvRq;qC+MdNoB^(2c*p|=Ed&eGmZJd{W^Fw=CJZyMT4czwu z5LA{R8w|iW$F--PdD07l7xOH8h}@kD5-7Vi&IQ6+9b9lrg3D&yj27Tf8hsqJXp{mR zAcEFb|4K;=2LtFl12O*4GuVwW5Uzlhy7tP4Uf!2U;ySe!$nV&nCx^&~N8rN6m1lRh z9N)PwGxbo|hA}p1CIHNF;f1vVL!qH6OaH#@F)1!Vp19i8PKO(*z&} zCiuhIX9Ea_pcK3pKOmDlN#V8Dz-wCoG3enwl7n3cSL8RIqjlj@_o1kfiau5?rL81% zJ@~a69LKQ}3T9M;jHak;|MZW;f3OP`l#hwk+TPqrnIlOOnlVL%igp$QWOufgL*4$V%@EQ2sp?FIE=e+7{|s_ANPbC)Lv3q`jGLD zDfW+n%Uv{T4R9`?p}|;rUC($-Z17+3F@AuiDF;`y(e{0m!f-Hzk=owcKVt51_SL7v(1 zzFe?}JzfyP0wurkkr!U-9uICb)&Dhx3z+eu*K}5*&9KCKAgTVko2sp0$kmkog2mx)3`_fAsB~$Nv5SxZt>X^XAPkieApM?4iz=9mAW$7>zIt(dl%+IkzC|8GH7LpZJOAen%-J z_r%q!BP0t_=1{o=8H4We5qg6G;#?xmQi}?m=}%h7u}F!U=MSFU-hRjXUw-*VhItN` zGjI@wQbH?@r?#(rO)H3Y2WeufA}(}eVUQQ7TIhNR3vi>}Y!p5J9F8BrC^Zw{xZx$J zbA`Ob01f;?V+gFytQ za&V)dWrl3n$I&3Q`ibrNavgDDLqw3sTo3oQu6)VO;S0ZzA7qf8HJI^{gs&uSZ(jMc zc@!RaX?h{>XY^gAQb8La@?2~;JgheYIAH|hE;I<*E!WQo;JAACI;iKN?#WWaETx3h z8gY_g7!Q#Qhse?tSrUU70~g}LiH6h$o*(2}H*Ws!S3dk3|2|J+u%ZG%rA2GX^&8(9 zHk&V|@ep)j^w~Ogz`*qb2+sp|eXO-xa0|y0I&L}p{s`cx--Mb0a1arsQplx-R0exT z$53eunGBG|vAuN`7vrcP*j5!c4Eh^4H{WsRH(&mLRB{Xu`9EfaeICe3$6QXoLEV4LJ33fP)B-%0L-HDs%LQ z2~<45uzQR&9$Ni4P7!Qe;I;*TS3|ma-Ta|fJ|zB$JU#&N8kplj9zB4`8MdC~zu&K; zn+`8X%2w=UC36rAyf6fh>Imu$)S?icW19v%hf2AR#sJ5)8}MBpDhQ?rlAMsGIgHfE zvJ8X%5J{FGPGclVJiZmXh=C?pJlFSJT;00%yFdKGhkhl^V+bZdU`S;Gr8TzKul%vV zkFq!!f?u$;z*f{LXsrScx zhKSQ4hFOd_i;MWjxv>8-S|e~nJhS=qm;Tx-@Bg`e-iPbj5}#PbkTS z8e^CYL5#r_&c%Rw0w6WqAj;OSKl{6Hef0f5ag+`a2oIbXjImSt5?w>ggHnKl5kp##{AN-?9qmJ> z5-PQ$#~EW_oL{i@(YC5Mq1S8O*!haXkG%YUBgs#us-zOo3ax89f6$GB2YH-6RMn#@ zh@0KO16&Tj79tEI1fC0r3;0fOj$H68z=5kF5DD8dGfO{4BhC}_h6Ct0N7@@8OEODF zF2sf7X9W!>@X)-m_4P*|eCeNHnAx$qoB{n5Fb1usuKYfy?)S1`Quz0a9WXue?~w=i z4!nARdaVxM@xTCtZcsV~dUTwwHx)J=ATGWC;>c7A1C2aSF^C69hAHAff_RXCaSkCa zo?pOdxSofb*RH(%L%ol^KR(PL91cdddPC<5J2yA}XjBWb;V=ff0N6dUg-Y6LpCAkn z)Ln$N0JYHCXK284LQBv)1K@CO0%-%_etF`ql!DUA+MZq?y?zh9UJt!q7ep55xM*vQ zF~(NL5`9^kWk1_qTf^So9*77VTU(>?sNbr!{-Ak?x&%`I!p0cXYBkiN$o{)gha(&? z#^Ac;_GbieJp0^p^8t>cjMZq3!Ek_sg998M9N@SZ-Rk>3h)jKDSX1vG_h7IgIY43L z2tg5~V}y(b1qBSGq`Q&s7&1^=1VKtd@CTz)q;W%$?k?#V-DA)G&x_}J-t9WO7U!J% zeD803LU=OTA-vtM294fbI9jF>xjr9SqVE(XTW1HOP=gxQ_Fn63!3cj@P7EE%wL_sJ zrFD2MPECVif z+3v0WCf_Z&y30hfP4Al3_Aqi~p$#hwm9)v>HN;&58^+F=`Fn*WAyG;_b;SCE#C~#iS|y&u zr~zyhW%^)42>cm@rN-X|XlAm0_SX17DW+uSn_8B-s5VIrpFWY=!BSpbU2Xi5rSLU4 zdl%=8P&YVQ$Ss=)8*TPGwhgKp6X9bx&{$couDfjW5gGjPLUNc(@DH^!3D&q7*_WjH z@0PfRmKXWw*_3nchcJR1Df~G}r%O2UC9R!g-d!^Ka!J#&iQpaksH-6G1}(baj6GBg zqQwu5S`yhSM-$vl&h`jRd#zF2N_SaKP0$4Y%KFo}h_nysQA{GeZ%cDE?h`RD3Fyr5 zFLcTD+9{jABb}yvjTElFU;IH(%d89wDH7cPzx4Gl?cHNmW=DLYOBz3J9gnF3tWLiD7sXyoVgiQMzy15%b z9KB6W;;p?G)_<@;cL17c-}D}2Q+a3=eN82?roKH+ui@j7ZAn-Jh;ste7CV~;{TsaV zAaz@a;aMkqS3z?S&T5lB26`x|?i{p&V%_UEEy5o49GgX;kXJ z*_-q&G?2BKUtu%(DMbQt+Fm5It}f33svb^HYrEuh0ZjBpCv}3 zM*%qUXLx+$f_O4T7Dkk>7}^|!68Tjvk|I@Qaf zhFlI+)U##7W)RasL6{FmpNbr$rrSoHY6$~Ey&|bU3y6}(nD#runSD(8T%8_ClPv

JVRE-K81RUbKAU)P=1 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

m=G6Jk{JFi#O#6`R;|(sIJpaEH2FQUz8m|-h}Gb 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

+PWOqNh!VN{N&o; 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

&0ouuJw2V2DI- zWBnNq&C-W4tC|o#zxt>)Bc*R*322MfU~oHg*r-UdrN^K7iq_gd69a9QpHC1=uvs5G zJI>ONWYYr7A#fsAHV2;I?I|Nri9sc>BuO$Jjd&0Qh@$AK@68xPo@dzK+Xn#D>$PVZlp{UlEEG5v{~-v35NI?S zf70o6f9H|?y)SV&M}x7e7Fy@Bu+ySIqh5co)9!qyCIsy)pmr4x#Ddgo zm(cBe4}I|A*Nz+q5hdmQ_z4O>05H@Vst^b}tq(cf&M%oMb+2kAOX3?pwr^s zkOPpt`X|y+`yI7=F5WeBIRZw&o``U?g1*c$1C|sJTiy2-Ywh1%NpWL-8v+3w4&pFa zYFDz6h3Dr}zws;G^wL*l69>*U2&E_kl9>TZb4Mz75}sl=SoZ?!*AWa-k;EmxGRz+4XE zxgaZ;SF`}ax;tyH7vKEw$C7VzR0`tMuBg~Oevg&1usIsN<|jHE^>+xNRuBv3MKXXp z46etZsa?r?)*9quCpO>r@I&;~JRX9&5kQ`ZaI}Q~n)m=BQ)u;qziW5tuM}0W(XQZG zf&h-=!Sw=Y*I$W$TFvgqx}E+zAAI=!I~^{-C@+)Mt9)Z^6!Id&T5sbodaeHNKdNoPA69yt$>%V62?vMY_SjO-eugXzR^zw@a#ljT_eem$Hv*1F#^x%+`{g*Jd?*Zzpo09gU2*Se><-g~Dk zR#4oyat*r3*#`|$aOA7>@#v}E9?+0dg-~TE&P9>{*6_g!8Ni3S=aMybuY^?Ww zO=QJt&iCr$xQ>IseS!pkNw03$`e;Av{O9{FK6JY~bHJ}fI7$JPXk=-D%|ZXq`>pox zXGIRW0{;+dtLgL-Jw{e>|1t)YG7v)EX^eSozu!kZi|6Q$$1NVEG}hPG;kh1^l)q0n z`E#`*UI}9jtg+yn!*e~jOC!5~^viWU(P%VY`|v{#{lL8VbG7jh#yG~~G14?ex6}E@ zD6D;O)y0i#7C6{aV6-J~z@Xo|eKeasJQadDo(GrG#}SSa0K!@%#y}Z^X0!3bzULv$ zvL$`C#}`)!DZ5`~M{EVhW?q1FJ8$HZ>5J1euT7YTK4Vai@r^?WCdOc*G&rLmo%U_^ zu=25r3w-r7wSiHU;KB+ns5C1u+vvQ)KbYQbQo(23Lp!L*YRRLYU9K&PTmzhAI%wZc zh+WZWLG@t?IqWnqlLY9>M?$s2UakMqdOG_mk_hB8im=I`)a5kV0$`j#W)@;1V7P<5 zuyY41NjX-xeh7gv3Pv#)x|)L_PZKmd-5;3@4_+5fCg&)3KpppS&xcT2!n36SVHCAy z^E>DNd_@Zgu&k`o>k^^0ikvG?3$zE(+hzyRtFq~=<2eD~)Bz(Nll(ZaDuF3x0A*+m z!rKWeVe_lFU(DxDO~tWd^lAzmd2Z2Z+c!+7{6%@3N7NmI)d#Tp3PMAR61|a3p_3^n zQ-hC3`wUj*a%l8-}xk+f$jraUBFSs8AeN-Ysa!y`fTs zZh-an`kmGoP)b*FK_#%DbnYKOuV{aXG=tx1zdahZUOSsjwnOfs?gWtLO2TUkPB;>i zVI~qVO28Y@ca{yQ)tp}x1hgWlHA*iX!7-03MVh18@4Pi0PF|sBX$KA~RaG9_HJ%fT z3I$MtR=<5aE%i26bHSL?r6};RM6Iu>F>e?BTa$Qw`Unpo~0vj@kn0M1$lK

S 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 literal 0 HcmV?d00001 diff --git a/views/public/markers/img/markers_shadow.png b/views/public/markers/img/markers_shadow.png new file mode 100755 index 0000000000000000000000000000000000000000..33cf95504706aa9d06ad40dbcd2fa168cbd43d13 GIT binary patch literal 535 zcmV+y0_gpTP) z;YUMJ9LDj?%v_nt)m$@krAcNsnI+jwmXs_h*_0I1l(LjkN~I{3^dGP1#rMT==4>za zro+dw-OhQ=@BYr2==b~ohHFF&QHddL@L-x8!b2P}iLwT)VFmCcAyeYZw4@|J+LCcd zBgGt31dLmO_yhbHCxp)=Gm?{e$xA_shLS@O1<5l<$ejLQAa{^JW|?eJsqD5OfsQDHnvnUgXTZ^^E-W#7^^w0LeunzBK-x-1c9PO_|#7#1eR0~!9Y z!2%sQlb+>5&iSp&bH{QZdu(Ej>Qp4pD-WoO$C{C0VX~C9$pY8%D9?sRxtCkHBG`!> zQKcqTS$0*#48qYK2$PhMvhJ|+CwZ4|`H~NLBh;N-${9iS2vRqy5lY}XMaDhjcuj<1 z$1eo=l^^-!y9c?VB8ReVRHG<4=JM_SfPLu=HZZ$bpaDDV{*~&y5~4?lwrtX0i&kGy z3FCsZhVuqCs^fD6tCanezPTYpmy@)`5w1{)SqaQL#BNYNM~7iVjaQYI8jH5DE$aj= z3ytaO32~0mVIoYHv@X61ix)=*u*SGyqDG*Uq**+qVktt$jsrRkUQsMcbX>z|j`P_4F?%Q_@f8Trt_r4(hxNiEFbHd*`e3wA~&9LoB z|JTX7kq}paKe_vc2M*ug64EAp8fjKield;^5n(28CRtDv6+dL~Fp+@_%zJ24`YVVq zBpE?@#aJOC0|_EPCT%8Af=BS!Pl8hiNCud49YlR>}1Tb-#*dPo+ z)$qjd<2BSi`Tw*-+e7qSQIZB2F9|{pVj$PjAteZrRFvox2~1WdF&r3yIy5pE{RB@l zFz=xq`k=pIC2L3tDv2DDqf#RRd?YC%r9h(yK?V}y#2Ne;Gy~%>VVE>brD8req55dj z?`V{SpsL6rIix0C3`wz4Xz)=K5@jHwsV3J7Ob2FQ7TONa5@{P|X@8nNrj3)41?_i<^tV759Srm^CO?9y)MiF(vXB8C1-?G z4cXS3j7SqpABu$-r~P)!vew(g&Y!umz$z!D6f{YWcMIh87s;8WY?KYzKA%uM*i&Y{OPyGq6Fs zND?_l42fYWNsXzKmMY_qTXxY&%XNuCjBL%1X}m$FZ3eW=ptqRhe&8VRI&f&=b<3}T z1K5LI+Cvh8kVC&qEUWpL7FA!ySwbVa=-RE?Ip857O-z|6KBeO>gNjo2nB;NbByi?% z3MX(JI8xFMkh^EZkQ$^&o$0EiOsQg9XZcj)^09RVjFdDn{Yp#)^G&{$dE&gm1P+<# zo50(^?-~5Y|GnjX=g5kJ4kbN^VM$SQ){wHO>Pp)zora`@9f+DD%g0H|4aC%l=nOl; z3IpF~a_0zmANa#?!RzmMPm~i=bVOpJl${JAOZ3}STl1s{Vdu#uM5J6@UE$=qt=bne zOO#ic!0RXl373Hn8eaQT1d$*~&9M@*tCr6TzJNuubXrJ>+i}fo$8t_#>G&xTG05@7 zm>N@zTeV8eLY5dN|5xB+;BWZAYf;QQ5_3+{jxv(6ri46KLZ(HCq{JNcNr?!t7gbh< z6?4zvZ`V?Mn~s<_O!!hufsZON?^RMxV_hL7+p);1TG9)2)Y)X*oMdfrE&4wW1rZ^n zh!Hs)@aVXzcBLN0cav}WloVXV)W9Xni`qg;ST?c1svT!ZEt$4mGA1Exza}AW9T6Nc z{!;Q%!?!W0&M|Y;nRT@*ovGq`0U|^aa-b5jo*|^;FBv(Hq%Ilw&tHBqg51N%A+JVi zrkTVtliOuUoFL!~ObubVu+t#7r_Lgi=5S`W-GTINSA^sclX#_x7zR_~TdOmHw%VOG zMGmK4Io0k^6jY~%^!?vr?AuzkMzhjgZiQ8>@H*G=ssxgX6?CU+ywRihMBIh2`n_z%eLT1;Q&-3)SwdsU@p zOzw5n)gm%XGRpSW-lik(1F^doLuy10r(wDOt*~=EVe(*Z=-Fl+8U1cCHGf}TjQ{(| z$|>1rNs5Y1hb^X72z)JK?4eJd957LN%xWK Date: Wed, 26 May 2021 17:50:11 -0500 Subject: [PATCH 018/183] added walking tours --- Leaflet.awesome-numbered-marker | 1 - controllers/IndexController.php | 26 +- views/public/css/mall-map.css | 7 + views/public/css/marker-icon.png | Bin 0 -> 587 bytes views/public/javascripts/Polyline.encoded.js | 233 ++++++++++++++++++ views/public/javascripts/leaf-green.png | Bin 2750 -> 0 bytes .../leaflet_awesome_number_markers.js | 65 ----- views/public/javascripts/mall-map.js | 160 +++++------- .../javascripts/src/images/markers-soft.png | Bin 41226 -> 0 bytes .../src/leaflet_awesome_number_markers.css | 99 -------- .../src/leaflet_awesome_number_markers.js | 65 ----- 11 files changed, 325 insertions(+), 331 deletions(-) delete mode 160000 Leaflet.awesome-numbered-marker create mode 100644 views/public/css/marker-icon.png create mode 100644 views/public/javascripts/Polyline.encoded.js delete mode 100644 views/public/javascripts/leaf-green.png delete mode 100644 views/public/javascripts/leaflet_awesome_number_markers.js delete mode 100644 views/public/javascripts/src/images/markers-soft.png delete mode 100644 views/public/javascripts/src/leaflet_awesome_number_markers.css delete mode 100644 views/public/javascripts/src/leaflet_awesome_number_markers.js diff --git a/Leaflet.awesome-numbered-marker b/Leaflet.awesome-numbered-marker deleted file mode 160000 index f7b5b59..0000000 --- a/Leaflet.awesome-numbered-marker +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f7b5b594e9fc451cd006ee345220a86390eb1cf1 diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 2740be3..1e4137d 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -130,20 +130,15 @@ public function indexAction() ->appendFile(src('jquery.cookie', 'javascripts', 'js')) ->appendFile('//cdn.leafletjs.com/leaflet-0.7/leaflet.js') ->appendFile(src('modernizr.custom.63332', 'javascripts', 'js')) - // ->appendFile(src('leaflet_awesome_number_markers', 'javascripts', 'js')) - // ->appendFile(src('new_markercluster_src', 'javascripts', 'js')) //adding this so that the mall-map markers will load (most of the time; sometimes it breaks) ->appendFile('//cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.1/js/fontawesome.min.js') ->appendFile(src('leaflet.extra-markers.min', 'markers', 'js')) + ->appendFile(src('Polyline.encoded', 'javascripts', 'js')) ->appendFile(src('mall-map', 'javascripts', 'js')); $this->view->headLink() ->appendStylesheet('//code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css', 'all') ->appendStylesheet('//cdn.leafletjs.com/leaflet-0.7/leaflet.css', 'all') ->appendStylesheet('//cdn.leafletjs.com/leaflet-0.7/leaflet.ie.css', 'all', 'lte IE 8') ->appendStylesheet('//cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.1/css/all.min.css') - // ->appendStylesheet(src('MarkerCluster', 'css', 'css')) - // ->appendStylesheet(src('MarkerCluster.Default', 'css', 'css')) - // ->appendStylesheet(src('MarkerCluster.Default.ie', 'css', 'css'), 'all', 'lte IE 8') - // ->appendStylesheet(src('leaflet_awesome_number_markers', 'css', 'css')) ->appendStylesheet(src('leaflet.extra-markers.min', 'markers', 'css')) ->appendStylesheet(src('mall-map', 'css', 'css')); } @@ -169,7 +164,8 @@ public function filterAction() $request_tour_id = $this->_request->getParam('tourType'); $tourItemTable = $db->getTable( 'TourItem' ); if($request_tour_id != 0){ - $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items WHERE tour_id = $request_tour_id"); + $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items + WHERE tour_id = $request_tour_id"); } else { $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items"); } @@ -177,6 +173,7 @@ public function filterAction() foreach ($tourItemsDat as $dat){ $tourItemsIDs[] = (int) $dat["item_id"]; } + $ids = $tourItemsIDs; $tourItemsIDs = implode(", ", $tourItemsIDs); // // Filter tours @@ -229,9 +226,18 @@ public function filterAction() } $sql .= "\nGROUP BY items.id"; + $dbItems = $db->query($sql)->fetchAll(); + $orderedItems = array(); + for ($i = 0; $i < count($ids); $i++) { + for ($j = 0; $j < count($dbItems); $j++) { + if ($ids[$i] == $dbItems[$j]['id']) { + array_push( $orderedItems, $dbItems[$j] ); + } + } + } // Build geoJSON: http://www.geojson.org/geojson-spec.html $data = array('type' => 'FeatureCollection', 'features' => array()); - foreach ($db->query($sql)->fetchAll() as $row) { + foreach ($orderedItems as $row) { $data['features'][] = array( 'type' => 'Feature', 'geometry' => array( @@ -243,6 +249,10 @@ public function filterAction() ), ); } + $text = "Anything"; + $var_str = var_export($request_tour_id, true); + $var = ""; + file_put_contents('filename.php', $var); $this->_helper->json($data); } diff --git a/views/public/css/mall-map.css b/views/public/css/mall-map.css index b081359..31acc4e 100755 --- a/views/public/css/mall-map.css +++ b/views/public/css/mall-map.css @@ -400,6 +400,13 @@ a#locate-button { margin-bottom: 1.5em; } +.number-icon { + background-image: url("marker-icon.png"); + text-align:center; + color:White; + font-size: 20px; +} + @media screen and (max-width: 640px) { #first-time .tooltip { diff --git a/views/public/css/marker-icon.png b/views/public/css/marker-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3573aa0f2786e5f95ceba7f27dd18a843c92e537 GIT binary patch literal 587 zcmV-R0<`^!P)P001cn1^@s6z>|W`0006KNkl=0sL`YZjHkx`W4Khs-wmVeIiu>SKhP4QCiPY!*4&;6qeI65|ld>Mb(ITYaB`)FSzWn!bQJ1L7N~CA6>r zVG*No!)C6t4L)Cq2?BD|7&mO;W;8BeWplPO^e{OF5TnPqe6=kj0|PCC3gV1WONfaM zxSG-6A}zQKbLL8&pOOSFV`u?%^5;mS=2KyXk|^6xHc{8IkkMFkv&!9#?+j*Xq6VV;|5Fh3$j8Zdy4Rlso8HR^^I}b zEP=DL(m%qhEldNckx4Cc9$_)bpFg}Z`OUuk7c ztUiI}8?Ljn(nzlN6%rP3K3I_W1Ksy{+QQ`c2GbWfeFBnD$(_W0XL2rvt8m4UR>Nxc zYYkyoOAWlOdeX`??7qP36Og1sLj%i!hWg)xQW&g^!ljOYPlzoAaQlLwPrxoC)K_U} zWM*h+_=nH8MEHb|Z}9tqIG;c&HIQSlxR$U5Bv^vWH&nL--6G;FAkimuvjk=l@xB1* Z007WPscE6<*4_XB002ovPDHLkV1jAP30(jH literal 0 HcmV?d00001 diff --git a/views/public/javascripts/Polyline.encoded.js b/views/public/javascripts/Polyline.encoded.js new file mode 100644 index 0000000..957f6cb --- /dev/null +++ b/views/public/javascripts/Polyline.encoded.js @@ -0,0 +1,233 @@ +/* + * Utility functions to decode/encode numbers and array's of numbers + * to/from strings (Google maps polyline encoding) + * + * Extends the L.Polyline and L.Polygon object with methods to convert + * to and create from these strings. + * + * Jan Pieter Waagmeester + * + * Original code from: + * http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/ + * (which is down as of december 2014) + */ + +(function () { + 'use strict'; + + var defaultOptions = function (options) { + if (typeof options === 'number') { + // Legacy + options = { + precision: options + }; + } else { + options = options || {}; + } + + options.precision = options.precision || 5; + options.factor = options.factor || Math.pow(10, options.precision); + options.dimension = options.dimension || 2; + return options; + }; + + var PolylineUtil = { + encode: function (points, options) { + options = defaultOptions(options); + + var flatPoints = []; + for (var i = 0, len = points.length; i < len; ++i) { + var point = points[i]; + + if (options.dimension === 2) { + flatPoints.push(point.lat || point[0]); + flatPoints.push(point.lng || point[1]); + } else { + for (var dim = 0; dim < options.dimension; ++dim) { + flatPoints.push(point[dim]); + } + } + } + + return this.encodeDeltas(flatPoints, options); + }, + + decode: function (encoded, options) { + options = defaultOptions(options); + + var flatPoints = this.decodeDeltas(encoded, options); + + var points = []; + for (var i = 0, len = flatPoints.length; i + (options.dimension - 1) < len;) { + var point = []; + + for (var dim = 0; dim < options.dimension; ++dim) { + point.push(flatPoints[i++]); + } + + points.push(point); + } + + return points; + }, + + encodeDeltas: function (numbers, options) { + options = defaultOptions(options); + + var lastNumbers = []; + + for (var i = 0, len = numbers.length; i < len;) { + for (var d = 0; d < options.dimension; ++d, ++i) { + var num = numbers[i].toFixed(options.precision); + var delta = num - (lastNumbers[d] || 0); + lastNumbers[d] = num; + + numbers[i] = delta; + } + } + + return this.encodeFloats(numbers, options); + }, + + decodeDeltas: function (encoded, options) { + options = defaultOptions(options); + + var lastNumbers = []; + + var numbers = this.decodeFloats(encoded, options); + for (var i = 0, len = numbers.length; i < len;) { + for (var d = 0; d < options.dimension; ++d, ++i) { + numbers[i] = Math.round((lastNumbers[d] = numbers[i] + (lastNumbers[d] || 0)) * options.factor) / options.factor; + } + } + + return numbers; + }, + + encodeFloats: function (numbers, options) { + options = defaultOptions(options); + + for (var i = 0, len = numbers.length; i < len; ++i) { + numbers[i] = Math.round(numbers[i] * options.factor); + } + + return this.encodeSignedIntegers(numbers); + }, + + decodeFloats: function (encoded, options) { + options = defaultOptions(options); + + var numbers = this.decodeSignedIntegers(encoded); + for (var i = 0, len = numbers.length; i < len; ++i) { + numbers[i] /= options.factor; + } + + return numbers; + }, + + encodeSignedIntegers: function (numbers) { + for (var i = 0, len = numbers.length; i < len; ++i) { + var num = numbers[i]; + numbers[i] = (num < 0) ? ~(num << 1) : (num << 1); + } + + return this.encodeUnsignedIntegers(numbers); + }, + + decodeSignedIntegers: function (encoded) { + var numbers = this.decodeUnsignedIntegers(encoded); + + for (var i = 0, len = numbers.length; i < len; ++i) { + var num = numbers[i]; + numbers[i] = (num & 1) ? ~(num >> 1) : (num >> 1); + } + + return numbers; + }, + + encodeUnsignedIntegers: function (numbers) { + var encoded = ''; + for (var i = 0, len = numbers.length; i < len; ++i) { + encoded += this.encodeUnsignedInteger(numbers[i]); + } + return encoded; + }, + + decodeUnsignedIntegers: function (encoded) { + var numbers = []; + + var current = 0; + var shift = 0; + + for (var i = 0, len = encoded.length; i < len; ++i) { + var b = encoded.charCodeAt(i) - 63; + + current |= (b & 0x1f) << shift; + + if (b < 0x20) { + numbers.push(current); + current = 0; + shift = 0; + } else { + shift += 5; + } + } + + return numbers; + }, + + encodeSignedInteger: function (num) { + num = (num < 0) ? ~(num << 1) : (num << 1); + return this.encodeUnsignedInteger(num); + }, + + // This function is very similar to Google's, but I added + // some stuff to deal with the double slash issue. + encodeUnsignedInteger: function (num) { + var value, encoded = ''; + while (num >= 0x20) { + value = (0x20 | (num & 0x1f)) + 63; + encoded += (String.fromCharCode(value)); + num >>= 5; + } + value = num + 63; + encoded += (String.fromCharCode(value)); + + return encoded; + } + }; + + // Export Node module + if (typeof module === 'object' && typeof module.exports === 'object') { + module.exports = PolylineUtil; + } + + // Inject functionality into Leaflet + if (typeof L === 'object') { + if (!(L.Polyline.prototype.fromEncoded)) { + L.Polyline.fromEncoded = function (encoded, options) { + return L.polyline(PolylineUtil.decode(encoded), options); + }; + } + if (!(L.Polygon.prototype.fromEncoded)) { + L.Polygon.fromEncoded = function (encoded, options) { + return L.polygon(PolylineUtil.decode(encoded), options); + }; + } + + var encodeMixin = { + encodePath: function () { + return PolylineUtil.encode(this.getLatLngs()); + } + }; + + if (!L.Polyline.prototype.encodePath) { + L.Polyline.include(encodeMixin); + } + if (!L.Polygon.prototype.encodePath) { + L.Polygon.include(encodeMixin); + } + + L.PolylineUtil = PolylineUtil; + } +})(); diff --git a/views/public/javascripts/leaf-green.png b/views/public/javascripts/leaf-green.png deleted file mode 100644 index 6c24f60f24b0b4b1ebf63e3504946e748f8a9dc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2750 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" + options.number + ""; - }, - - _setIconStyles: function (img, name) { - var options = this.options, - size = L.point(options['iconSize']), - anchor = L.point(options.iconAnchor); - - img.className = 'awesome-number-marker-' + name + ' ' + options.className; - - if (anchor) { - img.style.marginLeft = (-anchor.x) + 'px'; - img.style.marginTop = (-anchor.y) + 'px'; - } - - if (size) { - img.style.width = size.x + 'px'; - img.style.height = size.y + 'px'; - } - } - }); - -}()); - diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index 945ca32..005de1d 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -16,17 +16,18 @@ function mallMapJs(){ // imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; // document.head.appendChild(imported); - var MAP_URL_TEMPLATE = 'https://stamen-tiles-{s}.a.ssl.fastly.net/terrain/{z}/{x}/{y}{r}.png'; + // var MAP_URL_TEMPLATE = 'https://stamen-tiles-{s}.a.ssl.fastly.net/terrain/{z}/{x}/{y}{r}.png'; + // MAP_CENTER controls the default starting place // var MAP_CENTER = [38.8891, -77.02949]; - var MAP_CENTER = [44.458498027103865, -93.15750479388674]; + var MAP_CENTER = [41.9001702, 12.4698422]; // MAP_ZOOM controls the default zoom of the map var MAP_ZOOM = 15; var MAP_MIN_ZOOM = 14; var MAP_MAX_ZOOM = 18; // MAP_MAX_BOUNDS controls the boundaries of the map - var MAP_MAX_BOUNDS = [[44.468498027103865, -93.13750479388674], [44.448498027103865, -93.17750479388674]]; - var LOCATE_BOUNDS = [[44.468498027103865, -93.13750479388674], [44.448498027103865, -93.17750479388674]]; + var MAP_MAX_BOUNDS = [[41.908628, 12.451941], [41.88927, 12.90607]]; + var LOCATE_BOUNDS = [[41.908628, 12.451941], [41.88927, 12.90607]]; var MAX_LOCATE_METERS = 8000; var map; @@ -44,7 +45,10 @@ function mallMapJs(){ maxBounds: MAP_MAX_BOUNDS, zoomControl: false }); - map.addLayer(L.tileLayer(MAP_URL_TEMPLATE)); + // map.addLayer(L.tileLayer(MAP_URL_TEMPLATE)); + map.addLayer(L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { + attribution: '© OpenStreetMap contributors' + })); map.addControl(L.control.zoom({position: 'topleft'})); map.attributionControl.setPrefix(''); @@ -313,52 +317,47 @@ function mallMapJs(){ // postData.eventTypes.push(this.value); // }); // } - // $.getScript("./src/leaflet_awesome_number_markers.js"); - // var geojsonMarkerOptions = { - // radius: 8, - // fillColor: "#ff7800", - // color: "#000", - // weight: 1, - // opacity: 1, - // fillOpacity: 0.8 - // }; - // var smallIcon = new L.Icon({ - // iconSize: [27, 27], - // iconAnchor: [13, 27], - // popupAnchor: [1, -24], - // iconUrl: './leaf-green.png' - // }); - // var redMarker = L.ExtraMarkers.icon({ - // icon: 'fa-coffee', - // markerColor: 'red', - // shape: 'square', - // prefix: 'fa' - // }); + function orderCoords(path) { + var directions = []; + for (var i = 0; i < path.length; i++) { + directions.push([path[i][1], path[i][0]]); + } + return directions; + } + + function getDirections(theUrl) { + var xmlHttp = new XMLHttpRequest(); + xmlHttp.open( "GET", theUrl, false ); // false for synchronous request + xmlHttp.send( null ); + var json = JSON.parse(xmlHttp.responseText); + var path = json["features"][0]["geometry"]["coordinates"]; + return path; + } + var key = "5b3ce3597851110001cf62489dde4c6690bc423bb86bd99921c5da77"; + var startLat; + var startLng; + var endLat; + var endLng; + var url; + var path; + var walkingPath = []; // Make the POST request, handle the GeoJSON response, and add markers. jqXhr = $.post('mall-map/index/filter', postData, function (response) { //response is an array of coordinate; var item = (1 == response.features.length) ? 'item' : 'items'; - console.log(response.features); + var i = 1; $('#marker-count').text(response.features.length + " " + item); var geoJsonLayer = L.geoJson(response, { pointToLayer: function (feature, latlng) { - // console.log(feature.properties.id); - // return L.circleMarker(latlng, geojsonMarkerOptions); - return L.marker(latlng, { - icon: L.ExtraMarkers.icon({ - icon: 'fa-number', - number: 1, - markerColor: 'blue' - }) - } - ) - // return L.marker(latlng, {icon: redMarker}) - // return L.marker(latlng, { - // icon: new L.AwesomeNumberMarkers({ - // number: 1, - // markerColor: "blue" - // })}) - // return L.Marker(latlng, {icon: smallIcon}); + var numberIcon = L.divIcon({ + className: "number-icon", + iconSize: [25, 41], + iconAnchor: [12, 40], + popupAnchor: [0, -5], + html: i + }); + i++; + return new L.marker(latlng, {icon: numberIcon}); }, onEachFeature: function (feature, layer) { layer.on('click', function (e) { @@ -396,69 +395,44 @@ function mallMapJs(){ }); } }); - // $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); - // console.log(L.markerClusterGroup); - // $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); - // markers = new L.MarkerClusterGroup.prototype.initialize.call({ - - //adding this so that the mall-map markers will load (most of the time; sometimes it breaks) - for(var i = 0; i<100;i++){ - // try{ - // markers = new L.MarkerClusterGroup({ - // showCoverageOnHover: false, - // maxClusterRadius: 40, - // spiderfyDistanceMultiplier: 2 - // }); - // break; - // } - // catch(err){ - // $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); - // // var imported = document.createElement("script"); - // // imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; - // // document.head.appendChild(imported); - // } - } - // markers.addLayer(geoJsonLayer); - // map.addLayer(markers); - var json_response = eval ("(" + jqXhr.responseText + ")"); - // console.log(json_response); var json_content = json_response.features; - // console.log(json_content); var pointList = []; - var test = []; for(var i = 0; i < json_content.length; i++){ lat = json_content[i].geometry.coordinates[1]; lng = json_content[i].geometry.coordinates[0]; var point = new L.LatLng(lat, lng); - markers.push(L.marker(point)); pointList[i] = point; - // try{ -// // markers.push(L.marker([lat,lng])); -// markers = new L.layerGroup(); -// // markers = new L.MarkerClusterGroup({ -// // showCoverageOnHover: false, -// // maxClusterRadius: 40, -// // spiderfyDistanceMultiplier: 2 -// // }); -// // break; -// } -// catch(err){ -// $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); -// // var imported = document.createElement("script"); -// // imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; -// // document.head.appendChild(imported); -// } - // markers[i].addTo(map); - // test[i].addTo(map); - + try{ + markers = new L.layerGroup(); + } + catch(err){ + $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); + // var imported = document.createElement("script"); + // imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; + // document.head.appendChild(imported); + } } - var tourPolyline = new L.Polyline(pointList, { + for (var i = 0; i < pointList.length - 1; i++) { + startLat = pointList[i]["lat"]; + startLng = pointList[i]["lng"]; + endLat = pointList[i+1]["lat"]; + endLng = pointList[i+1]["lng"]; + url = `https://api.openrouteservice.org/v2/directions/foot-walking?api_key=${key}&start=${startLng},${startLat}&end=${endLng},${endLat}`; + path = getDirections(url); + path = orderCoords(path); + for (var p of path) { + walkingPath.push(p); + } + } + console.log(walkingPath); + var tourPolyline = new L.Polyline(walkingPath, { color: 'blue', weight: 3, opacity: 0.6, smoothFactor: 1 }); + for(var j = 0; j < Object.keys(map._layers).length; j++){ var feature = map._layers[Object.keys(map._layers)[j]]; // what is the point of this if block? diff --git a/views/public/javascripts/src/images/markers-soft.png b/views/public/javascripts/src/images/markers-soft.png deleted file mode 100644 index 9ee4c348dde1a740fd946c4212b0642ed5ab137c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41226 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 aAw|UvuR9IAZi0KdKr~f#RX!_ONBti%eZQ*! diff --git a/views/public/javascripts/src/leaflet_awesome_number_markers.css b/views/public/javascripts/src/leaflet_awesome_number_markers.css deleted file mode 100644 index 8f294a7..0000000 --- a/views/public/javascripts/src/leaflet_awesome_number_markers.css +++ /dev/null @@ -1,99 +0,0 @@ -/* Marker setup */ -.awesome-number-marker { - background: url('images/markers-soft.png') no-repeat 0 0; - width: 35px; - height: 46px; - position:absolute; - left:0; - top:0; - display: block; - text-align: center; -} - -.awesome-number-marker i { - color: #333; - margin-top: 10px; - display: inline-block; - font-size: 14px; -} - -.awesome-number-marker .icon-white { - color: #fff; -} - -/* Colors */ -.awesome-number-marker-icon-red { - background-position: 0 0; -} - -.awesome-number-marker-icon-darkred { - background-position: -180px 0; -} - -.awesome-number-marker-icon-lightred { - background-position: -360px 0; -} - -.awesome-number-marker-icon-orange { - background-position: -36px 0; -} - -.awesome-number-marker-icon-beige { - background-position: -396px 0; -} - -.awesome-number-marker-icon-green { - background-position: -72px 0; -} - -.awesome-number-marker-icon-darkgreen { - background-position: -252px 0; -} - -.awesome-number-marker-icon-lightgreen { - background-position: -432px 0; -} - -.awesome-number-marker-icon-blue { - background-position: -108px 0; -} - -.awesome-number-marker-icon-darkblue { - background-position: -216px 0; -} - -.awesome-number-marker-icon-lightblue { - background-position: -468px 0; -} - -.awesome-number-marker-icon-purple { - background-position: -144px 0; -} - -.awesome-number-marker-icon-darkpurple { - background-position: -288px 0; -} - -.awesome-number-marker-icon-pink { - background-position: -504px 0; -} - -.awesome-number-marker-icon-cadetblue { - background-position: -324px 0; -} - -.awesome-number-marker-icon-white { - background-position: -574px 0; -} - -.awesome-number-marker-icon-gray { - background-position: -648px 0; -} - -.awesome-number-marker-icon-lightgray { - background-position: -612px 0; -} - -.awesome-number-marker-icon-black { - background-position: -682px 0; -} \ No newline at end of file diff --git a/views/public/javascripts/src/leaflet_awesome_number_markers.js b/views/public/javascripts/src/leaflet_awesome_number_markers.js deleted file mode 100644 index 7f2bb5d..0000000 --- a/views/public/javascripts/src/leaflet_awesome_number_markers.js +++ /dev/null @@ -1,65 +0,0 @@ -/* - Leaflet.AwesomeNumberMarkers, a plugin that adds number markers for Leaflet - - http://leafletjs.com - https://github.com/zahidul-islam -*/ - -/*global L*/ - -(function (){ - "use strict"; - L.AwesomeNumberMarkers = L.Icon.extend({ - options: { - iconSize: [35, 45], - iconAnchor: [17, 42], - popupAnchor: [1, -32], - className: 'awesome-number-marker', - icon: 'home', - markerColor: 'blue', - numberColor: 'white', - number: '' - }, - - createIcon: function () { - - var div = document.createElement('div'), - options = this.options; - - div.innerHTML = this._createInner(); - this._setIconStyles(div, 'icon-' + options.markerColor); - - return div; - }, - - _createInner: function() { - var iconColorStyle = "", options = this.options; - - if(options.numberColor) { - iconColorStyle = "style='color: " + options.numberColor + "' "; - } - - return "" + options.number + ""; - }, - - _setIconStyles: function (img, name) { - var options = this.options, - size = L.point(options['iconSize']), - anchor = L.point(options.iconAnchor); - - img.className = 'awesome-number-marker-' + name + ' ' + options.className; - - if (anchor) { - img.style.marginLeft = (-anchor.x) + 'px'; - img.style.marginTop = (-anchor.y) + 'px'; - } - - if (size) { - img.style.width = size.x + 'px'; - img.style.height = size.y + 'px'; - } - } - }); - -}()); - From 69d36c2a6d60534e4663efc1b4f82a3be9e6cac8 Mon Sep 17 00:00:00 2001 From: Alvin Bierley Date: Wed, 26 May 2021 17:59:38 -0500 Subject: [PATCH 019/183] few comments --- views/public/javascripts/mall-map.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index 005de1d..efefdf9 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -317,6 +317,8 @@ function mallMapJs(){ // postData.eventTypes.push(this.value); // }); // } + + // correctly formats coordinates as [lat, long] (API returns [long, lat]) function orderCoords(path) { var directions = []; for (var i = 0; i < path.length; i++) { @@ -325,6 +327,7 @@ function mallMapJs(){ return directions; } + // API call to return walking coordinates between two points function getDirections(theUrl) { var xmlHttp = new XMLHttpRequest(); xmlHttp.open( "GET", theUrl, false ); // false for synchronous request @@ -333,6 +336,7 @@ function mallMapJs(){ var path = json["features"][0]["geometry"]["coordinates"]; return path; } + var key = "5b3ce3597851110001cf62489dde4c6690bc423bb86bd99921c5da77"; var startLat; var startLng; @@ -348,6 +352,7 @@ function mallMapJs(){ var i = 1; $('#marker-count').text(response.features.length + " " + item); var geoJsonLayer = L.geoJson(response, { + // adds the correct number to each marker based on order of tour pointToLayer: function (feature, latlng) { var numberIcon = L.divIcon({ className: "number-icon", @@ -413,6 +418,7 @@ function mallMapJs(){ // document.head.appendChild(imported); } } + // gets directions from one point to the next, adds this to the overall list of directions for (var i = 0; i < pointList.length - 1; i++) { startLat = pointList[i]["lat"]; startLng = pointList[i]["lng"]; @@ -425,11 +431,10 @@ function mallMapJs(){ walkingPath.push(p); } } - console.log(walkingPath); var tourPolyline = new L.Polyline(walkingPath, { color: 'blue', weight: 3, - opacity: 0.6, + opacity: 1, smoothFactor: 1 }); From 14ead8a372f374bafb85795afb1b4375c92ba804 Mon Sep 17 00:00:00 2001 From: Alvin Bierley Date: Wed, 26 May 2021 18:04:28 -0500 Subject: [PATCH 020/183] couple comments --- controllers/IndexController.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 1e4137d..2787a8e 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -228,6 +228,7 @@ public function filterAction() $dbItems = $db->query($sql)->fetchAll(); $orderedItems = array(); + // orders items to match the order of the tour for ($i = 0; $i < count($ids); $i++) { for ($j = 0; $j < count($dbItems); $j++) { if ($ids[$i] == $dbItems[$j]['id']) { @@ -249,10 +250,11 @@ public function filterAction() ), ); } - $text = "Anything"; + // commented code below serves as debugging tool to write output to a file + /*$text = "Anything"; $var_str = var_export($request_tour_id, true); $var = ""; - file_put_contents('filename.php', $var); + file_put_contents('filename.php', $var);*/ $this->_helper->json($data); } From a2bd35f9532680d845f6ce13fc207b0ed2c8bc15 Mon Sep 17 00:00:00 2001 From: Alvin Bierley Date: Sat, 5 Jun 2021 22:08:31 -0500 Subject: [PATCH 021/183] final changes --- controllers/IndexController.php | 4 - img/markers_default.png | Bin 119805 -> 0 bytes img/markers_default@2x.png | Bin 254280 -> 0 bytes img/markers_shadow.png | Bin 535 -> 0 bytes img/markers_shadow@2x.png | Bin 1469 -> 0 bytes .../css/leaflet_awesome_number_markers.css | 99 ------------------ views/public/javascripts/mall-map.js | 10 +- views/public/markers/img/markers_default.png | Bin 119805 -> 0 bytes .../public/markers/img/markers_default@2x.png | Bin 254280 -> 0 bytes views/public/markers/img/markers_shadow.png | Bin 535 -> 0 bytes .../public/markers/img/markers_shadow@2x.png | Bin 1469 -> 0 bytes .../markers/leaflet.extra-markers.min.css | 8 -- .../markers/leaflet.extra-markers.min.js | 10 -- 13 files changed, 5 insertions(+), 126 deletions(-) delete mode 100644 img/markers_default.png delete mode 100644 img/markers_default@2x.png delete mode 100644 img/markers_shadow.png delete mode 100644 img/markers_shadow@2x.png delete mode 100644 views/public/css/leaflet_awesome_number_markers.css delete mode 100755 views/public/markers/img/markers_default.png delete mode 100755 views/public/markers/img/markers_default@2x.png delete mode 100755 views/public/markers/img/markers_shadow.png delete mode 100755 views/public/markers/img/markers_shadow@2x.png delete mode 100644 views/public/markers/leaflet.extra-markers.min.css delete mode 100644 views/public/markers/leaflet.extra-markers.min.js diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 2787a8e..5308cc9 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -130,16 +130,12 @@ public function indexAction() ->appendFile(src('jquery.cookie', 'javascripts', 'js')) ->appendFile('//cdn.leafletjs.com/leaflet-0.7/leaflet.js') ->appendFile(src('modernizr.custom.63332', 'javascripts', 'js')) - ->appendFile('//cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.1/js/fontawesome.min.js') - ->appendFile(src('leaflet.extra-markers.min', 'markers', 'js')) ->appendFile(src('Polyline.encoded', 'javascripts', 'js')) ->appendFile(src('mall-map', 'javascripts', 'js')); $this->view->headLink() ->appendStylesheet('//code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css', 'all') ->appendStylesheet('//cdn.leafletjs.com/leaflet-0.7/leaflet.css', 'all') ->appendStylesheet('//cdn.leafletjs.com/leaflet-0.7/leaflet.ie.css', 'all', 'lte IE 8') - ->appendStylesheet('//cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.1/css/all.min.css') - ->appendStylesheet(src('leaflet.extra-markers.min', 'markers', 'css')) ->appendStylesheet(src('mall-map', 'css', 'css')); } diff --git a/img/markers_default.png b/img/markers_default.png deleted file mode 100644 index 2c81d15bf68b2444f39108823c7166cd7d74d8fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119805 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 diff --git a/img/markers_default@2x.png b/img/markers_default@2x.png deleted file mode 100644 index 35ff61b50db09885901cbd0e222c2540265cc357..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254280 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 z 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

JVRE-K81RUbKAU)P=1 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

m=G6Jk{JFi#O#6`R;|(sIJpaEH2FQUz8m|-h}Gb zbJWg5@66!ErUbnec>aa;D{jqhwK&f>3Pl0bgk8wQ5TOqd7C0sC1f=^!)X^B~BR9i8 z+e0mNCr9TSP6XeHt$qE(q=p;2(p2xi?fdocoCA8r^hULFprLc;7I9sWCPq#J%$e2^ zFWDe9-}kIs#$5~TWm<$QKwYW*Ez;R#NdMVXtAmCP@yp=rvB}n08XHuZ5%Ut$&Vf?P zK3mEQZZ?6}-4}U|wErax`2rV&0C22%Cb#CG@;xy79ZK#wy7e6oVbV|JHJqzgD3V`M ztWR*g2>F5*WPxV(ldOZb?XHDhLtH0ycRvbElVv1h0A}*CYZ73sv9Z{ZjW+pN9c{L` zYHc&lClU{VEl~`k{Cew$PRiC$x!67RcgK~xIs=yE>w}5LmvU@i?tI13!`_@;*AW|8 zeZ7$!Bl^&LCn>dZg%|=Nk#F;O(J_1q*4I~E&lXrCKJ`^!NFgUiB8oIrK4|}0VGvZ? zIsfi=An$j9o`7#iO5Gx86MY5v8_klulmWW__iV3xM=c?^&sp^0JpqKjTQ_`2{%E$K zq%O<irPO;qoV$rQp~ z+s~M#kVc42X0TS!Kk{J390uu+GT+hVD3GX^8>`kV<9sskC=*3qK+5H$sRy7L{=xFs zEyAe@eLGf42nB{SaKf)PwS zeE0Ig)VPCtGO9X>pav@1q}tEdI5kVcB|F}C$p{9I;Q>0Ol=&|McNqf4C*2Hc<))1v zIfMS9bBrpR8N|DOGz|RrE7D{%%G}&tp^{bw?6~sVrX0tIMG`o*EUgs5#}Di5n-vPd zmdLEXMUS{;8NE19lBCv{)QyKszNe_=NT0`cThkGmznG z3n4N$RR-bxkc1stdyGTpGCsXH-XcE$Q-U%SlzIyQZ6fcB&ND$=oC2Hc{^_+F>(W{rbVPod=J-XzJ*P=~^dcc6y> z{O#80PUfFsvRJ&4J=qtk{S!YhVcXR?0|-K@yFSZ4c$x3_vbtc>_Oec4TL_gZ*uH(4 z_;J=zFujc9lYS`Qy)#{hCv_kzS+7KY(|R+d{Heqi0|Tj=Ba8sg+P7zzluQT}<97_J zKNH{ITtf_^#JXND`0xFvZT7VPK0rx4@c2`?VyLFYhf`_qM)U-@qAzIf)ua!eY4mq1 z!{YaaqnPh|$SO~&@jswOH6YB}R%kqLv2`Emn7sS&KLEQxM8C`qJzrUZTQA&1H=QCY zqYSR?G^7-e$=Q)O&bSM#GYH-x&#U)wA>Suuf@^D!Kriq=j4?z`}Ex{O^dW%`P3^O`HH_nAu3QE_M}OM8{03y=niR`10YzdA%%nxXXtkG;N1V)!J`= z#oCvBox6)V-fjMeOKjU6Y`43}RR#hKJ?RC4|qFJl{dl8qFcLvSv3RX7Ll+~GA|Fc9a+ zhojes&CUO+^&W)~ko}uG_J>1+HpH2uY&d!=z~GEN5JucBY2ygq#}*f7?~QyAQEdNn z9*_Yv`}1M{mq!9qHX1%9wzhv{>I1akkib$k9se!gExW*FpH~<#2w&$tS~r- zGtDX%*oS)$9y};`2=BnXTbQ6SYhlv-134G}Yu5%88DDzTk_Zvt2tZfVZ;OD7jX&cs zA_oTW5Wsz`E)e4{J2Nu_L68Th*qSJUgA9k;hZqNf!Bh=jGZ44_v6wng&6g(}4S;I` z1Uc-g%kK+Zc8S+L8$LVqbaM(2SH6Ga z=8gZ>+YU@gFuoku1Q8INMFYBli>F9f5P|{~Q(q z6HEjQN9r}(H|4hk-9Sj)x85$HG~yk|OhFzP4%J)12u6q761_VCvZ#>aJ;B)!iE{73 z<3e15qH8|XJtO84A^@X|J+(cSKkS<+cwu743N7KGi6Jx-kPjGT{EZ0xs5dQ+xqXPs zg_w8Ulk?@{neyJlI(z8(ikz|xo$fHGhi^)g?0>f2KnistzGLqlhyjCo^fn&?j9omY z!g_ur=RLS{5M107`*`mocZHZ$4HwvlF&JY}4y)J54f)@((vA* z9Im}rNTIE^y_(P=`^UxZiWvX6vjsI4I3RK%F2)h8M{tW149^_oYX1H5mipGI?a;{% zimQdmkc{e4;cu&Bs?3+b4E_s6>6gQu4ob zpj7g90_MOI9rbzkuk$3f;b*X;4qXg@a}M2j44Edsm=@)&&RTT6LBlZ@V+<`3TIY~t z8S=V%qv^W+7M?|_2lx9~^x7B$IS)UcfMwZ_%OW3l)?yk6VhNUZ&Hzn>iM5bLPOPeb zAhddaPU^hd=P=IZzP(d4Q#dAmFC?k;+CgiI1g^*2KpcS81k(mUDOi>K3e)<4Jk=pT zpH8a^a5jL);r0P|a7gR~nyWwTlJd{c7}$nlvUptka0b@}_{PD@6caUgntKCK=)sM< z|NPUdCY;fQcF1A?yt5eZ?Lwu=$I7aF)|w6o7L0{sdmzRD@&?X!Nb?N!Xz)6%yLkY< z=r!E$Gq&*P_ide%U5g~)KVRf>!?hh?8-REWif3J5ixx4!8Td{k%@nGEe3Nc{-`38~ zxBFSJSU&NDieBpXDGG_v!hA<&+GY$ zl`DsFGXdlL&(bvAwa!N3FLwOUB35ucthY#1iZsoBMH}4*sW_6I{eIi$aQ7VB%bV#G zQprCk%Hq!(+rW^HT_MN(#Q+#+w7!K(6w0c6+Grd7&jR%bI_C$BfgxBAyVpV_@}siK zo-?iQYSzv&P zB&s|uLy^}%*qQDCLFgf`;5^u8!7nhtdXI^jf`R=>BGa+%9BdnAoDauZ;0(44FpYys z5@aI#rOwUv&(VJDygrOEgy7M29T*qC#~AyIJj+oQC7iLxmX>kWqR0!BMTy`8k|cTB zSa;&2{5;vmdk@of;Eer>Q0fb<)|gDEeaGeTRAM;em`dO4q$ z8M0>cUrCyw7!KYVyhj@X{7fa_7>fb0L@?GMtEyj?N&2EU2Ht%UY@)sajptcl!@;}A zI*bF&yEl%qO+akVoCJb47NV|x8cObvH6UwGCu?{f0&D;r1YZ<;x*Gflw-&miA0MZsN&7ZR>{ZnBrU|la!!7l9Xnf)HP#3UU(Lj<_SFU3C27+|LaVJy0&{CFp_ zKa@^`c^g5Di)x>_${k0NrWmZQyvh66IkbOzj%6M%{&mj zu;;6na!U(|!AklzZwX|YnAsmEIP?S%2U!i*8kCj#uu8>ss{@=3JrUx?wa*NN$rSt` z!@HdasF`3+8+7FMAuuKpx(Te-sB-ZWN?_OcI5Km=-E%*>&X8vX>T2+F&e@*WZMpB_ zgNLyiWnO+hOS3=IM#DIJvCkLVmn~INp&r)HcnWB#Ls;S$G3v)tH1e|evoy>8*ct<8 z-G#Of_5O!329YTwE5)10dl<5PY7~yO0K(L_a7IJb>2LB(em0ocWsHmNpL-jrJVU)Q z`~f&W@5ET@kOlz8Ag}9Rl4)|o8Ut(Xh4;_Y<9kV#ySf~{2i5_dkL}OLj1K|Cujwp` za`2-S?0bz%Ga$+rR8SPYW#*;*C9rk#QH7uWyH zUbA!kdjNw1Aj*(sEh$#6KvzbIKx;~-xCcN zVhjF!zLQkG zB`C52sY-Eq?aKEjNebgMLU6}E6GQ<%SO5%zdicFFRTS?X^aVa&3=D}>$dVkANsNXo z@5%DKow_MBnFvfDk-ifEOAcM%^-+|?_sjxE=Y1UGxq$YWy=Iw6s3HXy0@0?7PSXP@vcyJHOvA9&kt;;HgAfX5dO-bb0lStjGZE zBCveik-kVk1W1W;5aVYG6v<(ikkUMFu@5l@t`yQNhfos3mG!5QWEc5n0v zM(Y74kS6JmdLIj4aYWAmpo{5$SoA+dk|9wEu9oZHm&pWX>fqY|HtX^|qPiRm;HI&g zWti0eo`~Qnzy$~G%!Tzo))<6dCCmp0rR2MaXk1hkilT^0c}JMX`G6!%QP%@l?;(}? zZr}T7@BO}1?L`E}7=u&_NtQxLg|e*PmL>^JCga%ka*Qqxuqc&1nM}Yrhmz{MLN9L{ zyoa;)W%WHTAHYG8z{qGA+PybRW1o#jYG&n(=s5V_c7k<3+<%5GZ9jdb0 zTN$mrAp{R0V%Gy9a)MmAyS?{6QK7~{n+{USagpc0u5E{oS`Z@y_yxTi9t=Q7EgCyT zS>`te!@+xeh+wo3Q8~nUcOm1S5d54^$+jJMCU0fygLkyL!PqzbaO7eLhy!SShpuao z4D!#YQSsBkN5u)qo&)Iu#)kw%^(W`xt%GhFq(%1mYJKI$U`*`dI97z;6Zy0n>8SqW zYGv@t!AHK487GUsVE5N-D$9p};9@1XYg=Sl@#p1WpBfL39;~bL=wh1gPVGEjYgf8yQ|sg zO`ZY-dKISLJ{KxF>^UKy_F|eOKZJg& zfcG4b&bg&!XYYId1)AH)8iP)E;GEwq%kmw~bc(&by<-6!3=D1CqHP+aY5M6TNq)w8 z-;YRhSm)rKf7$HAU$zb8J*@X|{hFa!Sv`0SR|<{yu*U>Bnh@X!NXzQ=p(h#iGxAXH zp|y#vWEaRo&%mE}0mtR60|xbLg%p^0kEYkTUj#mT0OJrqA%JD+M+vc=p1cF~NOUkJ z@=aWXOP`VAjmZRapoK zT~xohC`mj6i?V9ogMtGE2lQP9lVtFEFb3BIc+;PW1?^G65$rU86Ja8&w*_M0-hz1_ zR|tUB(U2F$KGdHp3vXk9=$(V^T2#ZqQ%RP=8GB5r*qDS81yuFmO$5OAQq|tab7yo1 zA1+Q1&A{M#^3zB{7|)v34%JA#MkWHmcGy>+TMTlLor1A|VyK?+KET?Zn9jxIU3XEs z`l2{!Mhw9doFn*tITs0A>kO|ILc%u_gszQO=waO(F?vF1#_*m{BzQmP1nVNPs`pXA z&X{mv?yuQv^t0qW%7;EAm?lL5?|_{{meh7gQo@Ou#HDBJ%RjT zcA*#o_$KBlbyB{QgTXix$xXeB{>N&#aIru{=j@zEC9cT#B82#ecMf$`AxTs}Zh1)D z;{&7=7z}Cz=b)5)YnTCVvqc1L%!Q*;aMr=i@8NhBj4@D3Jtd^Vcsz#DCN?qzTCf79 zlPSCpP)fa#D0XIs{_Y|l(6#N$W}h<$ICu|k81MTLZHfy~hAt`c-zlr=Q&VGLju=y6 zU@#$|F&24Iw1btEcMHalBnqluNt!?^)jQ~m;D91=l=Z&n@FN6@%V`5D@(;_he8Cut zhC(FMJme7!Xak{f0a8lvmEl{tlHf}1uS9_-^1>Xf8S$8ll9#tFbQ*1*|CB4r9cnGQ zZZX-YU<^hF*v^BLf*y_Dz?A?}1tf8?GyxLT%VyEV*gq8DoR9maw~Z$Pa~gZ1_+gV2 z9Xbo!1aQF?6yF(KOQ6=lsRYw(Ffc3z0&A_O=elWL+cUq*Mxvi#%K zVEFqn==ETWkYmPrY3UAWo@2DO{&p@nRGRiHL6YT=X&My~=wj?2?;|Tde7vNo2Wo8R zkmcgH%3=Cx*EN7|V~56}EP)*G8ct7<7Ks_GW$)pVBgrLH7FSwG$c)3IuNa+o`|v(F zH8zeW^^1asHXgYOzf`9Dy6p_8oq(|g00$EYxD9Y;Hd7kUmwa{e17$HVScP;=hq|v$-DoL<1T6v3P0;x(4 ztQ3h%E`)6k`XA#WNvbE0&@XE=Sf>6o85DommGF`6? ze~1YNl_rq=QdtU-#!f^=7a)Gd?Edm#y=~_9(HdD=eo*Gs4YWD}7r^0T7>vbHmev76 zVK7>KMkooDB#`}@-SsqU8@T`$^4|CSJlHQ_ctU41YE}M3otC>=8@M*aDc!^3L&o5{ z0MmJ-D#4{<^$ki$WHQ-bDn+W2*lk4@=X`|_z`2-@V$4WaRib`85Sb)NQB^f;Pd0kD z?q};9io8IYX7GU^rF>fm{tlAf;2pFv7XskmoJV1hE`nAwMI-MWjL~46|4Ei-zdxBy zF>R(`g2xzX76%+yi~(KOVQ(^qN)(Escn238N-0PsA*F;$6oe29lvvLZz%kQXu(Ot~ zIWpGEEK&et97SEffr!wAaAfybM}*E<6h-kLvn-tg0i5&OmJqy8V(46B95eek@9xSy zjNk#m!3Nb^Km;8Q_o;EZn_&_Hj4_aP^>I;Gzd7$jm@Uo#&SSOuynCRYG2dGshYVhl zFfbnwghX3bZ|5$c(*gbvfR!RQBw9^CYhmi@w{2bgx$r(FZ9LkBI0F+regffq@1I!$ z6v=t+WMJpP!*FHBs(!EZ9=4&VWVxUKZ<_#NET+le!);nT$EY9QxowI5BUqr>c%IN_ z?+&??2#j;2dG;%z?|?b#G9>R|JB`80>Id?w+N3~WTpUnAV~$#Gh3;e%E;d=Xbj3SrzHLKT)RH-!S?T4XELPs*a$j{ceNuU=*~f^iq;{)(~UODe`8^!|D9#;6A#j*b^1 z(GQY5`y-X5O&m+*w=K@a>?fRm|J=*$&J*ebD}(?c1gdKA7Wfd=R2&W;!yrTuq%}yZ z!JiaW{rlegyWC$4fzG!g$U*-+Q^C4zVYa^#!6QI z#vrRc8OVb(e%lh90~eq`IP;Ch=sSvEM6p|(gH4r`?+Zkz>l&<&UG8?cLI_B+ERrM( z@j=e{^D};lm#QHdtzpmks0!=Pm+o}j>xZZ+DJkCk^~5fo>{|1Tq$^D&H!z6wQo`^)9}d zp_hgYaSoLa>o-uJklnT^dxSfjLQDAGc;p3?V2rS&b5C}3jOjPxZQwc&7 z$wu!g8A|{;f;R!gImX%G>DX59?@A^aFM#u0WhQVT;GB)!8+UQK6bRl~{7d$AyYKyW~KbVzC zaNQK}x_?i18IU6jat#26a;Sca@t*hOF0G2uKIhv%a|Sr$5F7!-=Du@YB_x8ggfgSI zrU{4dG~i6UM(-v8ZVf^^0T{=i#OoP5L}`~WC;emm{MtuwF(*%>yR@bf5sb5_tHB$y zG>7%3AKl`2O?HU_T(IC=U^rNL9Vm{g9LmOijuj0E1i=Mn>I?ht<=_gi&Y~`>XOvQC zeG3yJiD9^--^0U`g9#c;0K+`j$~9n9b=zx_XR>Y=WX;{2+YPK4#sZtMFgu2in@3QFEWaf zu?sqvXCMdz@QX`?GVLz{l~&s2)V@E~6DhaKS?=`AqN*Wm%#qayV!AgQyu4ND)jc z%K`vF3h~tJ4!m>4Sh8!|bKPmjg@EpKBp$x4`)7Yez6|j(B^9QVDZ2LVWTPO0wHD*? z7(z(oS^o6h@2=U39WiI^f8<$i9&HS!Z4<`~m_IboR*Bk`N&2x#+kSHw0!kt9QY>0B zhAsp&&LPP%}!0V7j%qscxz$XE;^6HK1XYTB)QIu{6l(c z=Ub+U!iwN<2Sx;DY2gq;E-9Zx!WF5k|i4niMyMef| zu!;J#&a&T1xA(rT)e4!|&$;H`PB2V#Kxi$f$W2!kKgy=v;jO9^XY3hc;DX15=A2b8 zU@g#2BSZEf8%TMJmdihCW%lP)GyZbhD5&&KaGeVVrwO7pXwqVDB8#7vwu_1GAy0q@ z=jU_(a4uktLDNj*UO&YDIBTGi^dnhOJU89jdsL)R!RV#$hjEVJTrUkfcrGi7k92Kw zXcyG%Z<#!w{)Y<&qb=G=2QUW4+~NK?6+2m_-rwDv{9WlAFfqLIeRBzN4ZLZQ6bXt! z@@CWa;O$}l2LVi-Q~PiRYdpF(Ub5_v*Jl7E3NPd-`{kY8_HU?e3SO>)+<~qSit10H z*@0^t&AP+i~Q$IVAis(LR5WW!Ycs zOm@F4lNy4F*zs}j`+>v2U}C4J@@l8di=S<~=8pgOQb3k5Knk_+|J|?n#~OofIt3Wu zaQD~8tOHBrhee(|-%chEH%W()szBs%@PG*>(fSTkGeut4pBH)ZE4FPH+Q#>47*fb{ z=zlnzHt3r89>Rh^U!}=*S{6Uq-rD**$osZ3x*J*>$5W7JCeItqt$nJ~}Az19*m|C#BKwg&bHEkD*IEQ_2 z7r>c}7jWLA?R~_d=O6%#^WS5PeL_n9s=BH%-Wx+nxgP?tc+XY6+6ocv z2qAuc(bBT#@T-oQoPVK%|nyv6syS!+)Ij| zN-9j7DW=mYvOJq|&OSQl`Z+Z9jopbVO%cwB*!N7~Htz$Zka5OF%0riu3PoA|%uFH0 zy@YI(dXTjV0mfNWgTap^N&2F-_O7!&am5z;&e(I?sSqeunYmKnQXaa55D+V)?|_up za~?0n57FCaFNDY=FdDpt5;Y0VAFf!~|9sOk2cI|lL}Jxv2J(O%!&`@XHTmHr61wzy;frjoxiPM)JDRaOEkXq;=jMTH&Fd@57!`SyaYi#Y+i= zL?#PYrc$hrF8y0#gf?_N+34+E9G(TVp@kuX(O~7@GcI6*i^@j}mbPXtpL(wB1Hc6j zA!YB2)m@j65=ojNTN{2CK$y4&HW=VGu95(P$HX`A-a!=U&ryFr9=2wcW^K-&f1bS( zivXsg|K*81bg@Jt8&pnEL01J0sa8UBz;k}YT4Vo7TsdGgL<{LH{&kx#`t zYO#F;25YO|4km!cMbsnQd3~Ytfc2<`qc=*Wrry{?TI}{aeT}x~GCqvsw6TjUS>T@& z8U53xYV|uLi)5o---V3T1HO%88>`vywTemSoj>&cLWuE?HRsPhtmpA*CX;@=n+|;+ zq30x%LjF7FJO;x7vMlSB&Tdb{hQlF*6yThH_iX%kq2exM&|P=_&ev>oM{7tWk)#Sr z$-6G8B(f|+S(e`&h%g@SK^wiVS~!!)4Ibn17}i-RrGAcq^`yOrt$4oLro~L<=`5Zz z>EPgu%@gM=O^=*ax3I*o z_0FRuLRn$vjNvrf+RlmG*vHGhr9JPTsW7x}w?;E9CPbbsq zx|s@O12I>!V4T5q1V6SgNfvfg^;+R{Kc;X*l58CqBP3aNuFz-OSJ2ZeKhi#oF$`DN z-n@0|=J$2YwB$-bsARut&Nza1@YX=81VvfB+gWq8>I#eghl3%@@^drIGpp_p1JYa_ z$;HDtLp92OCMlG2-Bj{q3aD!T>$m`1gJ33*sYEqM{*5=T-(PeD2=1ZV4tZXjEB_q9 zhk!KYM{;2>1`KNUk*Z8SzPCI53XzY&^8v{B$+u7l?F4>0MWPhSoW9eU2%;XfH=T)N zPHBd7e`=KsFXKHh+7jv~v?nSCsX5oDeoy{$PzwmN!ava#_Wrp=_7$P@!v!1lzek_ogy zV{98pB_PV|-F_Ay9tH9S18smJEpc8P5aS%ydk_PXJUxbg<|v2t&+HbN51kQE0#Krl z|8N_*C=!KYP<^|%t{>N73xO7IJv3?L=jeW)*~f@;vz;78QvoAWx4zUz`DJ_3#5X_sTEq zj3T793kJ!$(<{>R4g*Q_`{_7Os0GMS+3I;fc-#iBw- zAaKs#<6U?v&9l{dIKZu&x4=bwPtG}Hd5(HGfcK$MQa&LS_%KSTL*p)_!MTuEymh7!({K2x4J{_%Gjuik>~FZJB5Z5BA|bv0rCn2Z44+F0=*|2zpe%37*h)w2#VrKoEnr zkz7>Q<B7bf&Ncx|JB+jHhYXi34|gXHeCc9faN0(quk&D^e*Vum8#TwRfwOkuGP(ul9QAPc zF5h#S91NNmLnIe921QkUGB1i>x7HjoUwJ#<&8(IGyvR1rRH|lrlQBE83={F zYLxv*k@kIb?49C5s`-Tv}_vm^e57*>)PBBgX-PEJ4}5G4>y;E1p=nNg*F{jRs4m_^WX5s9ML@%7b6zqAAf!b{{j)5H6ZKY zwShNw;j(Q9sl;wRtbPp6(Y-ap%MT^qqA^ zTX-K}jD@j_S8FtaCk*q!n}ZJsUAT>il_7R-=+P?)m)%4j60UoIe+Q z9Gpj9o38C3gpB_6Aj9`v7P08J6qj!gKA^5^NFnE=Ki+%PgBnUIfaqhKa|4Fk6j=^i zLI`wS2V+bmXT9IxPj8>5Y2ZWb;4*gcYC8=AD9f^UhY-+An|T3bHsaMx8|Y3WOS3=c zod15?wez^|uoYvBfa!D!Yb}I4eSCOo3v^U^A!T%{gI180PhTRmHmLrQ*@n+ zV=8kEaG>oxybx$d)oTHOdc~BZ76bz^2Gg3}8Qy3600>$G-X00g%$E<4PGh2qHyf3} z>)3|K5T(w7C77v4;2e!C-Ul#*V=iJG0g=z)TvT@$ppAxew)Zdo7%RXSjl8U1pQI_g zvr+GyaR4lyzh1Vg8VsM|Ld5#bF)pykPZF8B&kMjYC)Nt#uEbGyTh@Byb@DoyNCeve zzKh6M+>jtQ1>+p$Fnvl02F7vxB>-df`S8!2!88`Ob3KXH(JQzBqa7p-hDj0q5@*L+ff2Or&PVl~#o2eO4af%s=a02qXONfq z>ySu9kmEpibD;QlvD4!zF8J|c=L4!&#zv)^`yT&r2GeM`*2Ixfd%R_v4oRB)2+}ml zz#7^gBXj_a2Ov<6>Zic_`+Eud*!if+{lDLJr(tvi73?vVa{+DFp-}nTizI`dIs~&H zACd#?)Il+29mc5QMhNZeuiO@6+a0d7LsQ?baIjj$uY7O6$d>(HRI%ANe>F*Xr@rl-2 zwA6EB_q-fUYy;}bqIjRRQ57K^XU(gq4#s;3F7E5*@ypfR0Y0#Tvp}AISQOdw z+B%Fwltp7;&_poSf#=x{EAsb;-ag0rzP){%^U%iLSCpO$4rd&?sX-tH-!oMoX9exh zCCP>!l|SRPL*odd5Ar$}U|I`1C|>BQ{Fj8b$Eu#r7UL{dYCC&ovtTFPKd!H+(;=+J zcU>WXS&OMiK0i^#uX1f+^(+QtFl`*)F)~3X)bEJkaO42teD(XsSXk}uyM4Tmybidl zYRciuYJ)UOKVDSz?>l3oGEG0eL*By~gRCe*QPuCXJs22{vxw#aqOmcFyPwqy?;Uj4 zf(5!m{bkW|+91uuZ|7C=NoO?3H*-XZTnlenWM$IjRr13|yJJ|5YA0aeVBmo1;97$`V_SJnKV{6(oh`R@xiAK&9c-)b zzyEO#S{rc2mhcgP_YPT--l)p@=ZrP6i-WOP(GMQlYLrF&g*+=iWR|$UW>vIU^)dJP zd~s-Nplt`fWSn8WL!RcJ8x-|NwKGu}gw4iNEVR=ok^*H`{epJp*n215?>u&kINjTa z?%)3L4#t_eRP?dC8k~d7vp-d3`G>}KnEEy*9UN#vht@Pm^31EMe3zSb_a1XG#?jdh z#@*ljBRK2tFB2u}kAJ*iokLROzoDx9Q_yy>x)TnM$tLdHD;vweW51Uglu%T|n1Z42tUWMOyr_v2N~LjhKknXz*DE_A$;yPYfD4M#`#0o)z%1$o!5F2*>_K0bFo&TBGe+ z2r2KIeWVaD)<(Hk3b4+_xa=59cN(0FKTXr*kJ_%obUN)-bQqeZ!L*qoQHf6y^{)Ny z%;VXfafaz+g05*GPidc%@4i0SY5UpP8FF{rUo(KDEXp?!fG!Xm5kmiG8$61lcrRz% z7;BH$88TbW!-arx+Z{@9_Ohdg6kC-$VpL zM?g0$-bkRx%)0ty;SKPiL3cZ(BPZLElDf02$nkGP6 zkEtqtL36nwtOW~xsl|z4+79GBL?4{p)29zsO+Pv^tLz?kMJ^JKvaX+DEOO+`I5vWJ z@ZKS>>L2GqjIA-p>Xh9m;~ggE7FnrQ9>3iZ6$rnyBn_ACe5}$3czJ;EeUvId<$d>pZE;!Rv*P zQ5tl{lNDmMs4A*A1L(W2{8B4WK-;xZlK#GwQR8T3XFCAA@4h(xict{9s2shHGX_JZ zXQBffIaqH|7lWTqWb(YW8ZP+bFYghEFzKf7-h<;lB=H0=V(3iMj}D(;4>Jx`RnIUG z8aE?j4QPA^=PhJe{utw8;*AD*x7337Xxcpl9}7pgPxqHL`| zW0o#ZpOH?)*QPtBsdT6;u-678^?O?$Nkll3Y*qM;P05-IrGH;p(OHQ`6D3O zCu8N9cf91o@&~{;oV82aCxigqXgKT7SgK(O3sEfOu~~QNlD`08P*krIT);GL9v`~a zgB+pCiZ?URymR5$tM9UIroDf@kCPZ}+xBBOY#vn~e*uE?*HIv3SrNfL0tWS<2kY6- z0=OB06IyBkz@#TV<@e+MVhoIPjCXfot&LlF83eJ9pwc9LhB1cebPCgt!A&L;IO~uk z$&WI|8rRb^EK{JRK-k&Yfe#-16d?48;SnhW8tXu9+aspS%er)(MxJFqm?p{7jdRF_ zfB?{W2Pq_qEPvYcv!^GiLbO^#cOBCE5Fm0P;^f)mYK-k0-X8c5T(iA4R|#yND7 zLvV(%^I%c}S^E0W&kml%KEYUY+8|^1K0ysqp_y0&-a-)pC$J9-1SiEWBatxL!4wiH zW9WSaOk!MPoe%DFX*^FH=<}IGQeid}1&|4FOY?yuVA+N#2;s z8wnv8TpK}~vC3Y{f{*ejOPYv*0Y;YTR zlBc}sz%vbSiQpOtC6N~DX=fbBA5AWLw*<&^23_mHd3Mi14k(d_O*Sg7aaFMyFdSrtY~1;zFWzQ@Dn}h!FhpBaPGr zs62bG%+j|srV(9|A!QPcYak?pEb^zK3YI?+VY<;Be5aAKY-#s(>ir`HoV941Hp(ua z;Qq29AkEWvuq=5ESr>^kMGtT&fi%yao^wl_;DqT;qw6}bd!C_Ev`^#E@h;lu1WweF zL0aZ-9B0YDf^mRXaYVawK&p_G*&CeEC-gsn(FWFQ@a*0@ASnd&)Buiwm_JGQjNm;I zp?|N*RoQ9D-PQPNX8+#{G}-FaI*ZuSPQ#nf%HDuM=Eq(JLf_>h3xVF?!9lS zx-61J!Fi9WuHl^pXZ*Fn&-Tu8_L+4dI_FRn#XSeunJBht(MjAG zFvzm;pswHX`HhW#+9U}ifQfUsG93QKpeX)CTYGXc79zMLfe;etT0p6Llbl)yTNTip zgA;+Bcua=Ci~I&3RR6o**#5hdKyV0XjYYmX`k*MX&ysN`Zj+-BV6r4i_ckrUJ!+Rq zyv0=J*k%%nLgWTH;p6kv>N@}V+~!9hq-kNQ(dZ2u&wt^c`rnZS8}iZ*_RRAr{j zt6$vQ-uSOW@E{gotwvSUFO+%x`yqI6E>FBcl}eC`9Mg7+6!(U?KR6GSCt#c-5J8;q zfJN1noYw30*M9caXa1F?SdHymhqZF`lPksOL)KeJrcQi*NjfAdfp0z7J?e&LmOzz& zmommbik;X#DlK$2T6yF2#n1gOT`(|Y(V7Os(d9qPs^M>WYr%y)v3-2%5DE@C#TjV| z9wTPa7U`e>2_8q%ErFHRfYwU^R!$1U?rBFh` zOd5#n9^LQWB2yJ8L_V66l2H?YWKh1CuMR%YK7Z?5;nK)Yq7AaEYd@FP#pkUyC$~QW z6ctdC!-NL%9&I2;4h1V9Ng~Jqaf%MDG)YjT`G>~4&ENBFKrjT;SPTZ`7wR(q10Mo} zIC=7|yhI9xmbJh=^3R-eQ1H-Q*K@0I;Di7N0}G(=luXqBXHX9iLO`Mvw9%hn3?Ftl zO$TZOHl>uv@_VOR#6|2{YTGy>!x=vj015y}l5|B;ylFC-{Ijm@ptVNVwHS?7e!nQo z-|^1H{QCs)q2L7Fb5)t<~W%r2SXxHoSOt<#_*0>8G7C(c@ zO8Ev?rI4LD)%Ry9!-Rm8I0VPb4ss|?&`x4YtN8J=laI#`01-U)^6L9WN%sGy9jiR! zPy}oj^>?}?1vl(e#dDGjdyXRqLz*(Y+|;8KtHKaU_Wp>SYX1icsE4EP+TGmz=eFx& z8zN_@Ml0Wuq#4Yq&Trg5j4?2+aZh?Ri9tvYE^YKir(t?$K=6celz+!~Q~r~n_W&LV z>#Eh_+hi(Fd@;^{1QP(WV48q?;ei;32o}<}kyvJj@lySLQe@slxtF*p;b zN9?;)3Y@kxg@J?l7KU*^z5D@m2q6OAA_2fo4a#xGF&eCV=kDJ2e{H<(C1MG~!OHg* zd0{%;otQ{$M#9PfbgVn|UOd+4L9x4z1i+a93v_CGuT(4l;pSfTFQ;y*1Q%dnSgY5* zvq%cGrad{6Apsdn0Rb3oaWDEfSl|c}(20wCH=N4-AcTN?xb~gN){XyVY#M+^BEx*N z{_QF)z|fxR^-7k)asqW8Degg%5eQrfFePyoB%VY8<*5FSW^4B!!?-w}Avns_!MBMt zIrWKPGiLklUUhL07$lgNu^Z)-eX|Teu{QX&c4OyT(Gy=n3Y2TZ?>-Cr$h4m+5Bi>r zs>E`agfy}zb!4ZyV;Ex?mgQSE`Oe?dV>c(kT&V}&TjaUzv_75v6$1+l#v71)`TesH z0>)@eCX@bth-c*FyO98f@3qGM%hk0t0mRN+M)=Oix^}wwfpZbNkU1}E+|KfZk= zy0*jacyCVH4V;_|HiUq(D*s)wll-&Yz1_GQIY(KQ-<~822B#ZAmP(>&rvM{V)$-D@ za?!@0{XYA%U<^!3xHJO`vGowA{D8H!DAV-WQCa@Rt-ZakXN+N3IJ)#9~LqvJPN2-?sSQBY~q60$q~Ci;VRl*J<8@wGdhIC%nx6)Q%@#1;!!s^aYlv z-*BBiH2^fjQQABK=Mou~OXB1EKRgCIXdl5Dyb#z$3Ks|p1Ulsf&$Wdq(_c4r@j12I zJVAoP6)EXDe>-mt$e*t2$$A5Au>=E1q#Q6O*gs%L|GSh7)=F%3S*)HgI(1h%Cl4p( z*e2;8XXEj!!3kZO>1md|PwEahr9))^BmtW~#Y!TP3PKl7aJ~-TKnH#ngHQ?y-zP*n z?c=P4%JQ4#VDO=xja%O$ghW=9yLnN(Uw7@v##0VH{q{?;6pD+b&+AeC=ip2>7>AG! zNvb0u8l8Ty${9kErJv2~{I|zjdtb{qLssS2(<1#P-JFsC0U=2}1eZ~XWQo^&)c)E3 zw;1?K^2l7zjlxe)z-Tp)7VM9Uiv8JS%YP*ogd`O~O8PC+5YB>vg%OZq3XxPGk@Z|C zXKkOjm!y;^(l`?1&w!uFSc4)feyuF3XD8F~;eQWhlRErIB$^%wU;OPpKedK|7xIsGA+9*t$$>yr|@+81dlv{ zD+ZxB*pe6SzI~4NPl5?J$u)KlT9L!avkg(2Ryf=aK9#V=q-^D3?=xzXhk#YXF z8Dj|Ex16&dAv%K%%A$SRX@jb)pq896U~`2ne(1l45WpCNN)i}ju(P`Zq6h|^Hiov5 zYvX!R6d&2y+5RTRIr1#uPSf-QZQCNy>GO*a0`~Uypp?RBG=jCqFQXm`aPR{F2QdaI zI67mnXB}J!;K84XMiLQ02#!Hsyl!(m{(2t*26^!VT<|!Tct%Bs0ANZ1(tDJgLkI!E z5C4FvKbW^A5Q`i%=P)5)tTlWH;5a)@0xmdMk-q`s=^GIOpww>>;|Sr5>g9bNJ%I;V zi!@E6eR>V@!$6V9L`WbG5I^(;f{1}+ob4Nr4O|EiAe;?-6(NWO-5`H+vOE1A<{YN0 z^-sDq**R_Z#%v#O5PSgkI**z$s3HXu0zxbZsHsOT`}1??Tb=zo7cgCi-5m=T0wfP- zQ;#ITGmfcDK3Ef8Eu6<*J$#=QN&px^=e}pgoC&W8L!=1V9tR95K;|4c!ahPUh#h8qS(1_a4r!7fU1pWl_C( zJRN_x^B%*&%KKB5>}jLVZ0`U7^9-IjurxXHerJrpsF!wLU?1L>Wx0^(`~(v-ohL&vjl_- zflg1c>-G>RfO&Q%+$aPBa{@_GKh1VFzS(<+q#FDnlL}6^XSPQJ2ov9eae<8G(LM|O zvmgPQC!fdg&pfIJ8E4@`0P|~O%N7a<^i41j|(2*F`YfF2u!nQhMKfHBFD)#V%Q*7zAXk7T9(piHE7XC`$Y z1L$~MJ(4oU&uroS-oHgoi_OC$P{@UVZ#$Sh3-SS$oeeoRfgpH_sx02Tw>$k#=RH=3 z!=Ff$8f$IN&OZkrOg%h+v|#=DI{g0Pz4G&MTEHU7D$p8@?d|Pef?S>n__@FR*{>7P z-;UD2?1vCw=q!kPsL!#9u(`R3;c$r2XxIZ6hrfQ;kG9N#jRpAy=NwW>Oea%ZfAK~5 z5FogKJ0k*o%YZaXU&k2#rrB7rkA8-y3mG;K1ozQhMedy}{Ro2x9$e!&$Kp+AUkfjOa5p&lR zWjauNxrH1A1j`OherH`Q-nyvZ!q2ub5W5EQ zBnRhWAvTbbgku5UFFt}#vkeRn9dFqO0sL*}i=C}~7}UmdHw>J^+AAKpCK7c$__O8g zp*}uL6BVoR3qzEc^!rtbka948v@dklA=tBz4|(LuskfeeaR*Juhp&3{Z|0-w7oE0e zdcRYM?>Wg5i2nXMY;4Z=d*iQX9o9s^;a5f6KLo&;e*e52_VMBJbDzI{!)S|FeCZ?q zMLj5f-I_BT$e#IU0@6GI7g3e#u>6$ENY4H2FEnU317yyQJOeWo4DqQL+7KmFgazP660X|ON>V?ft-a6N(kS(`@) zj$5}jCR*$A(MKQok|aq!>(AK#%)Z}XFo*!+OXBBm{HAZZ<7*D>;Mm;Vz0F3mgK$vN zh6@n`iP@Ywoz!s#NR_xusgFv|zotl%7qqiyatZhlppA)gS3OcTnMBQAS}-3(h&gGM z8bElMW3(gjKBywZ#99cxZ=chI)ZT+9YD!Z6Cn)uQl4X8o;D!$YM#rl7EU;~xnSBob z1VRsRT)GUT9`NR96b|BGrHu9ahn+g0X2HWHYQrY-&xoEs@{w~y`i z?L$Opr_Fr-99FrZ5H+DQmV+lEDoq^m<5-{cMwv)}aRDXx0sEZny>RcK6ZLt`jQ1JcUCv?3g_M(^D2#=`~*xk;t*CZh2j|D=^HB5V_8UxYO z?VmsaLP#*qp3RCf%ZlPt)|^f7L;d;kVFt_)rjyCh$TK_$941?V7Y2;%vHTC`9Mq3? z^E0v!5kaNO%2fOsm+Y@4S@xneXXBqKcxbI-8)ZZaFr7^Mpl-qWA_9egnggn+5Edjm z^ZQFg{tzOHT^)Uujm;2*6Sh+Z52y?imEt!k;IHQ+_6yF^napGd=V7!#Aew)U)28Y7 z&w~4_KPzl|3+dhtygAB2v-$lVt5orR=Zv3v|M=jcRB}s6_2-(ljJ5hqfH)sK%*_Av_t$hXJ#fD6{v;Il%x<=Wj_-kyITD~`EczeJ&KDQpf}gs} zfl{%3t*MEQ%Kl!FyP3V%Jiia5Z!LEO<@*@7q-Xmq(BF&d(R0 zbyfHIg%CJp`UUR-l2qMPTz--#?3L9Z|8;vt#hu^-v^EG~A2^>*r$;LLaLEunVQ1IF zObEiVBgz;1`Kjr1Bi?uFpEiE(pHG6ZO%M%32!DJ!i|@al5CW{R`{#=Yd*i+N9eg;z z(V;9$+`MrE-g~r%0UQT@rVt!l2v}=lXFBIlN}XD!min{GIQvg&mVSMfWuLXyo%(D6 z1ZN#O-OckU3WVL=-TD4uCj~gxM=Ohyv0j?7H73rHDh1I8*C%om6fi8xw^-+XuX7gG z`4bbD#%fF4(fHeOJUu{D9CKK7 z(5xTu-wNw6lrQe!xXb&Q+ox+`or6jgxR58>KdcX;i@JQXv-Ycv(eUefu(9`8D(M&u9xxl&O;`0UfG}%`BXwaz`K$Hf9f5nNW&1s@@K+1kJdDB&LdGt9Emwa z&^szuo&r&Aoq=}dWZtKrxwbCaH%l^HS-*lLO_sAyA7GD04nhz@U`w5G%_#AVup=1tj ziBF3Q3D>sR+uVd@K+|d5xV4GSI;3hgH$^9M9`m_tTHdyS2*yUGn)T5DgFHt<9+w|| z45}>qq~*9(gZLK8|J*?g3A9YSArzRN!ff9{6F4RljT$lJvKex|G4p?9efw5lw=w#=s)zLmzFO9HLWhkXbe)S=sTmiY`Z-QI~OpU<5{@7!9 zew?CCkMG5xhw7=+&zjRyoWvs6SB*S|1)lmI;D8{^cin``p?cgIj}c z(qQAon{ZtRnWnL7cry1K0h~Z5uuim((;AEm4A<9@4+fw##iQ5OQD!QF{>L>>Kcce! z3%`K$#`PmdRBm_A0`0WJ=EfGl2~F4F*2Ya(YoL_sxd~2ozE~dsp9t6>g0&W$bF7S3 zP-G>7CtSOB6{FQr1ci?63*(5&BYPucPQvr!zb4KZybaj8wF470rh1C&8`oi+nFAds z3!vGY^?zCZx|uqS@dg|m>nrOh(+b=&TzmK$>XmAqbQ~`T2ZR8wUQ3}AhY!oxhr=6> zy{%nnZ?H4j!HwQNsfzprCy8GGNXCT=;RNhm{r=HLgENjR>sL@`B?JjvefS#kx>zbc z%phSw_}=8h_!M6>qH-7iEF@ap;pWx`xCd;fv3dO_yta^O(gXE$vi&1stZ@<#1fqFj zQjdm6s~ny)Jo3;(7}Yh*vY-F~?y>@9awz~>afzvIabsr#(g9}LVe7?P2--rV5okS; zeP)~~C$UejF5-;?;|%rM3eqZvOBf!z_6P=9IWMXnD5Si3YrQDuPexOVj+467BGCE`ON z0q=p&{9KE6(?Mo@srL~=!0yftf)AKXC%At72CTLF{4pm?3)aryG) zxhlxo`Z~(8fLkKJn00XcKmWJ?4VN!p!E`!V5~PcrSd+;Vw{G3UXFl^;bX|+0C?KT* zKuh28j6pKSTqGx7p3FLgfMz-c7aUJK@d{kJbP0J;;PU0mkV%4Ygnjb-PLNq1?wc00 zcM`>FBoV42$I5Vkf^*!OjIlW$qcIw(?17GDN@5I9N(RY~&xSsenl;XWbB@b{0al9w zt1Bx22$P*XbXtQc6-i5%0yr3mg{U9D%!f^}^@tN;P!?Dl46u?Y+}s`G=Jqah2>U?C zGBPWS0V=jtV+s2Z0iAOYoZ-^S5bI@u(P#)TV6wG^PHT7}j@&?Z12~Gn`rv9w`}hFK z2y259msSS2Qc2v{n&QT-Jv5UJStfg+jFvhiE>&R5bb|Dq>8*+OxprlUYb!ZM{r<6& zF|^hIMC?UhCIJJ3B6WgEnSTEuU~O39^6Cf=4HI179OK5u9@=S(ES;UN)&|5oz#spD=Q2Rs0~gH_pELF6i-?dF1bK-k*dh0z+FQn1Sa zWIYE*NKR-U??GV5s~UrqRq(9BWb-B_+nX?53z?+RK7?ZjdkhRpC4ny>A3iiNv<8fG z)a#d#57#gltpH%y9Z#WkhfZRt1RfOIr;{+~5Akw=cdSNo6!j2;l{F;8RqS2AiQOAF zVV&-Qj^q2;nIxS|0U?+0hrNTgx&!9|!)upNu3o}uWdz0v+v5hh>mbNu8BVGhz%c_8 zmI>(N`SJh=by;IL93f9~>`ivDy}N~`ZIGyB4%E{z4a68jB2zHQmQFCNwP1{4ePtbW zRb$k5nC@=x!5D+Ci=6_?0vxk_OiP`wScM}WFenCC8?K^~CAKD8*cfl3)g97VN5_)) zSE>>)CYA`9_JIumSg+TyUaezgw1PmuczYMxXvj{$+2fzD5F*JaQPP9;wB*^07-*fB z7}Z0p6eHZ)y@k!4TbSy0ALuw{eAr6@JE>9#zRZOh?W0`;HZHAP#`<6l>uYO3AdGj$ z(7FRtY`Lxna&U|g6z#vjCGW35gsd!4tqeh_M6iP)9Fv0e%F*a}RqMNix)7kzxf&W=TjcPX8X|x6B43{2S!Em+0 z%E}1DfW7fHv^Ho(2e(vw7{l$^IL^|=ygojx2Lr6FucIm}Z13z~YikQl+agVp*pY~n zbptJf%Lc@b3jkPMS;6}HdW;W=u)DJZ-E|Q(U!udMZQD6ebCO2&5Ih*?SYKbol`EHV z?V*S8?6c3}3(q}=-Q67&MFFMMvG+m$IXTgfwJ!6KQ3z<72Ap#|`q*Q5?D5BO?b@|C zuH3e0ng-I^BNYvo0yq}7TlE3%tRujLfHKQ4tSVd?j&O5t7n|cTT4RvTJ38oC2R9Ib zFChV`UDR$K6$RF+3WGdH2mzfjJv0C5h)To!GFol~b(1Y2r`A_4k9){E7YQBKssfh>73w?#LPQd&e}AX4PoRD+lM{v>1R{8CL5Q6R zPd;%8m)2`M|KbidwkFWVL_#ZZ{Dgr80{GGPnK_$aBrJjt zry8XXA%F$8WCurlA0ZGrZ9yy`&r^KqD=J*QJi?1NcksfE9dz0u%M=7Z+CFp=`w-BW zm{?pM6nJR8#^q4~3IT0vKnUQcBmxd0%-1rP#!M#GSqtwS(kw&y$fFpou3>k33*+r= z7_Fg_WT{#0Wo2QV)c|8C${N*hh`g%e+=W4hd>L!NJVT-qJapw@j0P*%*uI6`@eZu9NYpXU7u$b59LKLvTW2GX zUKCgvuA(Zc$g8EJ!iYcR{+at9w$ufN&=cYsXJBEFB^jQ$@&qo8F5%Yh25#-%LTfr? zDg|f9f4|W_$BPFD`=dI8e1O$z6@y}c5CU2gB|^`}K3H0AF;Ix3Al86+hde9rWc4Jj ztX#p(og3KL*+8dTq)B!x`>@;m^U?F~tS5NXwgY1fE9DUD!!-=cVYH8Kfk3CW&&)pu zT29)U`WVhz3)7Dfu0MVadToTs)-IZzF>Dw85);P+aH;PeZ)g_8yjik&G zD8Ok8!dcv3{r6aMe1nL95Jy4CdWb|~^@*z}R%=Xe?xNY+gVP2wJ+6J&{_9!BKH7nZ zkgrrI)`v){Jl-3fju_6F#6Qc%&$IiBV6=rd0ZEqNu_v!#?aB&nKEH{rTe~pEB2AN? zwEp<XM*Dadfb=ZlL$>t!A|jZcA|OjsJof0LSYKPi z#^xqAHa1|4L7JvLZ`m2MZeqV`!{pwfai6@@Gv!DAMzVO_07>~y&isD!uFS8h6zhHU1*DwP%u08Y+9((+8 zT)uo605F+MqHiUFNKd|j43X2phJYeX@#K}OxI7r**4`d&?(ITbi%h9AWoI|e zArN7Z=eRP6;}+Bd9u&fnDj@grVE~->@I)xH6m@Y0>%+l5(BWf8$64A(_rS&=&v0o_ zVYMm%0sbS@yvPEQte@M(Gm z?aRXw53Sd@G%UawL#rbp5|qSwdS(hnNt)uyBadRZvWBf&H!<1WK?q@KpyOy@!vY`_ z)nE>6%>F)v0C@_h{Bj(ysLdWd@M z3bJYtTcC}Oq@_}vFZ);vat>)(;_54F46j_m?#){mZ*0M91C^y`yMK(192h;Sg zS5{-CP-_qYiR9<&e0hhUqeSGR*B-;la24CTTi6}%z}(62p3kvaGQ^$4WKA&7E7=o@~Phk5r{+9RI|QjX^QMY8iozncYGN zP*R<%{bOC^YRl3LU-D1{I$qd#0k^hqAy7b;WM>@zL_f1qjj%pk$FPj{(N=>3K?-@k z{EzcMAgDaW+GAHytqw8W+QoEx58isnM4gS~>)b!b#62x@l&eEzRnc>ASOlWJP5t}? zK*4%guaT4)vL_3amxq|%+C{Uu2X8!NddBuK4gevk3lyt0vQY(q#ey6WluXW*eVp|O zRwGRn9)HzCSi3yL#?2koqYgU=ioy?nk0Dq zvB$778sX-xTiDr&_g9*pv48HzB@Y4{Go_ah0+J*-SN^B#I<#$zx~}opUj1r3@rqaA zQ=j}KKL7d8BZPpWD9%(Jt7#g95b)4JV1qHV{ol`2260N@>CC;n>D$<5K*wrT;l-V8 z>^4p8&bZ4aA`0+6Ku7_>1FZJ|MV9hegA(;EM}4azsw~55Rbf;V5RAoy{sKHR`^5FFOV_G)%;7Ml955sEX^ z2Z0UF89L(-=$zXJh#gbbVK^u-8kX4Jo#Oh<9c*k*pgkP|a)b!_NeRz5jCFDU@L4M~ z%{v78!U@)f1s=aVz}lb(HjJIy=L92&_Y~-Wb4aoj*B*Nu&14n3Tbr2f?e*<^?2bJb z`bwUX3PA`sXTccXmy+(gv1a2yi~(t0pk7%)IT-e{%l1O}A7>3~AG7r{P#V3L+4 zu6}8a;pNNNxqbuVjm`eEXLmTQXrBP7B$(h4EJ5V@n2oC4zJFK`{H&uGt%7q7t2^NQ zduTZ4;NVbX1*)Q&108$gT?D#Q!kJ;e3MZukX9CVUfYE$}4E_I^jZ1OHQRWAL4aVV| zeOan(XC6p<3+pYatis@-0d}XmxV5{1o#_rd-9=5+ZQe5LMW?;0LZRx=k6T z&TCv6Ttc1Kb6|sT0qo-}th30{9AEm#E3rPjgqzzpuszzE>fc z*@yN=v3dr;Dlc(qxQ?~K>Kxd(2#>c8-U2F5vHI9G6e~6MZf-+Qnz@p|OV5|@&zBH! z{33SsP~?K?T}lXHJ}%A}LsDeOhZVBAjHA8gV%%TeICvle9d&`~@(APW+h{iTz=(i5 z?8D$`=6@u(V3;X9hyx=EVb(QH1jabhI!C@*BO6v=oWU7)>SXI)1c=r;zyjrp+CtxP)dMYX}raO@}!~YXj7y0*oY;aV0U+St~7OL{1ak+(HEg-Tp40E0*(F7-Kb4DwO@-z9(@$ge(rO4@%nXm=k{ab1N&z-60MR1N-1cq_W_D| zj(__o=<4b!9)IEqJo@OPy)siXxBpoJO)ndaZJdLF!yqp(EDCJw?V;^D2ywfCCdw>H5U!{yag$~nStwOe*`DV0UnhI6bo3dQV7X!12!&_ zeOet^u1A9cE5j0-TYKo*<_?sVfdG|Z+68Rf+5!Z}!g}_7^$J9iW7_R2 zJ>;o`U@QjPU`WdWgjDcW_j>LZ%R|qBj;g@5S3ZeiG(@M(9R!kr2t_L4wZ_)XO)xmD zT)7NY)M$;LlZ$0iKynTrJOby)2O|g};f#)aR_tP(u-RzD4CvUacQKvb>3;$Rgn$nLJ_ICX4j~1+ zb*COvzMnvcDl)7;`4IL-1$3wHdcRj`4$=-g8(RPvRxYoD=L%EP&8x(@>h0q_JR>B7 z972eT0c_mueD$1ZWu2oQme|?a!*n|Bc_&`tpOXT*v)H_~)yF@p$jc0!ZRem^sxpW^ zeg-F$bp{~>tg#o-Jo65Vs;V%kYi#Z8plO;r68J!bJkMc_!Ht_Yz!<~T^{Xg~0!HgO zpqeCVE&vfiz;G~tQVPbH3jzGR6zFK1CXS|Gxq{1AuHgC$FJL;IMy0uf{+S3$N;FM_ z=bn2GM1&`wd=jJ42+n&@-_$UR3%m~yLg4b1%Sf{f&2;**02?nmz%fr$odstMqr5;Z z)g1_Ha1O;*XO9}EG*pEy-(DiKE3>Wv&)TA{BZzqo-5E?<8 zjLH$}w7w(A_0A)&bErJQYPAY5peidM1WYlB%5t0`8}u#IL~zETGa9Xl_PNM5^40;I zA*l;cq3-a{&O21~2zinsA4a9F;c$QeLc<*-ml32cYvd|{4*{*wF)=ma!k;g%Ex;MF zQ3?3$4!$%OJnC|YR3=E*YOnxQgBsdfw9}ow%Y{(oHL{s~YzJ!%$X$HkMfv z?*Jow@E8;$D5`ZA+cT?vBD4{@%V2tkNX}<{U)5nK(St8G}J3NK+ z9(7$qCJKW=9lKYmIIgs}yE_L2%Bqa&K8#?sjl}X@_p&7I_X^|yfazosfsV_Uds1Jz z1K^NSLI{C}9)1`h1dK)_FfiyI#1@>-f&E!WOxv}XjK?nBsV}KMK5>Wz@LVyhc+a27(851`q*C2_%d|n>fD>8xDSh zsLe$bzYksb-1N53IFi}kX&*)&J{XYaNR!TGUxfCt&drs&?zq3Sh6|B@igOO#^JLk+OPDd% zk7Y#pV%PKAd@=Z+*?X9gqTcD7Vuv$hY;K>XY3BD75Jw3Qb}r6FE$@YW&J~l{tbOjm zbGUt+_YVwln0-EU?c5|8v+g<0i4^jEjyx_-GzH51t3l zgXh8X;Cb*ocpf|to(Io^=fU&fdGK8H=K;WR;U4zD1P`7E&x7Z|^Wb^#Ja`^F51t3l zgXh8X;Cb-8K|29e0Pmjv(ChaTKt2k);;B~cR9dt^xp?aYJtaOQs)Lnf0bK@EmX zrEtMLu+Mz|a44BZUjzmv6`X(If1>+|Hc(1M-a5`9rG&K)>~rv$k%cnGz!^U`lI8L~ zpDu7I!GyqcbMv2%Z*BZtBFf9r@c&n=to$39C`*5-ITZ*@N`MQro45W&v$gT9ME`&G z{yWaH?5YpNzdN09W5ur6)nSq}L8DQY5QvOz2>}*CNESlI=GhoyjBNzifUsnEU><(P zJcl1RU>k$MfCwTejKXL%(nRH%&be~cjpy7G_TKCF$2qs^R(DnPt?FTPtGjo9&eU{Q zojPZ)yY|{^efL`5MJ2yleb^ly{V|~wU~g^tK*-F=X)OPgZLPftfY1EmCt3N>&qF#3 zFv+bQWH1460THbJ1aGf>I{-y~`Qx@Q@~@1|D2;_kleyGshNBj1ZP-n1V6gmXn!XWdBdgRUyPK!pL3*4wWV8jb!GD5;0#!4 zcmCO0tMhF{R4NzTM@9;Tf9y!1%`NOi69GaBfHABs*Zz5})_5bpykgORba-s&=ao_m z+Y!6nQs9PQ;8LKq-2BPLO5@uYW2#Ute7rPPdY^RUx=GC~zI`!p!O^J)|De6r{9Yn* z{c_>qLbdoWxsrjsh5bVUK?(`M1(qA@Ke|#|eG6Gz9I6a`V5BnqbBqhs zrTmB#^5+<1ov$>A_>}`Va&QBj73-HS|6Xft?XOcVuy(EX^3r;I7EB#f3n8P+p~_H46MEWGG45`-Ifo%8C-n^ zpj&WxQP!1+Gj(}+<$tf#8sE{)c3G=8UcS~Sf6wIT@S7beKS#Hw_CRqCFqAH=Hhyol z-u`Rd(~Px7@bckG>ANO|O5f^8b~3#MgA4*7IRn5(FVdkkIPmaA>IqF23q_^Y($@L|K0Oy=7FE9O8*bcwfQf6m@cJQ)Rv-P%- zk&!n`DWAAiiAVE;2`AP1ccVD|HinIkGOzGl_q(N3ZwA8`Z#{s62s}&qIntb8cqC}G z4?C`danFZj46AXBR(-^7*k$gL)y9Nh4zx%jAV)L$lj52aBDoHGP_^ zes%qm%~tzP$8q3QhXBrzwwh?S+jAFF{n^RUp}$%3{Xe{wiVcVWB{_)b==^&7kyg7s z>$)yfbqe4Ty19r(t95sr>Sw1%%74vM@nL=AMW@Jm~@b?Euzs} zzdteNxv5I|n;aoNc}rQJO>o0sU0Q#%(P%#8dmc(&1)On&NgM5;UA6NoPmNEGeT{O| z)3@CAr8odK)LdwMvfXIi=eiz7-BBdy?#41c3^2u?5Dt1ZS+U-dcX7*>1ed^F34#6~H({do4n%5eyM6JT+FC{2C?H zGq;leOhk}U0>JR<>gp%8*7sVnn4h1AwH8xTQvfizw6yg2=;-L1UDy4STNK=w)LK6p zMbU97C1z%3z&XeA@-kYj)-lhcFGwlh%sKyx$>%FVGRpJdy}7XPRM-j*JD!V4&qq-R zxSV6c^HB7CL~+6zR~G(KC+W9H*Tt<7#1j~o;9RiI>hg!fAQ*Q&4@Z0#6~W6AP>B zPdD4aov!1+tqy}ZE|`#TszdM!1*A!gD=TY%5bN|CJ*94mn%!<$3K2%Gthb(O2f?i8 zx==&2U~UOaxsXFM@ckl^xWg~6H9r_@^Ubalx60~*tRk%J$v^Zq%P{H`@0pS7FQ@gU3B6rZDD=q3D+or!g7}^*^I04dBnPT4;QO#~!mq3>d?-qjZ^}3*ZUyxrNY23-6N`Px%z*B(Yz*qq&_|TomyHZ>HWMcGJxj9G2tpskYwN{>NwHq(kMf*WgVYfo#f@0C(wetsUURtud@2Ny0}Komt# zN@0C{{f~_?_ed#k8BUiR+?Yz!^qDA%jte1h`0!zPo(IQqFgrVoQmKR}ilDXrW3u$u zzfxtW`~_ZHV4Q;qf!6ZM!$CV3Ri2AU&x6Ya5^E7#3l3n?^HA_y#5zUe^88FMM`7^NQekkuIcY>}4H`>P` z9e6Vygv()L3!7MgVH4!&L?zL<@&v3tO5)}R5v33yqS5))wP)HvIPE$LPIVYuIUub; z#sFY&s>ARKK6H}e%JSNuYGV$$&dm*Sbc1)vIhGpj54FQ!#C06Vp;<7;1L+8q#$a4P z49~*#OGuLl7grj8*-7+kT_tX6_337AaK^+^tNoc~yY-OgdT^(XfjK^G+ySK#z!;o~ zBk=qZlBk0#jpip(V_)gXn>tr4$Unn94woD2}}P<+Ufs z&@tuS{2(h693YIfR~pZRK{%xxg~O!@6qJY9B#2D{#yDn6lPLQ|L`jVHO5@LoXrfC* zdb8UfAp{m{D<4XOU>L5O0UDA6+5*OASsYal@LW)mVt#r4gPk;aohxsJ{Y!u|E*BcB zp9$NIm&0{|L&XgINez(Zz5kqp8^yKO@>A`g`C=s< z3{Cow4u_5{OkzO*h9-R!iXNg)ELWNfj~mkWIybp|dccj5)z#H!wAM$Zl(=x=0)ikw zp-_P5Wii(I^XCyo5u}t@U0Hd`SbJ1C&aDD+6w@?)CXVAtAq3{;=HNKamLE8L_%O=l zGCG|Ok~H}<0OMZ?kmCgfIGEtzQlh=Q{IQ_fz9-AvaN#n6G_P-B08*l@AV->D?fiwm zu*Ou?O$>4{nSmRfm8DMyjmE1S<=}{)fg5p7=EndeL{OaJsOO;Qx`>h#^)n|wm4@Mi z(!E)O_^sfEX*cg2p$=K*C;|jv_V4|4Y#S@=K8oe0KO$>5y0RY1} zxN!{9fj8|#7A0(VV`l)Rv;lIkq7Mp!qFg=oB#b^n>gEMGIAah(V7cD-P^%qGIgSIT zl7ky&lPrpI;$Br5Mxj(h7>4e1=Px~NtUcu3#6gB+41#kkG=h&e+U=LQjte>51vlbM zc^CtkBm+5yX0jkY?%>qI`oqTBigyzS8Jpln@R>%t^$JHSxKl?n`6N-^(Sd=|1WYP8 zQ%B+YMI>>E)2p>lbyEG1o0Uf0oa;++aK?(OOKVTITCEp5N}}XeA(`9&HUOYo%Up6R z@Ldm46p8a^E`2(QlNWjZO}xJg4ge#~h5FM$J2)zxEL+199yICPJTqw0U;xI|7z$ni zVc01yo?Lv~q-IWeH?RF+EF%;RYpo9l?O;+m3WrOR@Rf%o=K)|~NNq+;J6oE}GC87- zvvz*zNo#5RW(9$I!HxO#VN@Ht%kggB(awoS8rWVQo#tbKIL$KHba> zu?cQSl>r$J-vl;*3e=v%oiJicW?wFmOMWs?fr_(_v z>O2Kt?1ct7ZW!QToPi6GWoGPhaVf#2Kzn)lW3Bc28$a91sd%tU!&0r%bzfFJzXv;S@NG zzSf{vLlBaodPqU|K1|Rq+ACjv5<0#Yj(`2Z(Tfq&HWo=xw zz`7uZH|2p93ZS4hs#Z@t&8$93%Io8K`8y4OQ!IE!X1LoWg~-5-TK&%(t@cB%BNf!}EST&8H+mGP7vv}u%LszNd-l@WGnT08IWm9l_E+{U9DD$}XLR3_v)!+( zTMCm)t@h)Mp#5@(bGV0Q!5n`hYokXgvrHF}fgFCJgdhy$$(8j_TcV05<#nIeeW$Oy zL&G+7dDrzN1sG$cm8JD3Tdnqsm7`GhhTupShOQ-Hvt%HcK-n9D@B3&6LFvrN^G_ym z`eM&>!TG^hUzz{Iv#-0puK<@Et)KB7gjSTOY^5blNdeaJKpZ{VSM8=`^vAc&ChDLOK=5%mDk(LPj$hKp(!6; zNkXUBlJuI?LMV=*X+N{i?Vx;q>C}^{PVaG*x6uxC$7?|JC$m4|y8D;N{li+V_Lo}g zIVmO1pFfXgvkA}hw)%!S$YHI;#fulS#s$=%<`|wK#1z6tg+V~lu z3vRqlDYYxOu?@&^IEtfZ0E~C-Za>ex;X|qYfq{8HVAln}VAAw1YmCo`%nnX~Axmzs zy!xxHM*VA;qcHBd@ba>hZSToJ4#gNITn|J*qgFr0PMv;wXlD9tAgWty#kQ|!EjMXu zA^3Uax&fCjaD65b80QeK2LQ~b$z9eMZzuV1PKJyrc2<}FQ`l_2oGAx~eFqiE5$({1 zu?upzoZ*P4Z~;ZM+U+5J_S6&Q$(eT%QHyqv4~Q7jl!5ar!g1HRc%kc8DFY9bm+7ER z?u0cC0JDRaZD4JgnoGZ_Ta6bp<)Sj?z%6j-bm#XrItMw%6&fo==pZb}`RAVCV@KWy zutgZNgM2K5Ndd5VD0dzFDg-zpwg7A74)WnJDS_bdp4+ zm0*z7DKO=ObOh{Rfyg9a!hsx`L4mHI)@U4mj^XLKvC7*CsB5!>eI{ZF3B@#PrAE^Q3j22ueRt10I<-<9H<2oRMOjCWQF~*^t_AkaP z5uCM^+W%~|S}$@Og|b`Czzw_e`Z8UR!>s}Uf*>fKJ$>x+n3wtew= z$5HD-h_8ToW>BsI07obK4r{Cg!S3KdS^y$gX}`DKXx%SeiSayh<7#kYOAt?K#>t_^ zuv%P2yVV|@e{SKa(Yev@1h8Osu+L

+PWOqNh!VN{N&o; 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

&0ouuJw2V2DI- zWBnNq&C-W4tC|o#zxt>)Bc*R*322MfU~oHg*r-UdrN^K7iq_gd69a9QpHC1=uvs5G zJI>ONWYYr7A#fsAHV2;I?I|Nri9sc>BuO$Jjd&0Qh@$AK@68xPo@dzK+Xn#D>$PVZlp{UlEEG5v{~-v35NI?S zf70o6f9H|?y)SV&M}x7e7Fy@Bu+ySIqh5co)9!qyCIsy)pmr4x#Ddgo zm(cBe4}I|A*Nz+q5hdmQ_z4O>05H@Vst^b}tq(cf&M%oMb+2kAOX3?pwr^s zkOPpt`X|y+`yI7=F5WeBIRZw&o``U?g1*c$1C|sJTiy2-Ywh1%NpWL-8v+3w4&pFa zYFDz6h3Dr}zws;G^wL*l69>*U2&E_kl9>TZb4Mz75}sl=SoZ?!*AWa-k;EmxGRz+4XE zxgaZ;SF`}ax;tyH7vKEw$C7VzR0`tMuBg~Oevg&1usIsN<|jHE^>+xNRuBv3MKXXp z46etZsa?r?)*9quCpO>r@I&;~JRX9&5kQ`ZaI}Q~n)m=BQ)u;qziW5tuM}0W(XQZG zf&h-=!Sw=Y*I$W$TFvgqx}E+zAAI=!I~^{-C@+)Mt9)Z^6!Id&T5sbodaeHNKdNoPA69yt$>%V62?vMY_SjO-eugXzR^zw@a#ljT_eem$Hv*1F#^x%+`{g*Jd?*Zzpo09gU2*Se><-g~Dk zR#4oyat*r3*#`|$aOA7>@#v}E9?+0dg-~TE&P9>{*6_g!8Ni3S=aMybuY^?Ww zO=QJt&iCr$xQ>IseS!pkNw03$`e;Av{O9{FK6JY~bHJ}fI7$JPXk=-D%|ZXq`>pox zXGIRW0{;+dtLgL-Jw{e>|1t)YG7v)EX^eSozu!kZi|6Q$$1NVEG}hPG;kh1^l)q0n z`E#`*UI}9jtg+yn!*e~jOC!5~^viWU(P%VY`|v{#{lL8VbG7jh#yG~~G14?ex6}E@ zD6D;O)y0i#7C6{aV6-J~z@Xo|eKeasJQadDo(GrG#}SSa0K!@%#y}Z^X0!3bzULv$ zvL$`C#}`)!DZ5`~M{EVhW?q1FJ8$HZ>5J1euT7YTK4Vai@r^?WCdOc*G&rLmo%U_^ zu=25r3w-r7wSiHU;KB+ns5C1u+vvQ)KbYQbQo(23Lp!L*YRRLYU9K&PTmzhAI%wZc zh+WZWLG@t?IqWnqlLY9>M?$s2UakMqdOG_mk_hB8im=I`)a5kV0$`j#W)@;1V7P<5 zuyY41NjX-xeh7gv3Pv#)x|)L_PZKmd-5;3@4_+5fCg&)3KpppS&xcT2!n36SVHCAy z^E>DNd_@Zgu&k`o>k^^0ikvG?3$zE(+hzyRtFq~=<2eD~)Bz(Nll(ZaDuF3x0A*+m z!rKWeVe_lFU(DxDO~tWd^lAzmd2Z2Z+c!+7{6%@3N7NmI)d#Tp3PMAR61|a3p_3^n zQ-hC3`wUj*a%l8-}xk+f$jraUBFSs8AeN-Ysa!y`fTs zZh-an`kmGoP)b*FK_#%DbnYKOuV{aXG=tx1zdahZUOSsjwnOfs?gWtLO2TUkPB;>i zVI~qVO28Y@ca{yQ)tp}x1hgWlHA*iX!7-03MVh18@4Pi0PF|sBX$KA~RaG9_HJ%fT z3I$MtR=<5aE%i26bHSL?r6};RM6Iu>F>e?BTa$Qw`Unpo~0vj@kn0M1$lK

S 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 diff --git a/img/markers_shadow.png b/img/markers_shadow.png deleted file mode 100644 index 33cf95504706aa9d06ad40dbcd2fa168cbd43d13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 535 zcmV+y0_gpTP) z;YUMJ9LDj?%v_nt)m$@krAcNsnI+jwmXs_h*_0I1l(LjkN~I{3^dGP1#rMT==4>za zro+dw-OhQ=@BYr2==b~ohHFF&QHddL@L-x8!b2P}iLwT)VFmCcAyeYZw4@|J+LCcd zBgGt31dLmO_yhbHCxp)=Gm?{e$xA_shLS@O1<5l<$ejLQAa{^JW|?eJsqD5OfsQDHnvnUgXTZ^^E-W#7^^w0LeunzBK-x-1c9PO_|#7#1eR0~!9Y z!2%sQlb+>5&iSp&bH{QZdu(Ej>Qp4pD-WoO$C{C0VX~C9$pY8%D9?sRxtCkHBG`!> zQKcqTS$0*#48qYK2$PhMvhJ|+CwZ4|`H~NLBh;N-${9iS2vRqy5lY}XMaDhjcuj<1 z$1eo=l^^-!y9c?VB8ReVRHG<4=JM_SfPLu=HZZ$bpaDDV{*~&y5~4?lwrtX0i&kGy z3FCsZhVuqCs^fD6tCanezPTYpmy@)`5w1{)SqaQL#BNYNM~7iVjaQYI8jH5DE$aj= z3ytaO32~0mVIoYHv@X61ix)=*u*SGyqDG*Uq**+qVktt$jsrRkUQsMcbX>z|j`P_4F?%Q_@f8Trt_r4(hxNiEFbHd*`e3wA~&9LoB z|JTX7kq}paKe_vc2M*ug64EAp8fjKield;^5n(28CRtDv6+dL~Fp+@_%zJ24`YVVq zBpE?@#aJOC0|_EPCT%8Af=BS!Pl8hiNCud49YlR>}1Tb-#*dPo+ z)$qjd<2BSi`Tw*-+e7qSQIZB2F9|{pVj$PjAteZrRFvox2~1WdF&r3yIy5pE{RB@l zFz=xq`k=pIC2L3tDv2DDqf#RRd?YC%r9h(yK?V}y#2Ne;Gy~%>VVE>brD8req55dj z?`V{SpsL6rIix0C3`wz4Xz)=K5@jHwsV3J7Ob2FQ7TONa5@{P|X@8nNrj3)41?_i<^tV759Srm^CO?9y)MiF(vXB8C1-?G z4cXS3j7SqpABu$-r~P)!vew(g&Y!umz$z!D6f{YWcMIh87s;8WY?KYzKA%uM*i&Y{OPyGq6Fs zND?_l42fYWNsXzKmMY_qTXxY&%XNuCjBL%1X}m$FZ3eW=ptqRhe&8VRI&f&=b<3}T z1K5LI+Cvh8kVC&qEUWpL7FA!ySwbVa=-RE?Ip857O-z|6KBeO>gNjo2nB;NbByi?% z3MX(JI8xFMkh^EZkQ$^&o$0EiOsQg9XZcj)^09RVjFdDn{Yp#)^G&{$dE&gm1P+<# zo50(^?-~5Y|GnjX=g5kJ4kbN^VM$SQ){wHO>Pp)zora`@9f+DD%g0H|4aC%l=nOl; z3IpF~a_0zmANa#?!RzmMPm~i=bVOpJl${JAOZ3}STl1s{Vdu#uM5J6@UE$=qt=bne zOO#ic!0RXl373Hn8eaQT1d$*~&9M@*tCr6TzJNuubXrJ>+i}fo$8t_#>G&xTG05@7 zm>N@zTeV8eLY5dN|5xB+;BWZAYf;QQ5_3+{jxv(6ri46KLZ(HCq{JNcNr?!t7gbh< z6?4zvZ`V?Mn~s<_O!!hufsZON?^RMxV_hL7+p);1TG9)2)Y)X*oMdfrE&4wW1rZ^n zh!Hs)@aVXzcBLN0cav}WloVXV)W9Xni`qg;ST?c1svT!ZEt$4mGA1Exza}AW9T6Nc z{!;Q%!?!W0&M|Y;nRT@*ovGq`0U|^aa-b5jo*|^;FBv(Hq%Ilw&tHBqg51N%A+JVi zrkTVtliOuUoFL!~ObubVu+t#7r_Lgi=5S`W-GTINSA^sclX#_x7zR_~TdOmHw%VOG zMGmK4Io0k^6jY~%^!?vr?AuzkMzhjgZiQ8>@H*G=ssxgX6?CU+ywRihMBIh2`n_z%eLT1;Q&-3)SwdsU@p zOzw5n)gm%XGRpSW-lik(1F^doLuy10r(wDOt*~=EVe(*Z=-Fl+8U1cCHGf}TjQ{(| z$|>1rNs5Y1hb^X72z)JK?4eJd957LN%xWKOpenStreetMap contributors' - })); + map.addLayer(L.tileLayer(MAP_URL_TEMPLATE)); + // map.addLayer(L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { + // attribution: '© OpenStreetMap contributors' + // })); map.addControl(L.control.zoom({position: 'topleft'})); map.attributionControl.setPrefix(''); diff --git a/views/public/markers/img/markers_default.png b/views/public/markers/img/markers_default.png deleted file mode 100755 index 2c81d15bf68b2444f39108823c7166cd7d74d8fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119805 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 diff --git a/views/public/markers/img/markers_default@2x.png b/views/public/markers/img/markers_default@2x.png deleted file mode 100755 index 35ff61b50db09885901cbd0e222c2540265cc357..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254280 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 z 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

JVRE-K81RUbKAU)P=1 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

m=G6Jk{JFi#O#6`R;|(sIJpaEH2FQUz8m|-h}Gb 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

+PWOqNh!VN{N&o; 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

&0ouuJw2V2DI- zWBnNq&C-W4tC|o#zxt>)Bc*R*322MfU~oHg*r-UdrN^K7iq_gd69a9QpHC1=uvs5G zJI>ONWYYr7A#fsAHV2;I?I|Nri9sc>BuO$Jjd&0Qh@$AK@68xPo@dzK+Xn#D>$PVZlp{UlEEG5v{~-v35NI?S zf70o6f9H|?y)SV&M}x7e7Fy@Bu+ySIqh5co)9!qyCIsy)pmr4x#Ddgo zm(cBe4}I|A*Nz+q5hdmQ_z4O>05H@Vst^b}tq(cf&M%oMb+2kAOX3?pwr^s zkOPpt`X|y+`yI7=F5WeBIRZw&o``U?g1*c$1C|sJTiy2-Ywh1%NpWL-8v+3w4&pFa zYFDz6h3Dr}zws;G^wL*l69>*U2&E_kl9>TZb4Mz75}sl=SoZ?!*AWa-k;EmxGRz+4XE zxgaZ;SF`}ax;tyH7vKEw$C7VzR0`tMuBg~Oevg&1usIsN<|jHE^>+xNRuBv3MKXXp z46etZsa?r?)*9quCpO>r@I&;~JRX9&5kQ`ZaI}Q~n)m=BQ)u;qziW5tuM}0W(XQZG zf&h-=!Sw=Y*I$W$TFvgqx}E+zAAI=!I~^{-C@+)Mt9)Z^6!Id&T5sbodaeHNKdNoPA69yt$>%V62?vMY_SjO-eugXzR^zw@a#ljT_eem$Hv*1F#^x%+`{g*Jd?*Zzpo09gU2*Se><-g~Dk zR#4oyat*r3*#`|$aOA7>@#v}E9?+0dg-~TE&P9>{*6_g!8Ni3S=aMybuY^?Ww zO=QJt&iCr$xQ>IseS!pkNw03$`e;Av{O9{FK6JY~bHJ}fI7$JPXk=-D%|ZXq`>pox zXGIRW0{;+dtLgL-Jw{e>|1t)YG7v)EX^eSozu!kZi|6Q$$1NVEG}hPG;kh1^l)q0n z`E#`*UI}9jtg+yn!*e~jOC!5~^viWU(P%VY`|v{#{lL8VbG7jh#yG~~G14?ex6}E@ zD6D;O)y0i#7C6{aV6-J~z@Xo|eKeasJQadDo(GrG#}SSa0K!@%#y}Z^X0!3bzULv$ zvL$`C#}`)!DZ5`~M{EVhW?q1FJ8$HZ>5J1euT7YTK4Vai@r^?WCdOc*G&rLmo%U_^ zu=25r3w-r7wSiHU;KB+ns5C1u+vvQ)KbYQbQo(23Lp!L*YRRLYU9K&PTmzhAI%wZc zh+WZWLG@t?IqWnqlLY9>M?$s2UakMqdOG_mk_hB8im=I`)a5kV0$`j#W)@;1V7P<5 zuyY41NjX-xeh7gv3Pv#)x|)L_PZKmd-5;3@4_+5fCg&)3KpppS&xcT2!n36SVHCAy z^E>DNd_@Zgu&k`o>k^^0ikvG?3$zE(+hzyRtFq~=<2eD~)Bz(Nll(ZaDuF3x0A*+m z!rKWeVe_lFU(DxDO~tWd^lAzmd2Z2Z+c!+7{6%@3N7NmI)d#Tp3PMAR61|a3p_3^n zQ-hC3`wUj*a%l8-}xk+f$jraUBFSs8AeN-Ysa!y`fTs zZh-an`kmGoP)b*FK_#%DbnYKOuV{aXG=tx1zdahZUOSsjwnOfs?gWtLO2TUkPB;>i zVI~qVO28Y@ca{yQ)tp}x1hgWlHA*iX!7-03MVh18@4Pi0PF|sBX$KA~RaG9_HJ%fT z3I$MtR=<5aE%i26bHSL?r6};RM6Iu>F>e?BTa$Qw`Unpo~0vj@kn0M1$lK

S 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 diff --git a/views/public/markers/img/markers_shadow.png b/views/public/markers/img/markers_shadow.png deleted file mode 100755 index 33cf95504706aa9d06ad40dbcd2fa168cbd43d13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 535 zcmV+y0_gpTP) z;YUMJ9LDj?%v_nt)m$@krAcNsnI+jwmXs_h*_0I1l(LjkN~I{3^dGP1#rMT==4>za zro+dw-OhQ=@BYr2==b~ohHFF&QHddL@L-x8!b2P}iLwT)VFmCcAyeYZw4@|J+LCcd zBgGt31dLmO_yhbHCxp)=Gm?{e$xA_shLS@O1<5l<$ejLQAa{^JW|?eJsqD5OfsQDHnvnUgXTZ^^E-W#7^^w0LeunzBK-x-1c9PO_|#7#1eR0~!9Y z!2%sQlb+>5&iSp&bH{QZdu(Ej>Qp4pD-WoO$C{C0VX~C9$pY8%D9?sRxtCkHBG`!> zQKcqTS$0*#48qYK2$PhMvhJ|+CwZ4|`H~NLBh;N-${9iS2vRqy5lY}XMaDhjcuj<1 z$1eo=l^^-!y9c?VB8ReVRHG<4=JM_SfPLu=HZZ$bpaDDV{*~&y5~4?lwrtX0i&kGy z3FCsZhVuqCs^fD6tCanezPTYpmy@)`5w1{)SqaQL#BNYNM~7iVjaQYI8jH5DE$aj= z3ytaO32~0mVIoYHv@X61ix)=*u*SGyqDG*Uq**+qVktt$jsrRkUQsMcbX>z|j`P_4F?%Q_@f8Trt_r4(hxNiEFbHd*`e3wA~&9LoB z|JTX7kq}paKe_vc2M*ug64EAp8fjKield;^5n(28CRtDv6+dL~Fp+@_%zJ24`YVVq zBpE?@#aJOC0|_EPCT%8Af=BS!Pl8hiNCud49YlR>}1Tb-#*dPo+ z)$qjd<2BSi`Tw*-+e7qSQIZB2F9|{pVj$PjAteZrRFvox2~1WdF&r3yIy5pE{RB@l zFz=xq`k=pIC2L3tDv2DDqf#RRd?YC%r9h(yK?V}y#2Ne;Gy~%>VVE>brD8req55dj z?`V{SpsL6rIix0C3`wz4Xz)=K5@jHwsV3J7Ob2FQ7TONa5@{P|X@8nNrj3)41?_i<^tV759Srm^CO?9y)MiF(vXB8C1-?G z4cXS3j7SqpABu$-r~P)!vew(g&Y!umz$z!D6f{YWcMIh87s;8WY?KYzKA%uM*i&Y{OPyGq6Fs zND?_l42fYWNsXzKmMY_qTXxY&%XNuCjBL%1X}m$FZ3eW=ptqRhe&8VRI&f&=b<3}T z1K5LI+Cvh8kVC&qEUWpL7FA!ySwbVa=-RE?Ip857O-z|6KBeO>gNjo2nB;NbByi?% z3MX(JI8xFMkh^EZkQ$^&o$0EiOsQg9XZcj)^09RVjFdDn{Yp#)^G&{$dE&gm1P+<# zo50(^?-~5Y|GnjX=g5kJ4kbN^VM$SQ){wHO>Pp)zora`@9f+DD%g0H|4aC%l=nOl; z3IpF~a_0zmANa#?!RzmMPm~i=bVOpJl${JAOZ3}STl1s{Vdu#uM5J6@UE$=qt=bne zOO#ic!0RXl373Hn8eaQT1d$*~&9M@*tCr6TzJNuubXrJ>+i}fo$8t_#>G&xTG05@7 zm>N@zTeV8eLY5dN|5xB+;BWZAYf;QQ5_3+{jxv(6ri46KLZ(HCq{JNcNr?!t7gbh< z6?4zvZ`V?Mn~s<_O!!hufsZON?^RMxV_hL7+p);1TG9)2)Y)X*oMdfrE&4wW1rZ^n zh!Hs)@aVXzcBLN0cav}WloVXV)W9Xni`qg;ST?c1svT!ZEt$4mGA1Exza}AW9T6Nc z{!;Q%!?!W0&M|Y;nRT@*ovGq`0U|^aa-b5jo*|^;FBv(Hq%Ilw&tHBqg51N%A+JVi zrkTVtliOuUoFL!~ObubVu+t#7r_Lgi=5S`W-GTINSA^sclX#_x7zR_~TdOmHw%VOG zMGmK4Io0k^6jY~%^!?vr?AuzkMzhjgZiQ8>@H*G=ssxgX6?CU+ywRihMBIh2`n_z%eLT1;Q&-3)SwdsU@p zOzw5n)gm%XGRpSW-lik(1F^doLuy10r(wDOt*~=EVe(*Z=-Fl+8U1cCHGf}TjQ{(| z$|>1rNs5Y1hb^X72z)JK?4eJd957LN%xWK - * @version 1.2.1 - */.extra-marker{background:url("../img/markers_default.png") no-repeat 0 0;width:35px;height:46px;position:absolute;left:0;top:0;display:block;text-align:center}.extra-marker-shadow{background:url("../img/markers_shadow.png") no-repeat 0 0;width:36px;height:16px}@media (min--moz-device-pixel-ratio:1.5),(-webkit-min-device-pixel-ratio:1.5),(min-device-pixel-ratio:1.5),(min-resolution:1.5dppx){.extra-marker{background-image:url("../img/markers_default@2x.png");background-size:540px 184px}.extra-marker-shadow{background-image:url("../img/markers_shadow@2x.png");background-size:35px 16px}}.extra-marker.extra-marker-svg{background:none}.extra-marker.extra-marker-svg .svg-inline--fa,.extra-marker.extra-marker-svg i{position:absolute;left:0;width:35px}.extra-marker .svg-inline--fa,.extra-marker i{color:#fff;margin-top:7px;display:inline-block;font-size:14px}.extra-marker .svg-inline--fa{margin-top:10px;background:none}.extra-marker .svg-inline--fa,.extra-marker i.fa,.extra-marker i.fab,.extra-marker i.fas,.extra-marker i.far,.extra-marker i.fal{margin-top:10px}.extra-marker .svg-inline--fa.fa-2x,.extra-marker i.fa.fa-2x,.extra-marker i.fab.fa-2x,.extra-marker i.fas.fa-2x,.extra-marker i.far.fa-2x,.extra-marker i.fal.fa-2x{font-size:16px;margin-top:9px}.extra-marker .svg-inline--fa.fa-3x,.extra-marker i.fa.fa-3x,.extra-marker i.fab.fa-3x,.extra-marker i.fas.fa-3x,.extra-marker i.far.fa-3x,.extra-marker i.fal.fa-3x{font-size:18px;margin-top:9px}.extra-marker .svg-inline--fa.fa-4x,.extra-marker i.fa.fa-4x,.extra-marker i.fab.fa-4x,.extra-marker i.fas.fa-4x,.extra-marker i.far.fa-4x,.extra-marker i.fal.fa-4x{font-size:20px;margin-top:8px}.extra-marker .svg-inline--fa.fa-5x,.extra-marker i.fa.fa-5x,.extra-marker i.fab.fa-5x,.extra-marker i.fas.fa-5x,.extra-marker i.far.fa-5x,.extra-marker i.fal.fa-5x{font-size:24px;margin-top:6px}.extra-marker .fa-number:before{content:attr(number)}.extra-marker i.glyphicon{margin-top:10px}.extra-marker i.icon{margin-right:0;opacity:1}.extra-marker-circle-red{background-position:0 0}.extra-marker-circle-orange-dark{background-position:-36px 0}.extra-marker-circle-orange{background-position:-72px 0}.extra-marker-circle-yellow{background-position:-108px 0}.extra-marker-circle-blue-dark{background-position:-144px 0}.extra-marker-circle-blue{background-position:-180px 0}.extra-marker-circle-cyan{background-position:-216px 0}.extra-marker-circle-purple{background-position:-252px 0}.extra-marker-circle-violet{background-position:-288px 0}.extra-marker-circle-pink{background-position:-324px 0}.extra-marker-circle-green-dark{background-position:-360px 0}.extra-marker-circle-green{background-position:-396px 0}.extra-marker-circle-green-light{background-position:-432px 0}.extra-marker-circle-black{background-position:-468px 0}.extra-marker-circle-white{background-position:-504px 0}.extra-marker-square-red{background-position:0 -46px}.extra-marker-square-orange-dark{background-position:-36px -46px}.extra-marker-square-orange{background-position:-72px -46px}.extra-marker-square-yellow{background-position:-108px -46px}.extra-marker-square-blue-dark{background-position:-144px -46px}.extra-marker-square-blue{background-position:-180px -46px}.extra-marker-square-cyan{background-position:-216px -46px}.extra-marker-square-purple{background-position:-252px -46px}.extra-marker-square-violet{background-position:-288px -46px}.extra-marker-square-pink{background-position:-324px -46px}.extra-marker-square-green-dark{background-position:-360px -46px}.extra-marker-square-green{background-position:-396px -46px}.extra-marker-square-green-light{background-position:-432px -46px}.extra-marker-square-black{background-position:-468px -46px}.extra-marker-square-white{background-position:-504px -46px}.extra-marker-star-red{background-position:0 -92px}.extra-marker-star-orange-dark{background-position:-36px -92px}.extra-marker-star-orange{background-position:-72px -92px}.extra-marker-star-yellow{background-position:-108px -92px}.extra-marker-star-blue-dark{background-position:-144px -92px}.extra-marker-star-blue{background-position:-180px -92px}.extra-marker-star-cyan{background-position:-216px -92px}.extra-marker-star-purple{background-position:-252px -92px}.extra-marker-star-violet{background-position:-288px -92px}.extra-marker-star-pink{background-position:-324px -92px}.extra-marker-star-green-dark{background-position:-360px -92px}.extra-marker-star-green{background-position:-396px -92px}.extra-marker-star-green-light{background-position:-432px -92px}.extra-marker-star-black{background-position:-468px -92px}.extra-marker-star-white{background-position:-504px -92px}.extra-marker-penta-red{background-position:0 -138px}.extra-marker-penta-orange-dark{background-position:-36px -138px}.extra-marker-penta-orange{background-position:-72px -138px}.extra-marker-penta-yellow{background-position:-108px -138px}.extra-marker-penta-blue-dark{background-position:-144px -138px}.extra-marker-penta-blue{background-position:-180px -138px}.extra-marker-penta-cyan{background-position:-216px -138px}.extra-marker-penta-purple{background-position:-252px -138px}.extra-marker-penta-violet{background-position:-288px -138px}.extra-marker-penta-pink{background-position:-324px -138px}.extra-marker-penta-green-dark{background-position:-360px -138px}.extra-marker-penta-green{background-position:-396px -138px}.extra-marker-penta-green-light{background-position:-432px -138px}.extra-marker-penta-black{background-position:-468px -138px}.extra-marker-penta-white{background-position:-504px -138px} \ No newline at end of file diff --git a/views/public/markers/leaflet.extra-markers.min.js b/views/public/markers/leaflet.extra-markers.min.js deleted file mode 100644 index 42a1ae4..0000000 --- a/views/public/markers/leaflet.extra-markers.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/*! - * leaflet-extra-markers - * Custom Markers for Leaflet JS based on Awesome Markers - * Leaflet ExtraMarkers - * https://github.com/coryasilva/Leaflet.ExtraMarkers/ - * @author coryasilva - * @version 1.2.1 - */ - -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e.leaflet=e.leaflet||{},e.leaflet["extra-markers"]={}))}(this,function(e){"use strict";var t=L.ExtraMarkers={};t.version=L.ExtraMarkers.version="1.2.1",t.Icon=L.ExtraMarkers.Icon=L.Icon.extend({options:{iconSize:[35,45],iconAnchor:[17,42],popupAnchor:[1,-32],shadowAnchor:[10,12],shadowSize:[36,16],className:"",prefix:"",extraClasses:"",shape:"circle",icon:"",innerHTML:"",markerColor:"red",svgBorderColor:"#fff",svgOpacity:1,iconColor:"#fff",iconRotate:0,number:"",svg:!1,name:""},initialize:function(e){e=L.Util.setOptions(this,e)},createIcon:function(){var e=document.createElement("div"),t=this.options;return t.icon&&(e.innerHTML=this._createInner()),t.innerHTML&&(e.innerHTML=t.innerHTML),t.bgPos&&(e.style.backgroundPosition=-t.bgPos.x+"px "+-t.bgPos.y+"px"),t.svg?this._setIconStyles(e,"svg"):this._setIconStyles(e,t.shape+"-"+t.markerColor),e},_getColorHex:function(e){return{red:"#a23337","orange-dark":"#d73e29",orange:"#ef9227",yellow:"#f5bb39","blue-dark":"#276273",cyan:"#32a9dd",purple:"#440444",violet:"#90278d",pink:"#c057a0",green:"#006838",white:"#e8e8e8",black:"#211c1d"}[e]||e},_createSvg:function(e,t){return{circle:'',square:'',star:'',penta:''}[e]},_createInner:function(){var e="",t="",o="",a="",r=this.options;return r.iconColor&&(e="color: "+r.iconColor+";"),0!==r.iconRotate&&(e+="-webkit-transform: rotate("+r.iconRotate+"deg);",e+="-moz-transform: rotate("+r.iconRotate+"deg);",e+="-o-transform: rotate("+r.iconRotate+"deg);",e+="-ms-transform: rotate("+r.iconRotate+"deg);",e+="transform: rotate("+r.iconRotate+"deg);"),r.number&&(t='number="'+r.number+'" '),r.extraClasses.length&&(o+=r.extraClasses+" "),r.prefix.length&&(o+=r.prefix+" "),r.icon.length&&(o+=r.icon+" "),r.svg&&(a+=this._createSvg(r.shape,this._getColorHex(r.markerColor))),a+="',r.name.length&&(a+='
'+r.name+"
"),a},_setIconStyles:function(e,t){var o,a,r=this.options,n=L.point(r["shadow"===t?"shadowSize":"iconSize"]);a="shadow"===t?(o=L.point(r.shadowAnchor||r.iconAnchor),"shadow"):(o=L.point(r.iconAnchor),"icon"),!o&&n&&(o=n.divideBy(2,!0)),e.className="leaflet-marker-"+a+" extra-marker extra-marker-"+t+" "+r.className,o&&(e.style.marginLeft=-o.x+"px",e.style.marginTop=-o.y+"px"),n&&(e.style.width=n.x+"px",e.style.height=n.y+"px")},createShadow:function(){var e=document.createElement("div");return this._setIconStyles(e,"shadow"),e}}),t.icon=L.ExtraMarkers.icon=function(e){return new L.ExtraMarkers.Icon(e)},e.ExtraMarkers=t,Object.defineProperty(e,"__esModule",{value:!0})}); \ No newline at end of file From 6ebcf79e0da7da9920ce89707d557d991db3d164 Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Tue, 24 May 2022 16:06:05 -0500 Subject: [PATCH 022/183] Error check --- controllers/IndexController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 5308cc9..c603cda 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -158,6 +158,7 @@ public function filterAction() $wheres = array("items.public = 1"); $request_tour_id = $this->_request->getParam('tourType'); + echo "request_tour_id: " . $request_tour_id; $tourItemTable = $db->getTable( 'TourItem' ); if($request_tour_id != 0){ $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items From 9492fa3a65622a9dcd344ee130272ad14eaf1f94 Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Thu, 26 May 2022 14:52:31 -0500 Subject: [PATCH 023/183] var_dump debug --- controllers/IndexController.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index c603cda..a03174d 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -113,6 +113,8 @@ public function indexAction() } } + var_dump($_tourTypes); + $this->view->tour_types = $_tourTypes; // $this->view->item_types = $this->_itemTypes; /* REMOVING ADDITIONAL SIMPLE VOCAB FILTERS -AM */ From 7232a8a3e9043692304b5ac22f8be7e4bc4fff75 Mon Sep 17 00:00:00 2001 From: nawm Date: Tue, 31 May 2022 15:57:57 -0500 Subject: [PATCH 024/183] Error check --- controllers/IndexController.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index a03174d..5308cc9 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -113,8 +113,6 @@ public function indexAction() } } - var_dump($_tourTypes); - $this->view->tour_types = $_tourTypes; // $this->view->item_types = $this->_itemTypes; /* REMOVING ADDITIONAL SIMPLE VOCAB FILTERS -AM */ @@ -160,7 +158,6 @@ public function filterAction() $wheres = array("items.public = 1"); $request_tour_id = $this->_request->getParam('tourType'); - echo "request_tour_id: " . $request_tour_id; $tourItemTable = $db->getTable( 'TourItem' ); if($request_tour_id != 0){ $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items From c5ea1888658682e38f3d26844d1e10b14d9cacec Mon Sep 17 00:00:00 2001 From: nawm Date: Tue, 31 May 2022 18:56:53 -0500 Subject: [PATCH 025/183] test --- controllers/IndexController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 5308cc9..ca109e0 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -158,7 +158,8 @@ public function filterAction() $wheres = array("items.public = 1"); $request_tour_id = $this->_request->getParam('tourType'); - $tourItemTable = $db->getTable( 'TourItem' ); + var_dump(request_tour_id); + $tourItemTable = $db->getTable( 'TourItem' ); if($request_tour_id != 0){ $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items WHERE tour_id = $request_tour_id"); From 6aa10ec2b4ba33f4e68b43323a644d0d75f3f3e2 Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Sat, 4 Jun 2022 18:11:47 -0500 Subject: [PATCH 026/183] . --- controllers/IndexController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index ca109e0..e64457e 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -158,8 +158,8 @@ public function filterAction() $wheres = array("items.public = 1"); $request_tour_id = $this->_request->getParam('tourType'); - var_dump(request_tour_id); - $tourItemTable = $db->getTable( 'TourItem' ); + echo var_dump(request_tour_id); + $tourItemTable = $db->getTable( 'TourItem' ); if($request_tour_id != 0){ $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items WHERE tour_id = $request_tour_id"); From b698a9fd59c57dd1eb4784a457ec9090b52eb37f Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Sat, 4 Jun 2022 18:14:37 -0500 Subject: [PATCH 027/183] . --- controllers/IndexController.php | 1 - 1 file changed, 1 deletion(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index e64457e..b1066db 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -158,7 +158,6 @@ public function filterAction() $wheres = array("items.public = 1"); $request_tour_id = $this->_request->getParam('tourType'); - echo var_dump(request_tour_id); $tourItemTable = $db->getTable( 'TourItem' ); if($request_tour_id != 0){ $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items From 2df6967edbcee2ac0a966b9f31d1ebe43385e14d Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Sat, 4 Jun 2022 18:50:13 -0500 Subject: [PATCH 028/183] created a new func to filter public tours --- controllers/IndexController.php | 39 +++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index b1066db..756008d 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -86,6 +86,30 @@ class MallMap_IndexController extends Omeka_Controller_AbstractActionController //'2000-present' => array('url' => null, 'title' => null), ); + /** + * Return a list of public tours + */ + public function publicTours() + { + // Get the database. + $db = get_db(); + // Get the Tour table. + $tour_table = $db->getTable('Tour'); + // Build the select query. + $select = $tour_table->getSelect(); + // Fetch some items with our select. + $results = $tour_table->fetchObjects($select); + // Build an array with + $_tourTypes = array(); + foreach ($results as $tour){ + if($tour['public']==1){ + $_tourTypes[$tour['id']] = $tour['title']; + } + } + + return $_tourTypes; + } + /** * Display the map. */ @@ -98,20 +122,7 @@ public function indexAction() // $placeTypes = $simpleVocabTerm->findByElementId(self::ELEMENT_ID_PLACE_TYPE); // $eventTypes = $simpleVocabTerm->findByElementId(self::ELEMENT_ID_EVENT_TYPE); - // Get the database. - $db = get_db(); - // Get the Tour table. - $tour_table = $db->getTable('Tour'); - // Build the select query. - $select = $tour_table->getSelect(); - // Fetch some items with our select. - $results = $tour_table->fetchObjects($select); - $_tourTypes = array(); - foreach ($results as $tour){ - if($tour['public']==1){ - $_tourTypes[$tour['id']] = $tour['title']; - } - } + $_tourTypes = publicTours(); $this->view->tour_types = $_tourTypes; // $this->view->item_types = $this->_itemTypes; From c7cdf3e32d00e76bd1b0ab78e25c497a14cf9f1b Mon Sep 17 00:00:00 2001 From: nawm Date: Sat, 4 Jun 2022 18:53:31 -0500 Subject: [PATCH 029/183] . --- controllers/IndexController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 756008d..06aaf66 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -122,7 +122,7 @@ public function indexAction() // $placeTypes = $simpleVocabTerm->findByElementId(self::ELEMENT_ID_PLACE_TYPE); // $eventTypes = $simpleVocabTerm->findByElementId(self::ELEMENT_ID_EVENT_TYPE); - $_tourTypes = publicTours(); + $_tourTypes = $this->publicTours(); $this->view->tour_types = $_tourTypes; // $this->view->item_types = $this->_itemTypes; From 82f54f0b435a3fd4866972dd1564f67da3b6860f Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Sun, 5 Jun 2022 00:31:26 -0500 Subject: [PATCH 030/183] Updated the filter system for public tours items --- controllers/IndexController.php | 38 +++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 06aaf66..e214edd 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -168,25 +168,31 @@ public function filterAction() // $joins = array("$db->Item AS items ON items.id = tour_items.item_id"); $wheres = array("items.public = 1"); - $request_tour_id = $this->_request->getParam('tourType'); + // Filter public tours items + $request_tour_id = $this->publicTours(); $tourItemTable = $db->getTable( 'TourItem' ); - if($request_tour_id != 0){ - $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items - WHERE tour_id = $request_tour_id"); - } else { - $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items"); - } - $tourItemsIDs = array(); - foreach ($tourItemsDat as $dat){ - $tourItemsIDs[] = (int) $dat["item_id"]; - } - $ids = $tourItemsIDs; - $tourItemsIDs = implode(", ", $tourItemsIDs); - // // Filter tours + foreach($request_tour_id as $tour_id => $tour_title){ + if($tour_id != 0){ + $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items + WHERE tour_id = $request_tour_id"); + } else { + $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items"); + } - if($request_tour_id != 0){ - $wheres[] = $db->quoteInto("items.id IN ($tourItemsIDs)", Zend_Db::INT_TYPE); + $toufrItemsIDs = array(); + foreach ($tourItemsDat as $dat){ + $tourItemsIDs[] = (int) $dat["item_id"]; + } + $ids = $tourItemsIDs; + $tourItemsIDs = implode(", ", $tourItemsIDs); + + + if($request_tour_id != 0){ + $wheres[] = $db->quoteInto("items.id IN ($tourItemsIDs)", Zend_Db::INT_TYPE); + } } + + // Filter item type // if ($this->_request->getParam('tourType')) { // $wheres[] = $db->quoteInto("items.item_type_id = ?", $this->_request->getParam('tourType'), Zend_Db::INT_TYPE); From 68fb29055c5e8f39aa7baf8168abc314854e0d52 Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Sun, 5 Jun 2022 00:34:09 -0500 Subject: [PATCH 031/183] . --- controllers/IndexController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index e214edd..006c963 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -168,13 +168,13 @@ public function filterAction() // $joins = array("$db->Item AS items ON items.id = tour_items.item_id"); $wheres = array("items.public = 1"); - // Filter public tours items + // Filter public tours' items $request_tour_id = $this->publicTours(); $tourItemTable = $db->getTable( 'TourItem' ); foreach($request_tour_id as $tour_id => $tour_title){ if($tour_id != 0){ $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items - WHERE tour_id = $request_tour_id"); + WHERE tour_id = $tour_id"); } else { $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items"); } From 45845f981c7e6d00cbc3aac62d49c15fa53118bd Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Sun, 5 Jun 2022 00:43:52 -0500 Subject: [PATCH 032/183] . --- controllers/IndexController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 006c963..eed954c 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -187,7 +187,7 @@ public function filterAction() $tourItemsIDs = implode(", ", $tourItemsIDs); - if($request_tour_id != 0){ + if($tour_id != 0){ $wheres[] = $db->quoteInto("items.id IN ($tourItemsIDs)", Zend_Db::INT_TYPE); } } From d7df14a83652d23503bb6ad513843f11656c696d Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Sun, 5 Jun 2022 00:46:37 -0500 Subject: [PATCH 033/183] . --- controllers/IndexController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index eed954c..b6e69ab 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -179,7 +179,7 @@ public function filterAction() $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items"); } - $toufrItemsIDs = array(); + $tourItemsIDs = array(); foreach ($tourItemsDat as $dat){ $tourItemsIDs[] = (int) $dat["item_id"]; } From 51ccc2fa2067a0dbd7c89ecc530293e48ef4cad6 Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Sun, 5 Jun 2022 01:17:22 -0500 Subject: [PATCH 034/183] . --- controllers/IndexController.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index b6e69ab..dc0dcb5 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -87,7 +87,7 @@ class MallMap_IndexController extends Omeka_Controller_AbstractActionController ); /** - * Return a list of public tours + * Return an dictionary of public tours */ public function publicTours() { @@ -190,7 +190,7 @@ public function filterAction() if($tour_id != 0){ $wheres[] = $db->quoteInto("items.id IN ($tourItemsIDs)", Zend_Db::INT_TYPE); } - } + // Filter item type @@ -269,6 +269,7 @@ public function filterAction() $var = ""; file_put_contents('filename.php', $var);*/ $this->_helper->json($data); + } } /** From c934b0942f4a6843b904fde38ecc41119a218cf9 Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Sun, 5 Jun 2022 01:35:24 -0500 Subject: [PATCH 035/183] . --- controllers/IndexController.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index dc0dcb5..0eb1fd2 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -171,6 +171,7 @@ public function filterAction() // Filter public tours' items $request_tour_id = $this->publicTours(); $tourItemTable = $db->getTable( 'TourItem' ); + $id = array(); foreach($request_tour_id as $tour_id => $tour_title){ if($tour_id != 0){ $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items @@ -183,14 +184,16 @@ public function filterAction() foreach ($tourItemsDat as $dat){ $tourItemsIDs[] = (int) $dat["item_id"]; } - $ids = $tourItemsIDs; + for ($i = 0; $i < count($tourItemsIDs); $i++){ + array_push($id, $tourItemsIDs[$i]) + } $tourItemsIDs = implode(", ", $tourItemsIDs); if($tour_id != 0){ $wheres[] = $db->quoteInto("items.id IN ($tourItemsIDs)", Zend_Db::INT_TYPE); } - + } // Filter item type @@ -269,7 +272,6 @@ public function filterAction() $var = ""; file_put_contents('filename.php', $var);*/ $this->_helper->json($data); - } } /** From 2dcae8ff0f8475a3a81ee425d882e000d9520479 Mon Sep 17 00:00:00 2001 From: nawm Date: Sun, 5 Jun 2022 01:37:02 -0500 Subject: [PATCH 036/183] . --- controllers/IndexController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 0eb1fd2..cf1d2de 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -185,7 +185,7 @@ public function filterAction() $tourItemsIDs[] = (int) $dat["item_id"]; } for ($i = 0; $i < count($tourItemsIDs); $i++){ - array_push($id, $tourItemsIDs[$i]) + array_push($id, $tourItemsIDs[$i]); } $tourItemsIDs = implode(", ", $tourItemsIDs); From 348d2b6750eda363c512ae9be3d09b18aa065fbd Mon Sep 17 00:00:00 2001 From: nawm Date: Sun, 5 Jun 2022 01:43:05 -0500 Subject: [PATCH 037/183] . --- controllers/IndexController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index cf1d2de..bfed71b 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -267,10 +267,10 @@ public function filterAction() ); } // commented code below serves as debugging tool to write output to a file - /*$text = "Anything"; + $text = "Anything"; $var_str = var_export($request_tour_id, true); $var = ""; - file_put_contents('filename.php', $var);*/ + file_put_contents('filename.php', $var); $this->_helper->json($data); } From 3f2ce3b8bd28bba2ad2493524270b33e7e44e09a Mon Sep 17 00:00:00 2001 From: nawm Date: Sun, 5 Jun 2022 01:52:18 -0500 Subject: [PATCH 038/183] . --- controllers/IndexController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index bfed71b..cf1d2de 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -267,10 +267,10 @@ public function filterAction() ); } // commented code below serves as debugging tool to write output to a file - $text = "Anything"; + /*$text = "Anything"; $var_str = var_export($request_tour_id, true); $var = ""; - file_put_contents('filename.php', $var); + file_put_contents('filename.php', $var);*/ $this->_helper->json($data); } From dd1e1b83ea0739ce6bc1a1ad3559f935be4f808d Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Sun, 5 Jun 2022 01:54:12 -0500 Subject: [PATCH 039/183] . --- controllers/IndexController.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index bfed71b..004aab4 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -184,9 +184,11 @@ public function filterAction() foreach ($tourItemsDat as $dat){ $tourItemsIDs[] = (int) $dat["item_id"]; } + for ($i = 0; $i < count($tourItemsIDs); $i++){ - array_push($id, $tourItemsIDs[$i]); + $id[] = $tourItemsIDs[$i]; } + $tourItemsIDs = implode(", ", $tourItemsIDs); From 6767fb5143ff02edea44678c10c0a0ee26870024 Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Sun, 5 Jun 2022 02:02:15 -0500 Subject: [PATCH 040/183] . --- controllers/IndexController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 5c9ebc2..19dfeed 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -171,7 +171,7 @@ public function filterAction() // Filter public tours' items $request_tour_id = $this->publicTours(); $tourItemTable = $db->getTable( 'TourItem' ); - $id = array(); + $ids = array(); foreach($request_tour_id as $tour_id => $tour_title){ if($tour_id != 0){ $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items @@ -186,7 +186,7 @@ public function filterAction() } for ($i = 0; $i < count($tourItemsIDs); $i++){ - $id[] = $tourItemsIDs[$i]; + array_push($ids, $tourItemsIDs); } $tourItemsIDs = implode(", ", $tourItemsIDs); From c47d24158cacaab5b25ffdcfa0155d426aaded89 Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Sun, 5 Jun 2022 02:03:19 -0500 Subject: [PATCH 041/183] . --- controllers/IndexController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 19dfeed..07ff076 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -186,7 +186,7 @@ public function filterAction() } for ($i = 0; $i < count($tourItemsIDs); $i++){ - array_push($ids, $tourItemsIDs); + array_push($ids, $tourItemsIDs[$i]); } $tourItemsIDs = implode(", ", $tourItemsIDs); From 9080e3cbde0b35d0afe4aa8ff94bd90e2ddd3230 Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Sun, 5 Jun 2022 14:33:42 -0500 Subject: [PATCH 042/183] Continued work on multiple tours issue --- controllers/IndexController.php | 38 ++++----------------------------- 1 file changed, 4 insertions(+), 34 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 07ff076..d926dd2 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -87,7 +87,8 @@ class MallMap_IndexController extends Omeka_Controller_AbstractActionController ); /** - * Return an dictionary of public tours + * Return an associative array of public tours + * */ public function publicTours() { @@ -165,7 +166,6 @@ public function filterAction() $db = $this->_helper->db->getDb(); $joins = array("$db->Item AS items ON items.id = locations.item_id"); - // $joins = array("$db->Item AS items ON items.id = tour_items.item_id"); $wheres = array("items.public = 1"); // Filter public tours' items @@ -190,18 +190,10 @@ public function filterAction() } $tourItemsIDs = implode(", ", $tourItemsIDs); - - - if($tour_id != 0){ - $wheres[] = $db->quoteInto("items.id IN ($tourItemsIDs)", Zend_Db::INT_TYPE); - } } - - // Filter item type - // if ($this->_request->getParam('tourType')) { - // $wheres[] = $db->quoteInto("items.item_type_id = ?", $this->_request->getParam('tourType'), Zend_Db::INT_TYPE); - // } + $wheres[] = $db->quoteInto("items.id IN ($ids)", Zend_Db::INT_TYPE); + // Filter map coverage. if ($this->_request->getParam('mapCoverage')) { @@ -210,28 +202,6 @@ public function filterAction() . $db->quoteInto("AND $alias.element_id = ?", self::ELEMENT_ID_MAP_COVERAGE); $wheres[] = $db->quoteInto("$alias.text = ?", $this->_request->getParam('mapCoverage')); } - /* REMOVING ADDITIONAL SIMPLE VOCAB FILTERS -AM */ - // // Filter place types (inclusive). - // if ($this->_request->getParam('placeTypes')) { - // $alias = "place_types"; - // $joins[] = "$db->ElementText AS $alias ON $alias.record_id = items.id AND $alias.record_type = 'Item' " - // . $db->quoteInto("AND $alias.element_id = ?", self::ELEMENT_ID_PLACE_TYPE); - // $placeTypes = array(); - // foreach ($this->_request->getParam('placeTypes') as $text) { - // $placeTypes[] = $db->quoteInto("$alias.text = ?", $text); - // } - // $wheres[] = implode(" OR ", $placeTypes); - // // Filter event types (inclusive). - // } else if ($this->_request->getParam('eventTypes')) { - // $alias = "event_types"; - // $joins[] = "$db->ElementText AS $alias ON $alias.record_id = items.id AND $alias.record_type = 'Item' " - // . $db->quoteInto("AND $alias.element_id = ?", self::ELEMENT_ID_EVENT_TYPE); - // $eventTypes = array(); - // foreach ($this->_request->getParam('eventTypes') as $text) { - // $eventTypes[] = $db->quoteInto("$alias.text = ?", $text); - // } - // $wheres[] = implode(" OR ", $eventTypes); - // } // Build the SQL. $sql = "SELECT items.id, locations.latitude, locations.longitude\nFROM $db->Location AS locations"; From b5a5aeaea877e3a2f65efa7b34b9f1edba6281fd Mon Sep 17 00:00:00 2001 From: Martin Bernard Date: Sun, 5 Jun 2022 14:37:31 -0500 Subject: [PATCH 043/183] 6/06 work --- controllers/IndexController.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index d926dd2..69a0701 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -172,6 +172,7 @@ public function filterAction() $request_tour_id = $this->publicTours(); $tourItemTable = $db->getTable( 'TourItem' ); $ids = array(); + $tourItemsIDs = array(); foreach($request_tour_id as $tour_id => $tour_title){ if($tour_id != 0){ $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items @@ -180,7 +181,6 @@ public function filterAction() $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items"); } - $tourItemsIDs = array(); foreach ($tourItemsDat as $dat){ $tourItemsIDs[] = (int) $dat["item_id"]; } @@ -189,10 +189,10 @@ public function filterAction() array_push($ids, $tourItemsIDs[$i]); } - $tourItemsIDs = implode(", ", $tourItemsIDs); } - - $wheres[] = $db->quoteInto("items.id IN ($ids)", Zend_Db::INT_TYPE); + + $tourItemsIDs = implode(", ", $tourItemsIDs); + $wheres[] = $db->quoteInto("items.id IN ($tourItemsIDs)", Zend_Db::INT_TYPE); // Filter map coverage. From d5f77482bbd2a7e677fac91c4a56cc9713aec684 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Mon, 14 Nov 2022 11:11:18 -0600 Subject: [PATCH 044/183] Change the max zoom scale --- views/public/javascripts/mall-map.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index 8516d38..a43e1b4 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -23,7 +23,7 @@ function mallMapJs(){ // MAP_ZOOM controls the default zoom of the map var MAP_ZOOM = 15; var MAP_MIN_ZOOM = 14; - var MAP_MAX_ZOOM = 18; + var MAP_MAX_ZOOM = 17; // MAP_MAX_BOUNDS controls the boundaries of the map var MAP_MAX_BOUNDS = [[41.908628, 12.451941], [41.88927, 12.490607]]; var LOCATE_BOUNDS = [[41.908628, 12.451941], [41.88927, 12.490607]]; From 910db7933f1f19b2f96929197418af4b9a5d8734 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Mon, 14 Nov 2022 11:41:09 -0600 Subject: [PATCH 045/183] Change the map tiles --- views/public/javascripts/mall-map.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index a43e1b4..dd1bdfb 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -16,7 +16,7 @@ function mallMapJs(){ imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; document.head.appendChild(imported); - var MAP_URL_TEMPLATE = 'https://stamen-tiles-{s}.a.ssl.fastly.net/terrain/{z}/{x}/{y}{r}.png'; + var MAP_URL_TEMPLATE = 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}'; // MAP_CENTER controls the default starting place // var MAP_CENTER = [38.8891, -77.02949]; var MAP_CENTER = [41.9001702, 12.4698422]; @@ -46,7 +46,7 @@ function mallMapJs(){ }); map.addLayer(L.tileLayer(MAP_URL_TEMPLATE)); map.addControl(L.control.zoom({position: 'topleft'})); - map.attributionControl.setPrefix(''); + map.attributionControl.setPrefix('Tiles © Esri — Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community'); // Check for user's first time visiting. Wait to locate the user after displaying tooltip on the first visit. if(!($.cookie('myCookie'))) { From 203880d920bb56bad961bd9c1901ad1e6631eb8d Mon Sep 17 00:00:00 2001 From: tutingjun Date: Mon, 14 Nov 2022 12:11:37 -0600 Subject: [PATCH 046/183] Handle empty description condition --- views/public/javascripts/mall-map.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index 8516d38..d790831 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -349,9 +349,14 @@ function mallMapJs(){ for (var i = 0; i < response.date.length; i++) { content.append('

' + response.date[i] + '

'); } - content.append('

' + response.description + '

'); + + if (response.description) { + content.append('

' + response.description + '

'); + } else { + content.append('

No descriptions available.

'); + } content.append(response.fullsize); - content.append('
'); + content.append('

View More

'); }); }); } From eda98175f55eb85e0ed25c3031b4ac5638206dea Mon Sep 17 00:00:00 2001 From: tutingjun Date: Thu, 5 Jan 2023 15:46:36 -0600 Subject: [PATCH 047/183] Change color for the filter --- views/public/css/mall-map.css | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/views/public/css/mall-map.css b/views/public/css/mall-map.css index b081359..bf21d21 100755 --- a/views/public/css/mall-map.css +++ b/views/public/css/mall-map.css @@ -115,7 +115,8 @@ div[role="main"] { #filters h1 { margin-top: 0; font-weight: normal; - background-color: #FFE400; + background-color: #edc86a; + color: white; position: absolute; top: 0; left: 0; @@ -124,7 +125,8 @@ div[role="main"] { } #info-panel h1 { - background-color: #FFE400; + background-color: #edc86a; + color: white; margin: -20px -10px 20px; padding: 10px; } @@ -210,7 +212,7 @@ a#locate-button { display: block; padding: .5em 10px; z-index: 1010; - background-color: #FFE400; + background-color: #edc86a; border-bottom: 1px solid rgba(255,255,255,.5); } From 2e6f3996767bf33909bd8d9d84f82897e5c4f4ca Mon Sep 17 00:00:00 2001 From: tutingjun Date: Thu, 5 Jan 2023 15:53:06 -0600 Subject: [PATCH 048/183] Add hover color to the back button --- views/public/css/mall-map.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/views/public/css/mall-map.css b/views/public/css/mall-map.css index bf21d21..ec26421 100755 --- a/views/public/css/mall-map.css +++ b/views/public/css/mall-map.css @@ -216,6 +216,10 @@ a#locate-button { border-bottom: 1px solid rgba(255,255,255,.5); } +#info-panel .back-button:hover { + color: white; +} + #filters { position: absolute; left: 0; From dc42a716b1ec0532341f200c9ff855fc94cad8c6 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Tue, 14 Feb 2023 11:47:28 -0600 Subject: [PATCH 049/183] Update on button style --- views/public/css/mall-map.css | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/views/public/css/mall-map.css b/views/public/css/mall-map.css index ec26421..ef5c70e 100755 --- a/views/public/css/mall-map.css +++ b/views/public/css/mall-map.css @@ -36,8 +36,6 @@ body { padding: 0; margin: 0; position: relative; - font-family: "Raleway", sans-serif; - color: #375e5d; } #map { @@ -96,7 +94,7 @@ div[role="main"] { .button { color: #fff; - background-color: #2b89d9; + background-color: #8cbcd8; padding: 12px; font-size: 16px; line-height: 100%; From d746995ea84633b3d7717765c66157e485e34332 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Tue, 14 Feb 2023 13:02:16 -0600 Subject: [PATCH 050/183] Change filter page --- views/public/css/mall-map.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/views/public/css/mall-map.css b/views/public/css/mall-map.css index ef5c70e..49914cc 100755 --- a/views/public/css/mall-map.css +++ b/views/public/css/mall-map.css @@ -124,9 +124,10 @@ div[role="main"] { #info-panel h1 { background-color: #edc86a; - color: white; + color: #3d5a80; margin: -20px -10px 20px; padding: 10px; + font-weight: 300; } a#toggle-map-button:before { content: "\e00f"; } @@ -212,6 +213,7 @@ a#locate-button { z-index: 1010; background-color: #edc86a; border-bottom: 1px solid rgba(255,255,255,.5); + color: #E03529; } #info-panel .back-button:hover { From 2b8146a1cddfe6ea77bc216366bd10f94321ac22 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Tue, 21 Feb 2023 13:08:59 -0600 Subject: [PATCH 051/183] Update color --- views/public/css/mall-map.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/public/css/mall-map.css b/views/public/css/mall-map.css index 49914cc..25791c3 100755 --- a/views/public/css/mall-map.css +++ b/views/public/css/mall-map.css @@ -114,7 +114,7 @@ div[role="main"] { margin-top: 0; font-weight: normal; background-color: #edc86a; - color: white; + color: #3d5a80; position: absolute; top: 0; left: 0; From 711b9fd48ab185bea912c50240dd0acb727afb02 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Tue, 21 Feb 2023 16:24:40 -0600 Subject: [PATCH 052/183] Change back button --- views/public/css/mall-map.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/public/css/mall-map.css b/views/public/css/mall-map.css index 25791c3..06ed032 100755 --- a/views/public/css/mall-map.css +++ b/views/public/css/mall-map.css @@ -213,7 +213,7 @@ a#locate-button { z-index: 1010; background-color: #edc86a; border-bottom: 1px solid rgba(255,255,255,.5); - color: #E03529; + color: #3d5a80; } #info-panel .back-button:hover { From 03cc83f2458ddcce3aae665d521fb6a3f549e646 Mon Sep 17 00:00:00 2001 From: Evan Lauer <82416296+evan-lauer@users.noreply.github.com> Date: Sun, 26 Feb 2023 21:07:43 -0600 Subject: [PATCH 053/183] Update README.md --- README.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/README.md b/README.md index 9e6464a..dbb2b03 100755 --- a/README.md +++ b/README.md @@ -1,3 +1,43 @@ + # CGMRStreetMap A fork of the Omeka team's MallMap plugin to be used for the Carleton Guide to Medieval Rome project. + +## Configuration + +This section describes the process of getting the **original Omeka** version to work on your own Omeka site. It was a roadblock when we developed this version of the plugin, so we're documenting the process here. In a future stable release of our version, we'd like to make it a bit easier to use the plugin. + + + +(We're not entirely sure how necessary it is to follow these instructions to the letter--we haven't tested precisely which of these configurations are absolutely necessary. Follow these instructions if you want to configure the plugin the same way the original MallMap creators configured theirs.) + +If you clone the plugin directly into the ```/plugins``` folder in your Omeka project, you won't see any items on your map until you've properly configured a few things: +#### Simple Vocab +A number of Simple Vocab terms need to be configured in order for the map to render any items +- Coverage (Dublin Core) + - The coverage field needs to be populated with a simple vocab definition. The original mallhistory.org site uses 20-year time slices as its definition for this field. You can see this under the filter dropdown as the "Map eras" option. +- Type (Dublin Core) + - The type field needs to be populated as well. For the original Mall Map site, these options are visible under the "Item type" dropdown. + +In addition to vocabularies for the above terms, you also need to add new item types (this config form is available in the left sidebar of your Omeka admin page.) These types are Event and Place. +- Event + - In the configuration of the new "Event" type, add an element called "Event Type" +- Place + - In the configuration of the new "Place" type, add an element called "Type" + +Finally, we need Simple Vocab definitions for the new Event::Event Type and Place::Type terms. For both of these, add a Simple Vocab definition, and a list of event and place types. You can see these on the mallhistory.org site if you select the item type dropdown, and within the dropdown, select either event or place--this will render a new dropdown where the event and place types can be seen. + +#### Item type IDs and Element IDs +In ```MallMap/controllers/IndexController.php```, there are a number of ```const``` definitions at the top of the file, which are in charge of linking to your database. These numbers may be different from server to server, depending on which plugins you've installed (among other things). + +In the original MallMap version, these are customized for the MallMap server, so you need to go into your database and find the IDs for all of the item types and event types. + +Note that some of the Dublin Core types are likely to be standard across many people's sites--for us, we only needed to edit the ```ITEM_TYPE_ID_PLACE``` , ```ELEMENT_ID_MAP_COVERAGE```, and ```ELEMENT_ID_PLACE_TYPE``` (because these are the new parameters added for this plugin). + +#### Geolocation +If you want an item to render to the map, you need to GeoLocate it. Go to an Item Edit page, and select the Map tab to add a Geolocation to an item. + +**Note:** Items must be public in order to render to the map. + +#### Filter theming issues +One annoying issue we found is that there is some coupling between the MallMap theme and the MallMap plugin. One such issue causes the button which opens the dropdown to be the exact shade of white as the background theme, making it seem like something's gone wrong. In reality, it rendered correctly for us, but it was invisible! It's slightly above the map window, on the right side of the div. Hover your mouse around until it becomes a pointer--we promise, it's there! From d182a6d6531ac801f5f21df285d7092f62227d5c Mon Sep 17 00:00:00 2001 From: tutingjun Date: Tue, 28 Feb 2023 15:54:16 -0600 Subject: [PATCH 054/183] Fixed duplicate map icons, added some comments --- controllers/IndexController.php | 16 ++++++++++++---- views/public/javascripts/mall-map.js | 4 ++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 69a0701..395f007 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -21,6 +21,9 @@ class MallMap_IndexController extends Omeka_Controller_AbstractActionController const ITEM_TYPE_ID_SOUND = 5; const ITEM_TYPE_ID_STILL_IMAGE = 6; const ITEM_TYPE_ID_EVENT = 8; + + // Changed because original IDs were hard coded by the Omeka team, + // and our IDs were different from theirs // const ITEM_TYPE_ID_PLACE = 14; const ITEM_TYPE_ID_PLACE = 18; @@ -30,6 +33,7 @@ class MallMap_IndexController extends Omeka_Controller_AbstractActionController const ELEMENT_ID_EVENT_TYPE = 29; const ELEMENT_ID_MAP_COVERAGE = 38; + // Same change as above // const ELEMENT_ID_PLACE_TYPE = 87; const ELEMENT_ID_PLACE_TYPE = 51; @@ -184,13 +188,17 @@ public function filterAction() foreach ($tourItemsDat as $dat){ $tourItemsIDs[] = (int) $dat["item_id"]; } + } - for ($i = 0; $i < count($tourItemsIDs); $i++){ - array_push($ids, $tourItemsIDs[$i]); - } - + for ($i = 0; $i < count($tourItemsIDs); $i++){ + array_push($ids, $tourItemsIDs[$i]); } + + + + + $tourItemsIDs = implode(", ", $tourItemsIDs); $wheres[] = $db->quoteInto("items.id IN ($tourItemsIDs)", Zend_Db::INT_TYPE); diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index 577e052..d26cef1 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -296,8 +296,8 @@ function mallMapJs(){ // Prepare POST data object for request. var postData = { - placeTypes: [], - eventTypes: [], + //placeTypes: [], + //eventTypes: [], }; // Handle each filter, adding to the POST data object. From d1089a147376122c75db6d46265496909a0a91b7 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Tue, 28 Feb 2023 16:43:06 -0600 Subject: [PATCH 055/183] Update filter action --- controllers/IndexController.php | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 395f007..34bceef 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -174,6 +174,21 @@ public function filterAction() // Filter public tours' items $request_tour_id = $this->publicTours(); + + if ($this->_request->getParam('tourType')) { + $request_tour_id = array(); + $input_id = $this->_request->getParam('tourType'); + $request_tour_id[$input_id] = "Filter tour"; + } + + // Filter map coverage. + if ($this->_request->getParam('mapCoverage')) { + $alias = "map_coverage"; + $joins[] = "$db->ElementText AS $alias ON $alias.record_id = items.id AND $alias.record_type = 'Item' " + . $db->quoteInto("AND $alias.element_id = ?", self::ELEMENT_ID_MAP_COVERAGE); + $wheres[] = $db->quoteInto("$alias.text = ?", $this->_request->getParam('mapCoverage')); + } + $tourItemTable = $db->getTable( 'TourItem' ); $ids = array(); $tourItemsIDs = array(); @@ -193,23 +208,9 @@ public function filterAction() for ($i = 0; $i < count($tourItemsIDs); $i++){ array_push($ids, $tourItemsIDs[$i]); } - - - - - $tourItemsIDs = implode(", ", $tourItemsIDs); $wheres[] = $db->quoteInto("items.id IN ($tourItemsIDs)", Zend_Db::INT_TYPE); - - - // Filter map coverage. - if ($this->_request->getParam('mapCoverage')) { - $alias = "map_coverage"; - $joins[] = "$db->ElementText AS $alias ON $alias.record_id = items.id AND $alias.record_type = 'Item' " - . $db->quoteInto("AND $alias.element_id = ?", self::ELEMENT_ID_MAP_COVERAGE); - $wheres[] = $db->quoteInto("$alias.text = ?", $this->_request->getParam('mapCoverage')); - } // Build the SQL. $sql = "SELECT items.id, locations.latitude, locations.longitude\nFROM $db->Location AS locations"; From 5f5e1903a16b8fb9f8242ca5b1a8c3919f0dbeca Mon Sep 17 00:00:00 2001 From: tutingjun Date: Tue, 7 Mar 2023 07:30:09 -0600 Subject: [PATCH 056/183] fixed jquery bug --- models/Tour.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/Tour.php b/models/Tour.php index 5414405..edc9a0c 100644 --- a/models/Tour.php +++ b/models/Tour.php @@ -74,7 +74,7 @@ protected function _validate() $this->addError( 'title', 'Tour must be given a title.' ); } - if( strlen( $this->title > 255 ) ) { + if( strlen( $this->title ) > 255 ) { $this->addError( 'title', 'Title for a tour must be 255 characters or fewer.' ); } if (!$this->fieldIsUnique('title')) { From 713eb2b511bc16ad152949f1072c1fe7695e2086 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Tue, 7 Mar 2023 07:43:29 -0600 Subject: [PATCH 057/183] fixed jquery and css on tours form --- MallMapPlugin.php | 5 +++-- views/admin/css/tour-1.7.css | 6 +++--- views/admin/tours/form.php | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) mode change 100755 => 100644 MallMapPlugin.php diff --git a/MallMapPlugin.php b/MallMapPlugin.php old mode 100755 new mode 100644 index b64bc27..1883b4a --- a/MallMapPlugin.php +++ b/MallMapPlugin.php @@ -184,10 +184,11 @@ public function hookAdminHead() $request = Zend_Controller_Front::getInstance()->getRequest(); $module = $request->getModuleName(); $controller = $request->getControllerName(); - - if ($module == 'tour-builder' && $controller == 'tours') + + if ($module == 'mall-map' && $controller == 'tours') { queue_css_file('tour-1.7'); + queue_js_url('//code.jquery.com/jquery-migrate-3.0.0.min.js'); } } diff --git a/views/admin/css/tour-1.7.css b/views/admin/css/tour-1.7.css index 6bc68d9..e1fba6b 100644 --- a/views/admin/css/tour-1.7.css +++ b/views/admin/css/tour-1.7.css @@ -1,7 +1,7 @@ #admin-tour-image img{max-width: 100%; } #tour.edit #admin-tour-image img{margin: 1em 0;} #tour.show #admin-tour-image img{margin: 0 0;} -#tour.edit input[type="text"]{margin-bottom:0;} +#tour.edit input[type="text"]{margin-bottom:0; width:100%;} #tour.edit input#image{background:#eaeaea;padding:.5em 0 .5em .5em;width: 100%;border: 1px solid #D8D8D8;} #tour.edit p.explanation{padding:.25em 0;} #tour.edit .file-helper{display: inline-block;font-style: italic;padding: .5em 0 0;} @@ -60,7 +60,7 @@ cursor: move; cursor: grab; cursor: -moz-grab; cursor: -webkit-grab; } #sortable li span:first-child {flex-grow: 1;} -.ui-state-highlight { height: 1.5em; line-height: 1.2em; color:#fff;background: linear-gradient(to bottom, #A4C637, #75940A);text-shadow: -1px -1px 1px rgba(0,0,0,.5);} +.ui-state-highlight { height: 1.5em; line-height: 1.2em; color:#fff;background: linear-gradient(to bottom, #eaf2e1, #8eb763);text-shadow: -1px -1px 1px rgba(0,0,0,.5);} svg#drag{ margin-right: 1em; @@ -74,5 +74,5 @@ svg#drag{ fill:#fff; } .ui-state-highlight svg#drag #shadow path{ - fill:#75940A; + fill:#eaf2e1; } \ No newline at end of file diff --git a/views/admin/tours/form.php b/views/admin/tours/form.php index ec5965d..dee0da3 100644 --- a/views/admin/tours/form.php +++ b/views/admin/tours/form.php @@ -5,7 +5,7 @@
-
+
From 63213ffdbca85abc1e0e63706ce4a63379967edb Mon Sep 17 00:00:00 2001 From: tutingjun Date: Tue, 7 Mar 2023 15:58:13 -0600 Subject: [PATCH 058/183] Starting to separate polyline logic from filter action --- controllers/IndexController.php | 37 ++++++++++++++++++++++++++++ views/public/javascripts/mall-map.js | 8 ++++++ 2 files changed, 45 insertions(+) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 34bceef..3d672a9 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -155,6 +155,42 @@ public function indexAction() ->appendStylesheet(src('mall-map', 'css', 'css')); } + // public function queryAction() + // { + // // Process only AJAX requests. + // if (!$this->_request->isXmlHttpRequest()) { + // throw new Omeka_Controller_Exception_403; + // } + + // $db = $this->_helper->db->getDb(); + // $joins = array("$db->Item AS items ON items.id = locations.item_id"); + // $wheres = array("items.public = 1"); + + // // Filter public tours' items + // $request_tour_id = $this->publicTours(); + + // $tourItemTable = $db->getTable( 'TourItem' ); + // $ids = array(); + // $tourItemsIDs = array(); + // foreach($request_tour_id as $tour_id => $tour_title){ + // if($tour_id != 0){ + // $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items + // WHERE tour_id = $tour_id"); + // } else { + // $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items"); + // } + + // foreach ($tourItemsDat as $dat){ + // $tourItemsIDs[] = (int) $dat["item_id"]; + // } + // } + + // for ($i = 0; $i < count($tourItemsIDs); $i++){ + // array_push($ids, $tourItemsIDs[$i]); + // } + // d($ids); + // } + /** * Filter items that have been geolocated by the Geolocation plugin. * @@ -208,6 +244,7 @@ public function filterAction() for ($i = 0; $i < count($tourItemsIDs); $i++){ array_push($ids, $tourItemsIDs[$i]); } + d($ids); $tourItemsIDs = implode(", ", $tourItemsIDs); $wheres[] = $db->quoteInto("items.id IN ($tourItemsIDs)", Zend_Db::INT_TYPE); diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index d26cef1..9310566 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -273,6 +273,13 @@ function mallMapJs(){ $('#toggle-map-button + .back-button').hide(); }); + /* + + Calculate every polyline, add to a global variable here. + + */ + + /* * Filter markers. * @@ -431,6 +438,7 @@ function mallMapJs(){ walkingPath.push(p); } } + console.log(walkingPath); var tourPolyline = new L.Polyline(walkingPath, { color: 'blue', weight: 3, From bd2aec55641eada2b74161f809447fd242b79390 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Wed, 8 Mar 2023 11:09:22 -0600 Subject: [PATCH 059/183] fixed dashboard panel links and styling --- MallMapPlugin.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/MallMapPlugin.php b/MallMapPlugin.php index 1883b4a..c9525b3 100644 --- a/MallMapPlugin.php +++ b/MallMapPlugin.php @@ -165,15 +165,15 @@ public function hookAdminDashboard() for($i=0;$i<=5;$i++){ if(array_key_exists($i,$results) && is_object($results[$i])){ - $tourItems .=''; + $tourItems .=''; } } $html .= '
'; $html .= '

'.__('Recent Tours').'

'; $html .= ''.$tourItems.''; - $html .= '

'.__('Add a new tour').'

'; + $html .= '

'.__('Add a new tour').'

'; $html .= '
'; echo $html; From ad660c7d4c0dba10f6ac3dd6f262db975c9e2eaa Mon Sep 17 00:00:00 2001 From: tutingjun Date: Thu, 16 Mar 2023 13:06:22 -0500 Subject: [PATCH 060/183] Start of tour separator and tweak to show description html --- controllers/IndexController.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 3d672a9..bc08a13 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -155,8 +155,11 @@ public function indexAction() ->appendStylesheet(src('mall-map', 'css', 'css')); } - // public function queryAction() - // { +/* + * Beginning to separate tours into separate features + */ +// public function queryAction() +// { // // Process only AJAX requests. // if (!$this->_request->isXmlHttpRequest()) { // throw new Omeka_Controller_Exception_403; @@ -244,7 +247,6 @@ public function filterAction() for ($i = 0; $i < count($tourItemsIDs); $i++){ array_push($ids, $tourItemsIDs[$i]); } - d($ids); $tourItemsIDs = implode(", ", $tourItemsIDs); $wheres[] = $db->quoteInto("items.id IN ($tourItemsIDs)", Zend_Db::INT_TYPE); @@ -321,7 +323,7 @@ public function getItemAction() $data = array( 'id' => $item->id, 'title' => metadata($item, array('Dublin Core', 'Title')), - 'description' => metadata($item, array('Dublin Core', 'Description')), + 'description' => metadata($item, array('Dublin Core', 'Description'), array('no-escape' => true)), 'date' => metadata($item, array('Dublin Core', 'Date'), array('all' => true)), 'thumbnail' => item_image('square_thumbnail', array(), 0, $item), 'fullsize' => item_image('fullsize', array('style' => 'max-width: 100%; height: auto;'), 0, $item), From 2b3bf22be7c07e9641399786fbbef80c9d265c83 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Thu, 16 Mar 2023 13:07:14 -0500 Subject: [PATCH 061/183] changed default map zoom and bounds to accommodate bigger tours --- views/public/javascripts/mall-map.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index 9310566..d220672 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -22,11 +22,11 @@ function mallMapJs(){ // var MAP_CENTER = [38.8891, -77.02949]; var MAP_CENTER = [41.9001702, 12.4698422]; // MAP_ZOOM controls the default zoom of the map - var MAP_ZOOM = 15; + var MAP_ZOOM = 14; var MAP_MIN_ZOOM = 14; var MAP_MAX_ZOOM = 18; // MAP_MAX_BOUNDS controls the boundaries of the map - var MAP_MAX_BOUNDS = [[41.908628, 12.451941], [41.88927, 12.90607]]; + var MAP_MAX_BOUNDS = [[41.960039, 12.421941], [41.85927, 12.90607]]; var LOCATE_BOUNDS = [[41.908628, 12.451941], [41.88927, 12.90607]]; var MAX_LOCATE_METERS = 8000; From 21fed2b8ecad9962f211a41169d50160d768de49 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Mon, 20 Mar 2023 05:37:18 -0500 Subject: [PATCH 062/183] replacing earlier tile swap for esri over stamen --- views/public/javascripts/mall-map.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index d220672..1814dc7 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -16,7 +16,7 @@ function mallMapJs(){ // imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; // document.head.appendChild(imported); - var MAP_URL_TEMPLATE = 'https://stamen-tiles-{s}.a.ssl.fastly.net/terrain/{z}/{x}/{y}{r}.png'; + var MAP_URL_TEMPLATE = 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}'; // MAP_CENTER controls the default starting place // var MAP_CENTER = [38.8891, -77.02949]; @@ -47,10 +47,10 @@ function mallMapJs(){ }); map.addLayer(L.tileLayer(MAP_URL_TEMPLATE)); // map.addLayer(L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { - // attribution: '© OpenStreetMap contributors' + // attribution: '© OpenStreetMap contributors' // })); map.addControl(L.control.zoom({position: 'topleft'})); - map.attributionControl.setPrefix(''); + map.attributionControl.setPrefix('Tiles © Esri — Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community'); // Check for user's first time visiting. Wait to locate the user after displaying tooltip on the first visit. if(!($.cookie('myCookie'))) { From 582cfbe467a9f3ee85ad628ba861636efdd37bf8 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Tue, 21 Mar 2023 19:54:21 -0500 Subject: [PATCH 063/183] Filter path functional --- controllers/IndexController.php | 123 ++++++++---- views/public/javascripts/mall-map.js | 285 ++++++++++++++------------- 2 files changed, 232 insertions(+), 176 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index bc08a13..a668119 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -155,44 +155,91 @@ public function indexAction() ->appendStylesheet(src('mall-map', 'css', 'css')); } -/* - * Beginning to separate tours into separate features - */ -// public function queryAction() -// { - // // Process only AJAX requests. - // if (!$this->_request->isXmlHttpRequest()) { - // throw new Omeka_Controller_Exception_403; - // } - - // $db = $this->_helper->db->getDb(); - // $joins = array("$db->Item AS items ON items.id = locations.item_id"); - // $wheres = array("items.public = 1"); - - // // Filter public tours' items - // $request_tour_id = $this->publicTours(); - - // $tourItemTable = $db->getTable( 'TourItem' ); - // $ids = array(); - // $tourItemsIDs = array(); - // foreach($request_tour_id as $tour_id => $tour_title){ - // if($tour_id != 0){ - // $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items - // WHERE tour_id = $tour_id"); - // } else { - // $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items"); - // } - - // foreach ($tourItemsDat as $dat){ - // $tourItemsIDs[] = (int) $dat["item_id"]; - // } - // } - - // for ($i = 0; $i < count($tourItemsIDs); $i++){ - // array_push($ids, $tourItemsIDs[$i]); - // } - // d($ids); - // } + function rand_color() { + return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT); + } + + /* + * Beginning to separate tours into separate features + */ + public function queryAction() + { + // Process only AJAX requests. + if (!$this->_request->isXmlHttpRequest()) { + throw new Omeka_Controller_Exception_403; + } + + $db = $this->_helper->db->getDb(); + $joins = array("$db->Item AS items ON items.id = locations.item_id"); + $wheres = array("items.public = 1"); + + // Filter public tours' items + $request_tour_id = $this->publicTours(); + + $tourItemTable = $db->getTable( 'TourItem' ); + $tourItemsIDs = array(); + $returnArray = array(); + foreach($request_tour_id as $tour_id => $tour_title){ + if($tour_id != 0){ + $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items + WHERE tour_id = $tour_id"); + } else { + $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items"); + } + $tourItemsIDs[$tour_id] = array(); + foreach ($tourItemsDat as $dat){ + array_push($tourItemsIDs[$tour_id], (int) $dat["item_id"]); + } + } + + foreach($tourItemsIDs as $tour_id => $item_array){ + $randomColor = $this->rand_color(); + + $tourItemsID = implode(", ", $item_array); + $wheres = array("items.public = 1"); + $wheres[] = $db->quoteInto("items.id IN ($tourItemsID)", Zend_Db::INT_TYPE); + + $sql = "SELECT items.id, locations.latitude, locations.longitude\nFROM $db->Location AS locations"; + foreach ($joins as $join) { + $sql .= "\nJOIN $join"; + } + foreach ($wheres as $key => $where) { + $sql .= (0 == $key) ? "\nWHERE" : "\nAND"; + $sql .= " ($where)"; + } + $sql .= "\nGROUP BY items.id"; + + $dbItems = $db->query($sql)->fetchAll(); + $orderedItems = array(); + + // orders items to match the order of the tour + for ($i = 0; $i < count($item_array); $i++) { + for ($j = 0; $j < count($dbItems); $j++) { + if ($item_array[$i] == $dbItems[$j]['id']) { + array_push( $orderedItems, $dbItems[$j] ); + } + } + } + // Build geoJSON: http://www.geojson.org/geojson-spec.html + $returnArray[$tour_id]["Data"] = array('type' => 'FeatureCollection', 'features' => array()); + foreach ($orderedItems as $row) { + $returnArray[$tour_id]["Data"]['features'][] = array( + 'type' => 'Feature', + 'geometry' => array( + 'type' => 'Point', + 'coordinates' => array($row['longitude'], $row['latitude']), + ), + 'properties' => array( + 'id' => $row['id'], + "marker-color"=> $randomColor + ), + ); + } + $returnArray[$tour_id]["Color"] = $randomColor; + } + $this->_helper->json($returnArray); + + } /** * Filter items that have been geolocated by the Geolocation plugin. diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index 3cdacbb..d26d6e9 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -3,10 +3,10 @@ // }); $(document).ready(function () { -mallMapJs() - }); + mallMapJs() +}); -function mallMapJs(){ +function mallMapJs() { // Set map height to be window height minus header height. var windowheight = $(window).height(); $('#map').css('height', windowheight - 54); @@ -17,6 +17,7 @@ function mallMapJs(){ // document.head.appendChild(imported); var MAP_URL_TEMPLATE = 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}'; + // var MAP_URL_TEMPLATE_HIST = 'https://allmaps.xyz/maps/0450b5c641e09dd1/{z}/{x}/{y}.png'; // MAP_CENTER controls the default starting place // var MAP_CENTER = [38.8891, -77.02949]; @@ -35,6 +36,7 @@ function mallMapJs(){ var markers; var jqXhr; var locationMarker; + var markerData; // Set the base map layer. map = L.map('map', { @@ -49,27 +51,29 @@ function mallMapJs(){ // map.addLayer(L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { // attribution: '© OpenStreetMap contributors' // })); - map.addControl(L.control.zoom({position: 'topleft'})); + map.addControl(L.control.zoom({ position: 'topleft' })); map.attributionControl.setPrefix('Tiles © Esri — Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community'); // Check for user's first time visiting. Wait to locate the user after displaying tooltip on the first visit. - if(!($.cookie('myCookie'))) { + if (!($.cookie('myCookie'))) { $('#first-time').show(); - $.cookie('myCookie','visited', { path: '/', expires: 10000 }); + $.cookie('myCookie', 'visited', { path: '/', expires: 10000 }); } else { - map.locate({watch: true}); + map.locate({ watch: true }); } - $("#first-time button").on('click', function() { + $("#first-time button").on('click', function () { $('#first-time').hide(); - map.locate({watch: true}); + map.locate({ watch: true }); }); + window.onload = function () { + doQuery(); + }; + // Retain previous form state, if needed. retainFormState(); - // Add all markers by default, or retain previous marker state. - doFilters(); // Handle location found. map.on('locationfound', function (e) { @@ -92,7 +96,7 @@ function mallMapJs(){ }); locationMarker.addTo(map). bindPopup("You are within " + e.accuracy / 2 + " meters from this point"); - // User outside location bounds. + // User outside location bounds. } else { map.stopLocate(); $('#locate-button').addClass('disabled'); @@ -122,7 +126,7 @@ function mallMapJs(){ }); // Handle the filter form. - $('#filter-button').click(function(e) { + $('#filter-button').click(function (e) { e.preventDefault(); var filterButton = $(this); var clicks = filterButton.data('clicks'); @@ -141,7 +145,7 @@ function mallMapJs(){ }); // Revert form to default and display all markers. - $('#all-button').click(function(e) { + $('#all-button').click(function (e) { e.preventDefault(); revertFormState(); }); @@ -157,7 +161,7 @@ function mallMapJs(){ locationMarker = null; } map.stopLocate(); - map.locate({watch: true}); + map.locate({ watch: true }); }); // Toggle historic map layer on and off. @@ -180,7 +184,7 @@ function mallMapJs(){ }); // Toggle map filters - $('#filters div label').click(function() { + $('#filters div label').click(function () { var checkboxLabel = $(this); if (checkboxLabel.find('input[type=checkbox]').is(':checked')) { checkboxLabel.addClass('on'); @@ -206,23 +210,23 @@ function mallMapJs(){ $('#tour-type').change(function () { var itemType = $(this); if ('Place' == itemType.find(':selected').text()) { - $('#place-type-div').show({duration: 'fast'}); + $('#place-type-div').show({ duration: 'fast' }); } else { // Reset and hide the place type select. $('input[name=place-type]').removeAttr('checked'); - $('#place-type-div').hide({duration: 'fast'}); + $('#place-type-div').hide({ duration: 'fast' }); } if ('Event' == itemType.find(':selected').text()) { - $('#event-type-div').show({duration: 'fast'}); + $('#event-type-div').show({ duration: 'fast' }); } else { // Reset and hide the event type checkboxes. $('input[name=event-type]').removeAttr('checked'); - $('#event-type-div').hide({duration: 'fast'}); + $('#event-type-div').hide({ duration: 'fast' }); } doFilters(); }); - $('#map-coverage,#tour-type').on('touchstart touchend', function(event) { + $('#map-coverage,#tour-type').on('touchstart touchend', function (event) { event.stopPropagation(); }); @@ -278,7 +282,16 @@ function mallMapJs(){ Calculate every polyline, add to a global variable here. */ - + + /* + * Query all the marker data by tours + */ + function doQuery() { + jqXhr = $.post('mall-map/index/query', function (response) { + markerData = response; + doFilters(); + }); + } /* * Filter markers. @@ -286,6 +299,8 @@ function mallMapJs(){ * This must be called on every form change. */ function doFilters() { + console.log(markerData); + // Prevent concurrent filter requests. if (jqXhr) { jqXhr.abort() @@ -298,32 +313,20 @@ function mallMapJs(){ var mapCoverage = $('#map-coverage'); var tourType = $('#tour-type'); - // var placeTypes = $('input[name=place-type]:checked'); - // var eventTypes = $('input[name=event-type]:checked'); - // Prepare POST data object for request. - var postData = { - //placeTypes: [], - //eventTypes: [], - }; - // Handle each filter, adding to the POST data object. + var toursToPlot; + var mapToPlot; + // Handle each filter if ('0' != mapCoverage.val()) { - postData['mapCoverage'] = mapCoverage.val(); + mapToPlot = mapCoverage.val(); } if ('0' != tourType.val()) { - postData['tourType'] = tourType.val(); + toursToPlot = [tourType.val()]; + } else { + toursToPlot = Object.keys(markerData); } - // if (placeTypes.length) { - // placeTypes.each(function () { - // postData.placeTypes.push(this.value); - // }); - // } - // if (eventTypes.length) { - // eventTypes.each(function () { - // postData.eventTypes.push(this.value); - // }); - // } + var postData = {}; // correctly formats coordinates as [lat, long] (API returns [long, lat]) function orderCoords(path) { @@ -337,8 +340,8 @@ function mallMapJs(){ // API call to return walking coordinates between two points function getDirections(theUrl) { var xmlHttp = new XMLHttpRequest(); - xmlHttp.open( "GET", theUrl, false ); // false for synchronous request - xmlHttp.send( null ); + xmlHttp.open("GET", theUrl, false); // false for synchronous request + xmlHttp.send(null); var json = JSON.parse(xmlHttp.responseText); var path = json["features"][0]["geometry"]["coordinates"]; return path; @@ -351,91 +354,37 @@ function mallMapJs(){ var endLng; var url; var path; - var walkingPath = []; + var num = 1; + var pathToPlot = []; + var markersToPlot = []; // Make the POST request, handle the GeoJSON response, and add markers. - jqXhr = $.post('mall-map/index/filter', postData, function (response) { - //response is an array of coordinate; - var item = (1 == response.features.length) ? 'item' : 'items'; - var i = 1; - $('#marker-count').text(response.features.length + " " + item); - var geoJsonLayer = L.geoJson(response, { - // adds the correct number to each marker based on order of tour - pointToLayer: function (feature, latlng) { - var numberIcon = L.divIcon({ - className: "number-icon", - iconSize: [25, 41], - iconAnchor: [12, 40], - popupAnchor: [0, -5], - html: i - }); - i++; - return new L.marker(latlng, {icon: numberIcon}); - }, - onEachFeature: function (feature, layer) { - layer.on('click', function (e) { - // Request the item data and populate and open the marker popup. - var marker = this; - $.post('mall-map/index/get-item', {id: feature.properties.id}, function (response) { - var popupContent = '

' + response.title + '

'; - if (response.thumbnail) { - popupContent += '' + response.thumbnail + '
'; - } - popupContent += 'view more info'; - marker.bindPopup(popupContent, {maxWidth: 200, offset: L.point(0, -40)}).openPopup(); - - window.setTimeout(function () { - //map.panTo([feature.geometry.coordinates[1],feature.geometry.coordinates[0]]); - layer.getPopup().update(); - $('.open-info-panel').click(function (e) { - e.preventDefault(); - $('#info-panel').fadeToggle(200, 'linear'); - $('#toggle-map-button + .back-button').show(); - }); - }, 500); - - // Populate the item info panel. - var content = $('#info-panel-content'); - content.empty(); - content.append('

' + response.title + '

'); - for (var i = 0; i < response.date.length; i++) { - content.append('

' + response.date[i] + '

'); - } - - if (response.description) { - content.append('

' + response.description + '

'); - } else { - content.append('

No descriptions available.

'); - } - content.append(response.fullsize); - content.append('

View More

'); - }); - }); - } - }); - var json_response = eval ("(" + jqXhr.responseText + ")"); - var json_content = json_response.features; + toursToPlot.forEach(ele => { + var response = markerData[ele]["Data"]; + var walkingPath = []; + markersToPlot = markersToPlot.concat(response.features); + var json_content = response.features; var pointList = []; - for(var i = 0; i < json_content.length; i++){ + for (var i = 0; i < json_content.length; i++) { lat = json_content[i].geometry.coordinates[1]; lng = json_content[i].geometry.coordinates[0]; var point = new L.LatLng(lat, lng); pointList[i] = point; - try{ + try { markers = new L.layerGroup(); - } - catch(err){ + } + catch (err) { $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); // var imported = document.createElement("script"); // imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; // document.head.appendChild(imported); - } + } } // gets directions from one point to the next, adds this to the overall list of directions for (var i = 0; i < pointList.length - 1; i++) { startLat = pointList[i]["lat"]; startLng = pointList[i]["lng"]; - endLat = pointList[i+1]["lat"]; - endLng = pointList[i+1]["lng"]; + endLat = pointList[i + 1]["lat"]; + endLng = pointList[i + 1]["lng"]; url = `https://api.openrouteservice.org/v2/directions/foot-walking?api_key=${key}&start=${startLng},${startLat}&end=${endLng},${endLat}`; path = getDirections(url); path = orderCoords(path); @@ -443,38 +392,101 @@ function mallMapJs(){ walkingPath.push(p); } } - console.log(walkingPath); var tourPolyline = new L.Polyline(walkingPath, { - color: 'blue', + color: markerData[ele]["Color"], weight: 3, opacity: 1, smoothFactor: 1 }); - for(var j = 0; j < Object.keys(map._layers).length; j++){ - var feature = map._layers[Object.keys(map._layers)[j]]; - // what is the point of this if block? - if(feature._path){ - // map.removeLayer(feature); //map._layers[Object.keys(map._layers)[j]] = null; - } + pathToPlot.push(tourPolyline); + + for (var j = 0; j < Object.keys(map._layers).length; j++) { + var feature = map._layers[Object.keys(map._layers)[j]]; + // what is the point of this if block? + if (feature._path) { + // map.removeLayer(feature); //map._layers[Object.keys(map._layers)[j]] = null; + } + } + }); + + //response is an array of coordinate; + var item = (1 == markersToPlot.length) ? 'item' : 'items'; + $('#marker-count').text(markersToPlot.length + " " + item); + var geoJsonLayer = L.geoJson(markersToPlot, { + // adds the correct number to each marker based on order of tour + pointToLayer: function (feature, latlng) { + var numberIcon = L.divIcon({ + className: "number-icon", + iconSize: [25, 41], + iconAnchor: [12, 40], + popupAnchor: [0, -5], + html: num + }); + // numberIcon.style.backgroundColor = feature.properties["marker-color"]; + num++; + return new L.marker(latlng, { icon: numberIcon }); + }, + onEachFeature: function (feature, layer) { + layer.on('click', function (e) { + // Request the item data and populate and open the marker popup. + var marker = this; + $.post('mall-map/index/get-item', { id: feature.properties.id }, function (response) { + var popupContent = '

' + response.title + '

'; + if (response.thumbnail) { + popupContent += '' + response.thumbnail + '
'; + } + popupContent += 'view more info'; + marker.bindPopup(popupContent, { maxWidth: 200, offset: L.point(0, -40) }).openPopup(); + + window.setTimeout(function () { + //map.panTo([feature.geometry.coordinates[1],feature.geometry.coordinates[0]]); + layer.getPopup().update(); + $('.open-info-panel').click(function (e) { + e.preventDefault(); + $('#info-panel').fadeToggle(200, 'linear'); + $('#toggle-map-button + .back-button').show(); + }); + }, 500); + + // Populate the item info panel. + var content = $('#info-panel-content'); + content.empty(); + content.append('

' + response.title + '

'); + for (var i = 0; i < response.date.length; i++) { + content.append('

' + response.date[i] + '

'); + } + + if (response.description) { + content.append('

' + response.description + '

'); + } else { + content.append('

No descriptions available.

'); + } + content.append(response.fullsize); + content.append('

View More

'); + }); + }); } - markers.addLayer(geoJsonLayer); - map.addLayer(markers); - tourPolyline.addTo(map); }); + + markers.addLayer(geoJsonLayer); + pathToPlot.forEach(ele => { + ele.addTo(markers); + }) + // tourPolyline.addTo(markers); + map.addLayer(markers); } /* * Add the historic map layer. */ - function addHistoricMapLayer() - { + function addHistoricMapLayer() { // Get the historic map data - var getData = {'text': $('#map-coverage').val()}; + var getData = { 'text': $('#map-coverage').val() }; $.get('mall-map/index/historic-map-data', getData, function (response) { historicMapLayer = L.tileLayer( response.url, - {tms: true, opacity: 1.00} + { tms: true, opacity: 1.00 } ); map.addLayer(historicMapLayer); $('#toggle-map-button').show(); @@ -487,8 +499,7 @@ function mallMapJs(){ /* * Remove the historic map layer. */ - function removeHistoricMapLayer() - { + function removeHistoricMapLayer() { $('#toggle-map-button').data('clicks', false).hide(); map.removeLayer(historicMapLayer); map.attributionControl.setPrefix(''); @@ -497,8 +508,7 @@ function mallMapJs(){ /* * Revert to default (original) form state. */ - function revertFormState() - { + function revertFormState() { if (historicMapLayer) { removeHistoricMapLayer(); } @@ -506,13 +516,13 @@ function mallMapJs(){ $('#map-coverage').val('0'); $('#tour-type').val('0'); - $('#place-type-div').hide({duration: 'fast'}); + $('#place-type-div').hide({ duration: 'fast' }); $('input[name=place-type-all]').prop('checked', true). parent().addClass('on'); $('input[name=place-type]:checked').prop('checked', false). parent().removeClass('on'); - $('#event-type-div').hide({duration: 'fast'}); + $('#event-type-div').hide({ duration: 'fast' }); $('input[name=event-type-all]').prop('checked', true). parent().addClass('on'); $('input[name=event-type]:checked').prop('checked', false). @@ -527,8 +537,7 @@ function mallMapJs(){ * Acts on the assumption that all browsers will preserve the form state * when navigating back to the map from another page. */ - function retainFormState() - { + function retainFormState() { if ('0' != $('#map-coverage').val()) { addHistoricMapLayer(); } @@ -538,7 +547,7 @@ function mallMapJs(){ $('input[name=place-type-all]').parent().removeClass('on'); placeTypes.parent().addClass('on'); } - $('#place-type-div').show({duration: 'fast'}); + $('#place-type-div').show({ duration: 'fast' }); } if ('Event' == $('#tour-type').find(':selected').text()) { var eventTypes = $('input[name=event-type]:checked'); @@ -546,7 +555,7 @@ function mallMapJs(){ $('input[name=event-type-all]').parent().removeClass('on'); eventTypes.parent().addClass('on'); } - $('#event-type-div').show({duration: 'fast'}); + $('#event-type-div').show({ duration: 'fast' }); } } From dd8d06c20ec919fa566a7430d1bac0c7dc3aab01 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Tue, 21 Mar 2023 22:34:07 -0500 Subject: [PATCH 064/183] Update the filtering algo --- views/public/css/mall-map.css | 4 +- views/public/javascripts/mall-map.js | 312 ++++++++++++++------------- 2 files changed, 171 insertions(+), 145 deletions(-) diff --git a/views/public/css/mall-map.css b/views/public/css/mall-map.css index 3d81ae4..0f7582a 100755 --- a/views/public/css/mall-map.css +++ b/views/public/css/mall-map.css @@ -39,7 +39,9 @@ body { } #map { - width: 100%; + top:0; + bottom:0; + width:100%; } h1 { diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index d26d6e9..7fbdbe7 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -286,9 +286,154 @@ function mallMapJs() { /* * Query all the marker data by tours */ + + function getMarkerHTML(color) { + let markerHtmlStyles = ` + background-color: ${color}; + width: 1.7rem; + height: 1.7rem; + display: block; + left: -0.5rem; + top: -0.5rem; + position: relative; + border-radius: 1.5rem 1.5rem 0; + transform: rotate(45deg);` + return markerHtmlStyles; + } + function doQuery() { + const markerFontHtmlStyles = ` + transform: rotate(-45deg); + color:white; + text-align: center; + padding: 0.2rem 0 0.18rem 0; + font-size: 15px; + ` + + // correctly formats coordinates as [lat, long] (API returns [long, lat]) + function orderCoords(path) { + var directions = []; + for (var i = 0; i < path.length; i++) { + directions.push([path[i][1], path[i][0]]); + } + return directions; + } + + // API call to return walking coordinates between two points + function getDirections(theUrl) { + var xmlHttp = new XMLHttpRequest(); + xmlHttp.open("GET", theUrl, false); // false for synchronous request + xmlHttp.send(null); + var json = JSON.parse(xmlHttp.responseText); + var path = json["features"][0]["geometry"]["coordinates"]; + return path; + } + + var key = "5b3ce3597851110001cf62489dde4c6690bc423bb86bd99921c5da77"; + var startLat; + var startLng; + var endLat; + var endLng; + var url; + var path; + jqXhr = $.post('mall-map/index/query', function (response) { markerData = response; + + for (const [tourId, value] of Object.entries(markerData)) { + var num = 1; + var response = value["Data"]; + + var geoJsonLayer = L.geoJson(response.features, { + // adds the correct number to each marker based on order of tour + pointToLayer: function (feature, latlng) { + myCustomColour = feature.properties["marker-color"]; + var numberIcon = L.divIcon({ + className: "my-custom-pin", + iconSize: [25, 41], + iconAnchor: [12, 40], + popupAnchor: [0, -5], + html: `

${num}

` + }); + // numberIcon.style.backgroundColor = feature.properties["marker-color"]; + num++; + return new L.marker(latlng, { icon: numberIcon }); + }, + onEachFeature: function (feature, layer) { + layer.on('click', function (e) { + // Request the item data and populate and open the marker popup. + var marker = this; + $.post('mall-map/index/get-item', { id: feature.properties.id }, function (response) { + var popupContent = '

' + response.title + '

'; + if (response.thumbnail) { + popupContent += '' + response.thumbnail + '
'; + } + popupContent += 'view more info'; + marker.bindPopup(popupContent, { maxWidth: 200, offset: L.point(0, -40) }).openPopup(); + + window.setTimeout(function () { + //map.panTo([feature.geometry.coordinates[1],feature.geometry.coordinates[0]]); + layer.getPopup().update(); + $('.open-info-panel').click(function (e) { + e.preventDefault(); + $('#info-panel').fadeToggle(200, 'linear'); + $('#toggle-map-button + .back-button').show(); + }); + }, 500); + + // Populate the item info panel. + var content = $('#info-panel-content'); + content.empty(); + content.append('

' + response.title + '

'); + for (var i = 0; i < response.date.length; i++) { + content.append('

' + response.date[i] + '

'); + } + + if (response.description) { + content.append('

' + response.description + '

'); + } else { + content.append('

No descriptions available.

'); + } + content.append(response.fullsize); + content.append('

View More

'); + }); + }); + } + }); + markerData[tourId].geoJson = geoJsonLayer; + + var walkingPath = []; + var json_content = response.features; + var pointList = []; + for (var i = 0; i < json_content.length; i++) { + lat = json_content[i].geometry.coordinates[1]; + lng = json_content[i].geometry.coordinates[0]; + var point = new L.LatLng(lat, lng); + pointList[i] = point; + } + // gets directions from one point to the next, adds this to the overall list of directions + for (var i = 0; i < pointList.length - 1; i++) { + startLat = pointList[i]["lat"]; + startLng = pointList[i]["lng"]; + endLat = pointList[i + 1]["lat"]; + endLng = pointList[i + 1]["lng"]; + url = `https://api.openrouteservice.org/v2/directions/foot-walking?api_key=${key}&start=${startLng},${startLat}&end=${endLng},${endLat}`; + path = getDirections(url); + path = orderCoords(path); + for (var p of path) { + walkingPath.push(p); + } + } + var tourPolyline = new L.Polyline(walkingPath, { + color: value["Color"], + weight: 3, + opacity: 1, + smoothFactor: 1 + }); + + markerData[tourId].walkingPath = tourPolyline; + } + doFilters(); }); } @@ -301,11 +446,6 @@ function mallMapJs() { function doFilters() { console.log(markerData); - // Prevent concurrent filter requests. - if (jqXhr) { - jqXhr.abort() - } - // Remove the current markers. if (markers) { map.removeLayer(markers); @@ -326,154 +466,38 @@ function mallMapJs() { } else { toursToPlot = Object.keys(markerData); } - var postData = {}; - - // correctly formats coordinates as [lat, long] (API returns [long, lat]) - function orderCoords(path) { - var directions = []; - for (var i = 0; i < path.length; i++) { - directions.push([path[i][1], path[i][0]]); - } - return directions; - } - - // API call to return walking coordinates between two points - function getDirections(theUrl) { - var xmlHttp = new XMLHttpRequest(); - xmlHttp.open("GET", theUrl, false); // false for synchronous request - xmlHttp.send(null); - var json = JSON.parse(xmlHttp.responseText); - var path = json["features"][0]["geometry"]["coordinates"]; - return path; - } - - var key = "5b3ce3597851110001cf62489dde4c6690bc423bb86bd99921c5da77"; - var startLat; - var startLng; - var endLat; - var endLng; - var url; - var path; - var num = 1; + console.log(toursToPlot); var pathToPlot = []; - var markersToPlot = []; - // Make the POST request, handle the GeoJSON response, and add markers. - toursToPlot.forEach(ele => { - var response = markerData[ele]["Data"]; - var walkingPath = []; - markersToPlot = markersToPlot.concat(response.features); - var json_content = response.features; - var pointList = []; - for (var i = 0; i < json_content.length; i++) { - lat = json_content[i].geometry.coordinates[1]; - lng = json_content[i].geometry.coordinates[0]; - var point = new L.LatLng(lat, lng); - pointList[i] = point; - try { - markers = new L.layerGroup(); - } - catch (err) { - $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); - // var imported = document.createElement("script"); - // imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; - // document.head.appendChild(imported); - } - } - // gets directions from one point to the next, adds this to the overall list of directions - for (var i = 0; i < pointList.length - 1; i++) { - startLat = pointList[i]["lat"]; - startLng = pointList[i]["lng"]; - endLat = pointList[i + 1]["lat"]; - endLng = pointList[i + 1]["lng"]; - url = `https://api.openrouteservice.org/v2/directions/foot-walking?api_key=${key}&start=${startLng},${startLat}&end=${endLng},${endLat}`; - path = getDirections(url); - path = orderCoords(path); - for (var p of path) { - walkingPath.push(p); - } - } - var tourPolyline = new L.Polyline(walkingPath, { - color: markerData[ele]["Color"], - weight: 3, - opacity: 1, - smoothFactor: 1 - }); + var markerLayers = []; + var numMarkers = 0; - pathToPlot.push(tourPolyline); - - for (var j = 0; j < Object.keys(map._layers).length; j++) { - var feature = map._layers[Object.keys(map._layers)[j]]; - // what is the point of this if block? - if (feature._path) { - // map.removeLayer(feature); //map._layers[Object.keys(map._layers)[j]] = null; - } - } + // handle the GeoJSON response, and add markers. + toursToPlot.forEach(ele => { + numMarkers += markerData[ele].Data.features.length; + markerLayers.push(markerData[ele].geoJson); + pathToPlot.push(markerData[ele].walkingPath); }); //response is an array of coordinate; - var item = (1 == markersToPlot.length) ? 'item' : 'items'; - $('#marker-count').text(markersToPlot.length + " " + item); - var geoJsonLayer = L.geoJson(markersToPlot, { - // adds the correct number to each marker based on order of tour - pointToLayer: function (feature, latlng) { - var numberIcon = L.divIcon({ - className: "number-icon", - iconSize: [25, 41], - iconAnchor: [12, 40], - popupAnchor: [0, -5], - html: num - }); - // numberIcon.style.backgroundColor = feature.properties["marker-color"]; - num++; - return new L.marker(latlng, { icon: numberIcon }); - }, - onEachFeature: function (feature, layer) { - layer.on('click', function (e) { - // Request the item data and populate and open the marker popup. - var marker = this; - $.post('mall-map/index/get-item', { id: feature.properties.id }, function (response) { - var popupContent = '

' + response.title + '

'; - if (response.thumbnail) { - popupContent += '' + response.thumbnail + '
'; - } - popupContent += 'view more info'; - marker.bindPopup(popupContent, { maxWidth: 200, offset: L.point(0, -40) }).openPopup(); - - window.setTimeout(function () { - //map.panTo([feature.geometry.coordinates[1],feature.geometry.coordinates[0]]); - layer.getPopup().update(); - $('.open-info-panel').click(function (e) { - e.preventDefault(); - $('#info-panel').fadeToggle(200, 'linear'); - $('#toggle-map-button + .back-button').show(); - }); - }, 500); - - // Populate the item info panel. - var content = $('#info-panel-content'); - content.empty(); - content.append('

' + response.title + '

'); - for (var i = 0; i < response.date.length; i++) { - content.append('

' + response.date[i] + '

'); - } - - if (response.description) { - content.append('

' + response.description + '

'); - } else { - content.append('

No descriptions available.

'); - } - content.append(response.fullsize); - content.append('

View More

'); - }); - }); - } - }); + var item = (1 == numMarkers) ? 'item' : 'items'; + $('#marker-count').text(numMarkers + " " + item); - markers.addLayer(geoJsonLayer); + try { + markers = new L.layerGroup(); + } + catch (err) { + $.getScript("https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster.js"); + // var imported = document.createElement("script"); + // imported.src = "/cgmrdev/plugins/MallMap/views/public/javascripts/new_markercluster_src.js"; + // document.head.appendChild(imported); + } + + markerLayers.forEach(ele => { + markers.addLayer(ele); + }) pathToPlot.forEach(ele => { ele.addTo(markers); }) - // tourPolyline.addTo(markers); map.addLayer(markers); } From 92e79fc18097eb3492b2034c18a1debe4a5203c3 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Tue, 21 Mar 2023 22:39:24 -0500 Subject: [PATCH 065/183] Clean up --- controllers/IndexController.php | 100 -------------------------------- 1 file changed, 100 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index a668119..518f5cd 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -241,106 +241,6 @@ public function queryAction() } - /** - * Filter items that have been geolocated by the Geolocation plugin. - * - * Since this is mobile-first, optimized SQL queries are preferable to using - * the Omeka API. - */ - public function filterAction() - { - // Process only AJAX requests. - if (!$this->_request->isXmlHttpRequest()) { - throw new Omeka_Controller_Exception_403; - } - - $db = $this->_helper->db->getDb(); - $joins = array("$db->Item AS items ON items.id = locations.item_id"); - $wheres = array("items.public = 1"); - - // Filter public tours' items - $request_tour_id = $this->publicTours(); - - if ($this->_request->getParam('tourType')) { - $request_tour_id = array(); - $input_id = $this->_request->getParam('tourType'); - $request_tour_id[$input_id] = "Filter tour"; - } - - // Filter map coverage. - if ($this->_request->getParam('mapCoverage')) { - $alias = "map_coverage"; - $joins[] = "$db->ElementText AS $alias ON $alias.record_id = items.id AND $alias.record_type = 'Item' " - . $db->quoteInto("AND $alias.element_id = ?", self::ELEMENT_ID_MAP_COVERAGE); - $wheres[] = $db->quoteInto("$alias.text = ?", $this->_request->getParam('mapCoverage')); - } - - $tourItemTable = $db->getTable( 'TourItem' ); - $ids = array(); - $tourItemsIDs = array(); - foreach($request_tour_id as $tour_id => $tour_title){ - if($tour_id != 0){ - $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items - WHERE tour_id = $tour_id"); - } else { - $tourItemsDat = $tourItemTable->fetchObjects( "SELECT item_id FROM omeka_tour_items"); - } - - foreach ($tourItemsDat as $dat){ - $tourItemsIDs[] = (int) $dat["item_id"]; - } - } - - for ($i = 0; $i < count($tourItemsIDs); $i++){ - array_push($ids, $tourItemsIDs[$i]); - } - - $tourItemsIDs = implode(", ", $tourItemsIDs); - $wheres[] = $db->quoteInto("items.id IN ($tourItemsIDs)", Zend_Db::INT_TYPE); - - // Build the SQL. - $sql = "SELECT items.id, locations.latitude, locations.longitude\nFROM $db->Location AS locations"; - foreach ($joins as $join) { - $sql .= "\nJOIN $join"; - } - foreach ($wheres as $key => $where) { - $sql .= (0 == $key) ? "\nWHERE" : "\nAND"; - $sql .= " ($where)"; - } - $sql .= "\nGROUP BY items.id"; - - $dbItems = $db->query($sql)->fetchAll(); - $orderedItems = array(); - // orders items to match the order of the tour - for ($i = 0; $i < count($ids); $i++) { - for ($j = 0; $j < count($dbItems); $j++) { - if ($ids[$i] == $dbItems[$j]['id']) { - array_push( $orderedItems, $dbItems[$j] ); - } - } - } - // Build geoJSON: http://www.geojson.org/geojson-spec.html - $data = array('type' => 'FeatureCollection', 'features' => array()); - foreach ($orderedItems as $row) { - $data['features'][] = array( - 'type' => 'Feature', - 'geometry' => array( - 'type' => 'Point', - 'coordinates' => array($row['longitude'], $row['latitude']), - ), - 'properties' => array( - 'id' => $row['id'], - ), - ); - } - // commented code below serves as debugging tool to write output to a file - /*$text = "Anything"; - $var_str = var_export($request_tour_id, true); - $var = ""; - file_put_contents('filename.php', $var);*/ - $this->_helper->json($data); - } - /** * Get data about the selected historical map. */ From 5af3ce8a070703ed1f45d61aab33040ebbe921d9 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Wed, 22 Mar 2023 12:48:00 -0500 Subject: [PATCH 066/183] css fix to adjust overaly northward shift --- views/public/css/mall-map.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/views/public/css/mall-map.css b/views/public/css/mall-map.css index 0f7582a..30e8ab0 100755 --- a/views/public/css/mall-map.css +++ b/views/public/css/mall-map.css @@ -315,6 +315,10 @@ a#locate-button { font-family : "Raleway", sans-serif !important; } +.leaflet-tile-pane { + margin-top: -15px; +} + .leaflet-popup-content-wrapper, .leaflet-popup-tip { border-radius: 0; } @@ -422,4 +426,4 @@ a#locate-button { right: 5%; } -} \ No newline at end of file +} From 036c0b5ec6a9059101b6307d7cf89f1a39fd878b Mon Sep 17 00:00:00 2001 From: tutingjun Date: Wed, 22 Mar 2023 15:01:51 -0500 Subject: [PATCH 067/183] Update get routes algo --- views/public/javascripts/mall-map.js | 228 ++++++++++++++------------- 1 file changed, 115 insertions(+), 113 deletions(-) diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index 7fbdbe7..ef9f08d 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -55,12 +55,12 @@ function mallMapJs() { map.attributionControl.setPrefix('Tiles © Esri — Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community'); // Check for user's first time visiting. Wait to locate the user after displaying tooltip on the first visit. - if (!($.cookie('myCookie'))) { - $('#first-time').show(); - $.cookie('myCookie', 'visited', { path: '/', expires: 10000 }); - } else { - map.locate({ watch: true }); - } + // if (!($.cookie('myCookie'))) { + // $('#first-time').show(); + // $.cookie('myCookie', 'visited', { path: '/', expires: 10000 }); + // } else { + // map.locate({ watch: true }); + // } $("#first-time button").on('click', function () { $('#first-time').hide(); @@ -68,7 +68,7 @@ function mallMapJs() { }); window.onload = function () { - doQuery(); + doQuery(); å }; // Retain previous form state, if needed. @@ -319,123 +319,126 @@ function mallMapJs() { return directions; } - // API call to return walking coordinates between two points - function getDirections(theUrl) { - var xmlHttp = new XMLHttpRequest(); - xmlHttp.open("GET", theUrl, false); // false for synchronous request - xmlHttp.send(null); - var json = JSON.parse(xmlHttp.responseText); - var path = json["features"][0]["geometry"]["coordinates"]; - return path; + async function getOverallPath(points, key) { + var pointsParam = [] + points.forEach(ele => { + pointsParam.push([ele.lng, ele.lat]) + }) + url = "https://api.openrouteservice.org/v2/directions/foot-walking/geojson" + const response = await fetch(url, { + method: "POST", // *GET, POST, PUT, DELETE, etc. + headers: { + 'Accept': 'application/json, application/geo+json, application/gpx+xml, img/png; charset=utf-8', + "Content-Type": "application/json", + 'Authorization': key + // 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: `{"coordinates": ${JSON.stringify(pointsParam)}}`, // body data type must match "Content-Type" header + }) + return response.json(); } var key = "5b3ce3597851110001cf62489dde4c6690bc423bb86bd99921c5da77"; - var startLat; - var startLng; - var endLat; - var endLng; var url; - var path; jqXhr = $.post('mall-map/index/query', function (response) { markerData = response; - - for (const [tourId, value] of Object.entries(markerData)) { - var num = 1; - var response = value["Data"]; - - var geoJsonLayer = L.geoJson(response.features, { - // adds the correct number to each marker based on order of tour - pointToLayer: function (feature, latlng) { - myCustomColour = feature.properties["marker-color"]; - var numberIcon = L.divIcon({ - className: "my-custom-pin", - iconSize: [25, 41], - iconAnchor: [12, 40], - popupAnchor: [0, -5], - html: `

${num}

` - }); - // numberIcon.style.backgroundColor = feature.properties["marker-color"]; - num++; - return new L.marker(latlng, { icon: numberIcon }); - }, - onEachFeature: function (feature, layer) { - layer.on('click', function (e) { - // Request the item data and populate and open the marker popup. - var marker = this; - $.post('mall-map/index/get-item', { id: feature.properties.id }, function (response) { - var popupContent = '

' + response.title + '

'; - if (response.thumbnail) { - popupContent += '' + response.thumbnail + '
'; - } - popupContent += 'view more info'; - marker.bindPopup(popupContent, { maxWidth: 200, offset: L.point(0, -40) }).openPopup(); - - window.setTimeout(function () { - //map.panTo([feature.geometry.coordinates[1],feature.geometry.coordinates[0]]); - layer.getPopup().update(); - $('.open-info-panel').click(function (e) { - e.preventDefault(); - $('#info-panel').fadeToggle(200, 'linear'); - $('#toggle-map-button + .back-button').show(); - }); - }, 500); - - // Populate the item info panel. - var content = $('#info-panel-content'); - content.empty(); - content.append('

' + response.title + '

'); - for (var i = 0; i < response.date.length; i++) { - content.append('

' + response.date[i] + '

'); - } - - if (response.description) { - content.append('

' + response.description + '

'); - } else { - content.append('

No descriptions available.

'); - } - content.append(response.fullsize); - content.append('

View More

'); + dataArray = Object.entries(markerData) + let requests = dataArray.map(([tourId, value]) => { + console.log([tourId, value]) + return new Promise((resolve) => { + var num = 1; + var response = value["Data"]; + + var geoJsonLayer = L.geoJson(response.features, { + // adds the correct number to each marker based on order of tour + pointToLayer: function (feature, latlng) { + myCustomColour = feature.properties["marker-color"]; + var numberIcon = L.divIcon({ + className: "my-custom-pin", + iconSize: [25, 41], + iconAnchor: [12, 40], + popupAnchor: [0, -5], + html: `

${num}

` }); - }); - } - }); - markerData[tourId].geoJson = geoJsonLayer; - - var walkingPath = []; - var json_content = response.features; - var pointList = []; - for (var i = 0; i < json_content.length; i++) { - lat = json_content[i].geometry.coordinates[1]; - lng = json_content[i].geometry.coordinates[0]; - var point = new L.LatLng(lat, lng); - pointList[i] = point; - } - // gets directions from one point to the next, adds this to the overall list of directions - for (var i = 0; i < pointList.length - 1; i++) { - startLat = pointList[i]["lat"]; - startLng = pointList[i]["lng"]; - endLat = pointList[i + 1]["lat"]; - endLng = pointList[i + 1]["lng"]; - url = `https://api.openrouteservice.org/v2/directions/foot-walking?api_key=${key}&start=${startLng},${startLat}&end=${endLng},${endLat}`; - path = getDirections(url); - path = orderCoords(path); - for (var p of path) { - walkingPath.push(p); + // numberIcon.style.backgroundColor = feature.properties["marker-color"]; + num++; + return new L.marker(latlng, { icon: numberIcon }); + }, + onEachFeature: function (feature, layer) { + layer.on('click', function (e) { + // Request the item data and populate and open the marker popup. + var marker = this; + $.post('mall-map/index/get-item', { id: feature.properties.id }, function (response) { + var popupContent = '

' + response.title + '

'; + if (response.thumbnail) { + popupContent += '' + response.thumbnail + '
'; + } + popupContent += 'view more info'; + marker.bindPopup(popupContent, { maxWidth: 200, offset: L.point(0, -40) }).openPopup(); + + window.setTimeout(function () { + //map.panTo([feature.geometry.coordinates[1],feature.geometry.coordinates[0]]); + layer.getPopup().update(); + $('.open-info-panel').click(function (e) { + e.preventDefault(); + $('#info-panel').fadeToggle(200, 'linear'); + $('#toggle-map-button + .back-button').show(); + }); + }, 500); + + // Populate the item info panel. + var content = $('#info-panel-content'); + content.empty(); + content.append('

' + response.title + '

'); + for (var i = 0; i < response.date.length; i++) { + content.append('

' + response.date[i] + '

'); + } + + if (response.description) { + content.append('

' + response.description + '

'); + } else { + content.append('

No descriptions available.

'); + } + content.append(response.fullsize); + content.append('

View More

'); + }); + }); + } + }); + markerData[tourId].geoJson = geoJsonLayer; + + var walkingPath = []; + var json_content = response.features; + var pointList = []; + for (var i = 0; i < json_content.length; i++) { + lat = json_content[i].geometry.coordinates[1]; + lng = json_content[i].geometry.coordinates[0]; + var point = new L.LatLng(lat, lng); + pointList[i] = point; } - } - var tourPolyline = new L.Polyline(walkingPath, { - color: value["Color"], - weight: 3, - opacity: 1, - smoothFactor: 1 + getOverallPath(pointList, key).then((data) => { + var path = data["features"][0]["geometry"]["coordinates"]; + console.log(data); // JSON data parsed by `data.json()` call + path = orderCoords(path); + for (var p of path) { + walkingPath.push(p); + } + var tourPolyline = new L.Polyline(walkingPath, { + color: value["Color"], + weight: 3, + opacity: 1, + smoothFactor: 1 + }); + markerData[tourId].walkingPath = tourPolyline; + resolve() + }); }); + }) - markerData[tourId].walkingPath = tourPolyline; - } - - doFilters(); + Promise.all(requests).then(() => doFilters()); }); + } /* @@ -477,7 +480,6 @@ function mallMapJs() { markerLayers.push(markerData[ele].geoJson); pathToPlot.push(markerData[ele].walkingPath); }); - //response is an array of coordinate; var item = (1 == numMarkers) ? 'item' : 'items'; $('#marker-count').text(numMarkers + " " + item); From 1bf6e7b052f9f549f4ffbdbd50171659123d0003 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Wed, 22 Mar 2023 16:40:36 -0500 Subject: [PATCH 068/183] clean up --- views/public/javascripts/mall-map.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index ef9f08d..abf62a6 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -68,7 +68,7 @@ function mallMapJs() { }); window.onload = function () { - doQuery(); å + doQuery(); }; // Retain previous form state, if needed. @@ -407,7 +407,7 @@ function mallMapJs() { } }); markerData[tourId].geoJson = geoJsonLayer; - + console.log(geoJsonLayer) var walkingPath = []; var json_content = response.features; var pointList = []; @@ -419,7 +419,6 @@ function mallMapJs() { } getOverallPath(pointList, key).then((data) => { var path = data["features"][0]["geometry"]["coordinates"]; - console.log(data); // JSON data parsed by `data.json()` call path = orderCoords(path); for (var p of path) { walkingPath.push(p); From 07788157d61257a0d3a5cba52c8b87cf872efc98 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Wed, 22 Mar 2023 18:36:14 -0500 Subject: [PATCH 069/183] Update styling for desktop view --- controllers/IndexController.php | 2 + views/public/css/mall-map.css | 68 +++++++++++++++++++++++++--- views/public/index/index.php | 11 +++-- views/public/javascripts/mall-map.js | 36 +++++++++------ 4 files changed, 94 insertions(+), 23 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 518f5cd..da75237 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -236,6 +236,7 @@ public function queryAction() ); } $returnArray[$tour_id]["Color"] = $randomColor; + $returnArray[$tour_id]["Tour Name"] = $request_tour_id[$tour_id]; } $this->_helper->json($returnArray); @@ -271,6 +272,7 @@ public function getItemAction() 'id' => $item->id, 'title' => metadata($item, array('Dublin Core', 'Title')), 'description' => metadata($item, array('Dublin Core', 'Description'), array('no-escape' => true)), + 'abstract' => metadata($item, array('Dublin Core', 'Abstract'), array('no-escape' => true)), 'date' => metadata($item, array('Dublin Core', 'Date'), array('all' => true)), 'thumbnail' => item_image('square_thumbnail', array(), 0, $item), 'fullsize' => item_image('fullsize', array('style' => 'max-width: 100%; height: auto;'), 0, $item), diff --git a/views/public/css/mall-map.css b/views/public/css/mall-map.css index 30e8ab0..2ea0c71 100755 --- a/views/public/css/mall-map.css +++ b/views/public/css/mall-map.css @@ -130,6 +130,7 @@ div[role="main"] { margin: -20px -10px 20px; padding: 10px; font-weight: 300; + text-align: center; } a#toggle-map-button:before { content: "\e00f"; } @@ -285,28 +286,81 @@ a#locate-button { border-radius: 10px !important; box-sizing: content-box !important; } - -#info-panel { - display: none; +#info-panel-container { position: absolute; background: url('../images/bg.jpg') no-repeat top right; background-size: cover; top: 0; left: 0; - height: 100%; + height: 89%; z-index: 1020; - overflow-y: auto; - -webkit-overflow-scrolling: touch; width: 100%; +} + +#info-panel{ + height: 100%; + overflow: None; + /* -webkit-overflow-scrolling: touch; */ margin-bottom: 1em; } #info-panel-content { padding: 20px 10px; + max-height: 100%; } #info-panel p { - line-height: 24px; + width: 100%; + line-height: 1.5; + white-space: pre-line; + word-break: break-word; +} + +.info-content{ + display: flex; + position: absolute; + width: 100%; + height: calc(100vh - 100px); + color: #222; + overflow: hidden; +} +@media screen and (max-width: 640px) { + + .info-content { + flex-direction: column; + } + +} + +.info-content .image-container{ + flex: 1 1; + margin: 0 1rem; +} +.info-content .content-container{ + flex: 1 1; + margin: 0 1rem; + display: flex; + flex-direction: column; + overflow: auto; +} +.info-content .content-container .article{ + flex: none; + display: flex; + flex-direction: column; + align-items: flex-start; + padding: 0px 32px; + padding-bottom: 20px; +} + +img.image-container{ + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + background: no-repeat 50%; + background-size: cover; + cursor: pointer; } /* Leaflet Overrides */ diff --git a/views/public/index/index.php b/views/public/index/index.php index 828c497..dc549c9 100755 --- a/views/public/index/index.php +++ b/views/public/index/index.php @@ -49,10 +49,15 @@
- +
+
+ formLabel( 'color', __('Color') ); ?> +
+
+ formTextarea( 'color', $tour->color,array( 'rows' => 1, 'cols' => '40' ) ); ?> +

+
+
+
diff --git a/views/public/css/mall-map.css b/views/public/css/mall-map.css index 2ea0c71..775ac8b 100755 --- a/views/public/css/mall-map.css +++ b/views/public/css/mall-map.css @@ -125,7 +125,7 @@ div[role="main"] { } #info-panel h1 { - background-color: #edc86a; + background-color: #8cbcd8; color: #3d5a80; margin: -20px -10px 20px; padding: 10px; @@ -320,7 +320,7 @@ a#locate-button { display: flex; position: absolute; width: 100%; - height: calc(100vh - 100px); + height: calc(100vh- 50px); color: #222; overflow: hidden; } From 51e861a7e45e4ec83a0c82b30dac61e83c35b26e Mon Sep 17 00:00:00 2001 From: tutingjun Date: Thu, 23 Mar 2023 17:22:19 -0500 Subject: [PATCH 071/183] Update info panel style --- views/public/css/mall-map.css | 90 ++++++++++++++++++---------- views/public/index/index.php | 6 +- views/public/javascripts/mall-map.js | 21 ++++--- 3 files changed, 76 insertions(+), 41 deletions(-) diff --git a/views/public/css/mall-map.css b/views/public/css/mall-map.css index 775ac8b..779aef5 100755 --- a/views/public/css/mall-map.css +++ b/views/public/css/mall-map.css @@ -126,11 +126,14 @@ div[role="main"] { #info-panel h1 { background-color: #8cbcd8; - color: #3d5a80; - margin: -20px -10px 20px; - padding: 10px; - font-weight: 300; + color: white; + margin: 0; + padding: 15px; + font-weight: 600; text-align: center; + z-index: 4000; + font-size: 2rem; + text-shadow: 0.5px 0.5px 2px black; } a#toggle-map-button:before { content: "\e00f"; } @@ -214,13 +217,13 @@ a#locate-button { display: block; padding: .5em 10px; z-index: 1010; - background-color: #edc86a; - border-bottom: 1px solid rgba(255,255,255,.5); - color: #3d5a80; + color: white; + text-shadow: 0.5px 0.5px 2px black; + } #info-panel .back-button:hover { - color: white; + color: #edc86a; } #filters { @@ -287,26 +290,42 @@ a#locate-button { box-sizing: content-box !important; } #info-panel-container { + width: 100%; + border: 48px solid transparent; + background: rgba(0,0,0,.5); + z-index: 2000; position: absolute; - background: url('../images/bg.jpg') no-repeat top right; - background-size: cover; - top: 0; left: 0; - height: 89%; - z-index: 1020; - width: 100%; + top: 0; + height: 100%; } #info-panel{ - height: 100%; - overflow: None; - /* -webkit-overflow-scrolling: touch; */ - margin-bottom: 1em; + position: absolute; + width: 800px; + height: 600px; + max-width: 100%; + max-height: 100%; + left: 0; + top: 0; + right: 0; + bottom: 0; + margin: auto; + -webkit-user-select: text; + -ms-user-select: text; + user-select: text; + z-index: inherit; } #info-panel-content { - padding: 20px 10px; - max-height: 100%; + display: flex; + width: 100%; + height: 100%; + color: #222; + font-size: 16px; + overflow: hidden; + background: url('../images/bg.jpg') no-repeat top right; + background-size: cover; } #info-panel p { @@ -318,12 +337,12 @@ a#locate-button { .info-content{ display: flex; - position: absolute; width: 100%; - height: calc(100vh- 50px); + height: 100%; color: #222; overflow: hidden; } + @media screen and (max-width: 640px) { .info-content { @@ -334,11 +353,19 @@ a#locate-button { .info-content .image-container{ flex: 1 1; - margin: 0 1rem; + position: relative; + margin: 0; +} + +.info-content .image-container img{ + position: static; + width: 100%; + height: 100% !important; + object-fit: cover; + margin: 0; } .info-content .content-container{ flex: 1 1; - margin: 0 1rem; display: flex; flex-direction: column; overflow: auto; @@ -351,16 +378,13 @@ a#locate-button { padding: 0px 32px; padding-bottom: 20px; } - -img.image-container{ - position: absolute; - left: 0; - top: 0; +h2.info-panel-title{ width: 100%; - height: 100%; - background: no-repeat 50%; - background-size: cover; - cursor: pointer; + font-size: 1.5rem; + font-weight: 700; + line-height: 1.33; + margin: 12px 0; + margin-top: 1.45rem; } /* Leaflet Overrides */ diff --git a/views/public/index/index.php b/views/public/index/index.php index dc549c9..7f0e2ef 100755 --- a/views/public/index/index.php +++ b/views/public/index/index.php @@ -52,8 +52,11 @@ @@ -62,5 +65,6 @@ Make me center
+
- + diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index fa29c6a..00efd05 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -348,8 +348,14 @@ function mallMapJs() { console.log([tourId, value]) console.log(value) return new Promise((resolve) => { - var num = 1; + var numMarker = 1; + var numPopup; var response = value["Data"]; + var itemIDList = []; + + response.features.forEach(ele => { + itemIDList.push(ele.properties.id) + }) var geoJsonLayer = L.geoJson(response.features, { // adds the correct number to each marker based on order of tour @@ -360,10 +366,10 @@ function mallMapJs() { iconSize: [25, 41], iconAnchor: [12, 40], popupAnchor: [0, -5], - html: `

${num}

` + html: `

${numMarker}

` }); // numberIcon.style.backgroundColor = feature.properties["marker-color"]; - num++; + numMarker++; return new L.marker(latlng, { icon: numberIcon }); }, onEachFeature: function (feature, layer) { @@ -386,23 +392,23 @@ function mallMapJs() { e.preventDefault(); $('#info-panel-container').fadeToggle(200, 'linear'); $('#toggle-map-button + .back-button').show(); + marker.closePopup(); }); }, 500); - console.log(tourId) // Populate the item info panel. + numPopup = itemIDList.findIndex((ele) => ele == response.id) + 1 + document.getElementById("info-panel-name").innerHTML = value["Tour Name"] + ` #${numPopup}`; var content = $('#info-panel-content'); content.empty(); - content.append('

' + value["Tour Name"] + ` #${num}` + '

'); var infoContent = "" var leftContent = ""; var rightContent = ""; leftContent += response.fullsize; - leftContent += '

See Full Details

'; infoContent += '
' + leftContent + '
'; - rightContent += '

' + response.title + '

' + rightContent += '

' + response.title + '

' if (response.abstract) { rightContent += '

' + response.abstract + '

'; } else if (response.description) { @@ -410,6 +416,7 @@ function mallMapJs() { } else { rightContent += '

No descriptions available.

'; } + rightContent += '

See Full Details

'; infoContent += '
' + rightContent + '
'; content.append('
' + infoContent + '
') From 18edf50e6b892fc7c9ac012bc4d0b80ab8edcfc7 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Thu, 23 Mar 2023 20:15:50 -0500 Subject: [PATCH 072/183] Update the see full details redirect --- views/public/javascripts/mall-map.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/public/javascripts/mall-map.js b/views/public/javascripts/mall-map.js index 00efd05..9c61635 100755 --- a/views/public/javascripts/mall-map.js +++ b/views/public/javascripts/mall-map.js @@ -416,7 +416,7 @@ function mallMapJs() { } else { rightContent += '

No descriptions available.

'; } - rightContent += '

See Full Details

'; + rightContent += '

See Full Details

'; infoContent += '
' + rightContent + '
'; content.append('
' + infoContent + '
') From b0e30f2c00b7123fa237d30a6dfe088d7dd8feac Mon Sep 17 00:00:00 2001 From: tutingjun Date: Thu, 23 Mar 2023 21:27:07 -0500 Subject: [PATCH 073/183] mobile view update --- controllers/IndexController.php | 5 ----- views/public/css/mall-map.css | 19 +++++++++++++++++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/controllers/IndexController.php b/controllers/IndexController.php index 69b96dd..f47af00 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -156,10 +156,6 @@ public function indexAction() ->appendStylesheet(src('mall-map', 'css', 'css')); } - function rand_color() { - return '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT); - } - /* * Beginning to separate tours into separate features */ @@ -199,7 +195,6 @@ public function queryAction() } foreach($tourItemsIDs as $tour_id => $item_array){ - $randomColor = $this->rand_color(); $tourItemsID = implode(", ", $item_array); $wheres = array("items.public = 1"); diff --git a/views/public/css/mall-map.css b/views/public/css/mall-map.css index 779aef5..43e9bf8 100755 --- a/views/public/css/mall-map.css +++ b/views/public/css/mall-map.css @@ -344,11 +344,26 @@ a#locate-button { } @media screen and (max-width: 640px) { - .info-content { flex-direction: column; } - + #info-panel{ + height: 840px; + } + #info-panel-container{ + border-left-width: 16px; + border-right-width: 16px; + border-bottom-width: 16px; + } + #info-panel h1{ + font-size: 1.5rem; + } + .info-content .image-container{ + height: 250px; + } + h2.info-panel-title{ + font-size: 1rem; + } } .info-content .image-container{ From b03cc78b5bd6852d2c0f4a624d69398de603fa2a Mon Sep 17 00:00:00 2001 From: tutingjun Date: Thu, 23 Mar 2023 23:03:14 -0500 Subject: [PATCH 074/183] update tour filter --- views/public/css/mall-map.css | 12 +++-- views/public/index/index.php | 17 ++----- views/public/javascripts/mall-map.js | 71 ++++++++++++++++------------ 3 files changed, 54 insertions(+), 46 deletions(-) diff --git a/views/public/css/mall-map.css b/views/public/css/mall-map.css index 43e9bf8..81ffff6 100755 --- a/views/public/css/mall-map.css +++ b/views/public/css/mall-map.css @@ -226,6 +226,10 @@ a#locate-button { color: #edc86a; } +#tour-type-div p{ + margin: 0.75rem 0 0.5rem 0; +} + #filters { position: absolute; left: 0; @@ -250,11 +254,13 @@ a#locate-button { width: 100%; color: #DF582D; position: relative; + font-weight: 550; + letter-spacing: 0.5px; } #filters div label.on { - background-color: rgba(33, 201, 0, 0.15); - color: #36A036;; + background-color: rgba(33, 201, 0, 0.15) !important; + color: #36A036 !important; } #filters div label:before { @@ -274,7 +280,7 @@ a#locate-button { #filters div label.on:before { content: "\e006"; - background-color: rgba(33, 201, 0, 1); + background-color: rgba(33, 201, 0, 1) !important; } #filters div input[type=checkbox] { diff --git a/views/public/index/index.php b/views/public/index/index.php index 7f0e2ef..86a015f 100755 --- a/views/public/index/index.php +++ b/views/public/index/index.php @@ -20,18 +20,11 @@ - - -
+ + \ No newline at end of file diff --git a/views/public/fonts/icomoon/license.txt b/views/public/fonts/icomoon/license.txt new file mode 100644 index 0000000..22207a0 --- /dev/null +++ b/views/public/fonts/icomoon/license.txt @@ -0,0 +1,10 @@ +Icon Set: Entypo -- http://www.entypo.com/ +License: CC BY-SA 3.0 -- http://creativecommons.org/licenses/by-sa/3.0/ + + +Icon Set: IcoMoon - Free -- http://keyamoon.com/icomoon/ +License: CC BY 3.0 -- http://creativecommons.org/licenses/by/3.0/ + + +Icon Set: Iconic -- http://somerandomdude.com/work/iconic/ +License: CC BY-SA 3.0 -- http://creativecommons.org/licenses/by-sa/3.0/us/ \ No newline at end of file diff --git a/views/public/fonts/icomoon/lte-ie7.js b/views/public/fonts/icomoon/lte-ie7.js new file mode 100644 index 0000000..9ff2d47 --- /dev/null +++ b/views/public/fonts/icomoon/lte-ie7.js @@ -0,0 +1,49 @@ +/* Load this script using conditional IE comments if you need to support IE 7 and IE 6. */ + +window.onload = function() { + function addIcon(el, entity) { + var html = el.innerHTML; + el.innerHTML = '' + entity + '' + html; + } + var icons = { + 'icon-search' : '', + 'icon-facebook' : '', + 'icon-twitter' : '', + 'icon-export' : '', + 'icon-house' : '', + 'icon-list' : '', + 'icon-arrow-left' : '', + 'icon-arrow-down' : '', + 'icon-arrow-up' : '', + 'icon-arrow-right' : '', + 'icon-pinterest' : '', + 'icon-googleplus' : '', + 'icon-rss' : '', + 'icon-reply' : '', + 'icon-user' : '', + 'icon-map' : '', + 'icon-cycle' : '', + 'icon-reload' : '', + 'icon-location' : '', + 'icon-equalizer' : '', + 'icon-tumblr' : '', + 'icon-cross' : '' + }, + els = document.getElementsByTagName('*'), + i, attr, c, el; + for (i = 0; ; i += 1) { + el = els[i]; + if(!el) { + break; + } + attr = el.getAttribute('data-icon'); + if (attr) { + addIcon(el, attr); + } + c = el.className; + c = c.match(/icon-[^\s'"]+/); + if (c && icons[c[0]]) { + addIcon(el, icons[c[0]]); + } + } +}; \ No newline at end of file diff --git a/views/public/fonts/icomoon/style.css b/views/public/fonts/icomoon/style.css new file mode 100644 index 0000000..d0061a6 --- /dev/null +++ b/views/public/fonts/icomoon/style.css @@ -0,0 +1,106 @@ +@font-face { + font-family: 'icomoon'; + src:url('fonts/icomoon.eot'); + src:url('fonts/icomoon.eot?#iefix') format('embedded-opentype'), + url('fonts/icomoon.woff') format('woff'), + url('fonts/icomoon.ttf') format('truetype'), + url('fonts/icomoon.svg#icomoon') format('svg'); + font-weight: normal; + font-style: normal; +} + +/* Use the following CSS code if you want to use data attributes for inserting your icons */ +[data-icon]:before { + font-family: 'icomoon'; + content: attr(data-icon); + speak: none; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Use the following CSS code if you want to have a class per icon */ +/* +Instead of a list of all class selectors, +you can use the generic selector below, but it's slower: +[class*="icon-"] { +*/ +.icon-search, .icon-facebook, .icon-twitter, .icon-export, .icon-house, .icon-list, .icon-arrow-left, .icon-arrow-down, .icon-arrow-up, .icon-arrow-right, .icon-pinterest, .icon-googleplus, .icon-rss, .icon-reply, .icon-user, .icon-map, .icon-cycle, .icon-reload, .icon-location, .icon-equalizer, .icon-tumblr, .icon-cross { + font-family: 'icomoon'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; +} +.icon-search:before { + content: "\e000"; +} +.icon-facebook:before { + content: "\e002"; +} +.icon-twitter:before { + content: "\e001"; +} +.icon-export:before { + content: "\e003"; +} +.icon-house:before { + content: "\e004"; +} +.icon-list:before { + content: "\e005"; +} +.icon-arrow-left:before { + content: "\e006"; +} +.icon-arrow-down:before { + content: "\e007"; +} +.icon-arrow-up:before { + content: "\e008"; +} +.icon-arrow-right:before { + content: "\e009"; +} +.icon-pinterest:before { + content: "\e00a"; +} +.icon-googleplus:before { + content: "\e00b"; +} +.icon-rss:before { + content: "\e00c"; +} +.icon-reply:before { + content: "\e00d"; +} +.icon-user:before { + content: "\e00e"; +} +.icon-map:before { + content: "\e00f"; +} +.icon-cycle:before { + content: "\e010"; +} +.icon-reload:before { + content: "\e011"; +} +.icon-location:before { + content: "\e012"; +} +.icon-equalizer:before { + content: "\e013"; +} +.icon-tumblr:before { + content: "\e014"; +} +.icon-cross:before { + content: "\e600"; +} diff --git a/views/public/index/index.php b/views/public/index/index.php index aefb773..fa8e7b0 100755 --- a/views/public/index/index.php +++ b/views/public/index/index.php @@ -1,9 +1,3 @@ - - 'map')); ?> Home', array('id' => 'home-button')); ?>
diff --git a/views/public/javascripts/walking-tour.js b/views/public/javascripts/walking-tour.js index c4d76ea..64c22ae 100755 --- a/views/public/javascripts/walking-tour.js +++ b/views/public/javascripts/walking-tour.js @@ -3,9 +3,9 @@ $(document).ready(function () { }); function walkingTourJs() { - $.getScript("https://unpkg.com/leaflet.markercluster@1.4.1/dist/leaflet.markercluster.js"); + // $.getScript("https://unpkg.com/leaflet.markercluster@1.4.1/dist/leaflet.markercluster.js"); + // imported.src = "/cgmrdev/plugins/WalkingTour/views/public/javascripts/new_markercluster_src.js"; var imported = document.createElement("script"); - imported.src = "/cgmrdev/plugins/WalkingTour/views/public/javascripts/new_markercluster_src.js"; document.head.appendChild(imported); // Set map height to be window height minus header height. var windowheight = $(window).height(); @@ -38,7 +38,6 @@ function walkingTourJs() { } $("#first-time > div.tooltip > button").on('click', function () { - console.log('tes') $('.tooltip').fadeToggle(); $('.tooltip-locate').fadeToggle(); }); @@ -66,7 +65,6 @@ function walkingTourJs() { // Handle the filter form. $('#filter-button').click(function (e) { - console.log("here") e.preventDefault(); // First close any popups @@ -117,11 +115,9 @@ function walkingTourJs() { $('#filters').fadeToggle(200, 'linear'); if (curTourSelected) { - console.log(curTourSelected) curTourSelected.Data.features.forEach(ele => { itemIDList.push(ele.properties.id) }) - console.log(itemIDList) $('#info-panel-container').fadeToggle(200, 'linear'); $('#toggle-map-button + .back-button').show(); @@ -272,7 +268,6 @@ function walkingTourJs() { } function mapSetUp(response) { - console.log(response) MAP_MAX_ZOOM = parseInt(response['walking_tour_max_zoom']) MAP_MIN_ZOOM = parseInt(response['walking_tour_min_zoom']) MAP_CENTER = parse1DArrayPoint(response['walking_tour_center']) @@ -321,7 +316,6 @@ function walkingTourJs() { // Handle location found. map.on('locationfound', function (e) { - console.log("here") // User within location bounds. Set the location marker. if (L.latLngBounds(LOCATE_BOUNDS).contains(e.latlng)) { launchTooltip(); @@ -413,6 +407,10 @@ function walkingTourJs() { var css = "" for (const tour_id in markerData) { var color = markerData[tour_id]['Color'] + // TODO Temp solution + if (color.length == 0){ + color = "#000000" + } var rgb = hexToRgb(color) css += `#filters div label.label${tour_id}:before { background-color: ${color} !important; @@ -531,7 +529,6 @@ function walkingTourJs() { popupContent += 'view more info'; if (!layer.getPopup()) { marker.bindPopup(popupContent, { maxWidth: 200, offset: L.point(0, -40) }).openPopup(); - console.log(marker) allMarkers[response.id] = marker; } From 6e1a39dba30b7bff0310750d860bf2c9e9699982 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Fri, 16 Feb 2024 12:28:00 -0600 Subject: [PATCH 112/183] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ba54e45..8a87f9c 100755 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ One annoying issue we found is that there is some coupling between the MallMap t ## How to Debug for PHP - For view, use `d($var)` to overlay the debug information on the screen -- For controllers, use `_log($var)` to write the debug information on the `errors.log` in site applicartion folder +- For controllers, use `_log($var)` to write the debug information on the `errors.log` in site application folder ## TODO From 95e186d8519c6b13a757f0d8c19c0ee31a182901 Mon Sep 17 00:00:00 2001 From: Alejandro Gonzalez Date: Fri, 16 Feb 2024 18:44:13 +0000 Subject: [PATCH 113/183] added signs to coordinates, exhibit ID, --- WalkingTourPlugin.php | 1 + models/Tour.php | 6 +++--- views/public/javascripts/walking-tour.js | 6 +++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/WalkingTourPlugin.php b/WalkingTourPlugin.php index 119a655..dc9ccb7 100644 --- a/WalkingTourPlugin.php +++ b/WalkingTourPlugin.php @@ -67,6 +67,7 @@ public function hookInstall() `tour_id` INT( 10 ) UNSIGNED NOT NULL, `ordinal` INT NOT NULL, `item_id` INT( 10 ) UNSIGNED NOT NULL, + `exhibit_id` INT( 10 ) UNSIGNED NOT NULL, PRIMARY KEY( `id` ), KEY `tour` ( `tour_id` ) ) ENGINE=InnoDB "; diff --git a/models/Tour.php b/models/Tour.php index 7adf040..f30a8ec 100644 --- a/models/Tour.php +++ b/models/Tour.php @@ -65,9 +65,9 @@ public function addItem( $item_id, $ordinal = null ) $tourItem->tour_id = $this->id; $tourItem->item_id = $item_id; $tourItem->ordinal = $ordinal; - // if (plugin_is_active('ExhibitBuilder')){ - // $tourItem->exhibit_id = 0; - // } + if (plugin_is_active('ExhibitBuilder')){ + $tourItem->exhibit_id = 0; + } $tourItem->save(); } diff --git a/views/public/javascripts/walking-tour.js b/views/public/javascripts/walking-tour.js index 64c22ae..4e6f34c 100755 --- a/views/public/javascripts/walking-tour.js +++ b/views/public/javascripts/walking-tour.js @@ -252,7 +252,7 @@ function walkingTourJs() { } function parse2DArrayPoint(text) { - ptn = text.match(/(\[[0-9]*.[0-9]*, [0-9]*.[0-9]*\])/g) + ptn = text.match(/(\[-?[0-9]*.[0-9]*, -?[0-9]*.[0-9]*\])/g) b_new = [] ptn.forEach(ele => { temp_ele = ele.split(",") @@ -565,6 +565,7 @@ function walkingTourJs() { } async function getOverallPath(points, key) { + console.log(points) var pointsParam = [] points.forEach(ele => { pointsParam.push([ele.lng, ele.lat]) @@ -589,6 +590,7 @@ function walkingTourJs() { var tourToItem = {} jqXhr = $.post('walking-tour/index/query', function (response) { markerData = response; + console.log(response) dataArray = Object.entries(markerData) for (const tour in markerData) { itemArray = itemArray.concat(markerData[tour]['Data']['features']) @@ -648,6 +650,7 @@ function walkingTourJs() { markerData[tourId].geoJson = geoJsonLayer; var walkingPath = []; var json_content = response.features; + console.log(json_content) var pointList = []; for (var i = 0; i < json_content.length; i++) { lat = json_content[i].geometry.coordinates[1]; @@ -655,6 +658,7 @@ function walkingTourJs() { var point = new L.LatLng(lat, lng); pointList[i] = point; } + console.log(pointList) getOverallPath(pointList, key).then((data) => { var path = data["features"][0]["geometry"]["coordinates"]; path = orderCoords(path); From 2cd77c47459c7420db3127e76048e9a671a12f5f Mon Sep 17 00:00:00 2001 From: tutingjun Date: Fri, 16 Feb 2024 12:47:10 -0600 Subject: [PATCH 114/183] Update css issue --- views/public/css/walking-tour.css | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/views/public/css/walking-tour.css b/views/public/css/walking-tour.css index c7ac1fe..c1f13eb 100755 --- a/views/public/css/walking-tour.css +++ b/views/public/css/walking-tour.css @@ -117,6 +117,15 @@ div[role="main"] { border-radius: 3px; } +a.button{ + background-color: #3d3d3d; + color: #fff; + padding: 0.75em; + border-radius: 3px; + border-radius: 3px; + border-radius: 3px; +} + #marker-count { } From 2ad820524db3b5772a830c593eec47228a249cf0 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Fri, 23 Feb 2024 11:24:24 -0600 Subject: [PATCH 115/183] update plugin author name --- README.md | 1 + plugin.ini | 2 +- views/public/javascripts/walking-tour.js | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8a87f9c..ac782e4 100755 --- a/README.md +++ b/README.md @@ -57,3 +57,4 @@ One annoying issue we found is that there is some coupling between the MallMap t - [x] Default color value - [x] Make the tour `getItemAction` not require abstract --> abstract needs `Dublin core extended` - [x] Font resources +- [x] use leaflet watch diff --git a/plugin.ini b/plugin.ini index a953d8a..b4b96bb 100755 --- a/plugin.ini +++ b/plugin.ini @@ -1,6 +1,6 @@ [info] name="Walking Tour" -author="Alec Wang and Austin Mason" +author="Alec Wang, Austin Mason, Tingjun Tu, and Alejandro Gonzalez" description="A plugin to add walking tours for the Medieval Rome From Reason OCS at Carleton College" license="GPLv3" link="" diff --git a/views/public/javascripts/walking-tour.js b/views/public/javascripts/walking-tour.js index 4e6f34c..0ced3f9 100755 --- a/views/public/javascripts/walking-tour.js +++ b/views/public/javascripts/walking-tour.js @@ -329,7 +329,7 @@ function walkingTourJs() { locationMarker = L.marker(e.latlng, { icon: L.icon({ iconUrl: 'plugins/WalkingTour/views/public/images/location.png', - iconSize: [50, 50] + iconSize: [25, 25] }) }); locationMarker.addTo(map). From b948e5ebfa4d10132e9fb4011da039a567da40dd Mon Sep 17 00:00:00 2001 From: tutingjun Date: Fri, 23 Feb 2024 12:37:57 -0600 Subject: [PATCH 116/183] Update admin side styling --- WalkingTourPlugin.php | 24 +++++++++++++----------- plugin.ini | 12 ++++++------ 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/WalkingTourPlugin.php b/WalkingTourPlugin.php index dc9ccb7..37a0374 100644 --- a/WalkingTourPlugin.php +++ b/WalkingTourPlugin.php @@ -156,15 +156,17 @@ public function hookDefineRoutes($args) } public function filterAdminDashboardStats( $stats ) - { - if( is_allowed( 'WalkingTourBuilder_Tours', 'browse' ) ) - { - $stats[] = array( link_to( 'tours', array(), - total_records( 'Tours' ) ), - __('tours') ); - } - return $stats; - } + { + if( is_allowed( 'WalkingTourBuilder_Tours', 'browse' ) ) + { + if(version_compare(OMEKA_VERSION,'3.1') >= 0){ + $stats['tours'] = array(total_records( 'Tours' ), __('tours') ); + }else{ + $stats[] = array( link_to( 'tours', array(), total_records( 'Tours' ) ), __('tours') ); + } + } + return $stats; + } public function hookAdminDashboard() { @@ -190,11 +192,11 @@ public function hookAdminDashboard() } } - $html .= '
'; + $html .= '
'; $html .= '

'.__('Recent Tours').'

'; $html .= ''.$tourItems.''; $html .= '

'.__('Add a new tour').'

'; - $html .= '
'; + $html .= ''; echo $html; } diff --git a/plugin.ini b/plugin.ini index b4b96bb..1fc3cdd 100755 --- a/plugin.ini +++ b/plugin.ini @@ -1,12 +1,12 @@ [info] name="Walking Tour" author="Alec Wang, Austin Mason, Tingjun Tu, and Alejandro Gonzalez" -description="A plugin to add walking tours for the Medieval Rome From Reason OCS at Carleton College" +description="Adds the ability to create and display walking tours on a map" license="GPLv3" link="" -support_link="" -version="0.1-dev" -omeka_minimum_version="2.0" -omeka_target_version="2.6" -tags="" +support_link="https://github.com/DigitalCarleton/WalkingTour" +version="0.2" +omeka_minimum_version="3.0" +omeka_target_version="3.1.2" +tags="map, tour" required_plugins="Geolocation" From 485f8740fa198f8f92db5cde8bcde42917978226 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Fri, 23 Feb 2024 12:42:22 -0600 Subject: [PATCH 117/183] remove launch tooltip --- views/public/javascripts/walking-tour.js | 1 - 1 file changed, 1 deletion(-) diff --git a/views/public/javascripts/walking-tour.js b/views/public/javascripts/walking-tour.js index 0ced3f9..3f78e3f 100755 --- a/views/public/javascripts/walking-tour.js +++ b/views/public/javascripts/walking-tour.js @@ -318,7 +318,6 @@ function walkingTourJs() { map.on('locationfound', function (e) { // User within location bounds. Set the location marker. if (L.latLngBounds(LOCATE_BOUNDS).contains(e.latlng)) { - launchTooltip(); if (locationMarker) { // Remove the existing location marker before adding to map. map.removeLayer(locationMarker); From e508f2be9b1a66b1467658ae5034720c2a53278f Mon Sep 17 00:00:00 2001 From: tutingjun Date: Fri, 1 Mar 2024 12:23:44 -0600 Subject: [PATCH 118/183] update css --- views/public/css/walking-tour.css | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/views/public/css/walking-tour.css b/views/public/css/walking-tour.css index c1f13eb..0f58854 100755 --- a/views/public/css/walking-tour.css +++ b/views/public/css/walking-tour.css @@ -126,6 +126,17 @@ a.button{ border-radius: 3px; } +a { + text-decoration: none; + font-weight: bold; + } + a:link { + color: #3d5a80; + } + a:visited { + color: #426393; + } + #marker-count { } From 35c6dde12fae47dfa51e1a796e7026a27459adda Mon Sep 17 00:00:00 2001 From: Alejandro Gonzalez Date: Fri, 1 Mar 2024 18:27:57 +0000 Subject: [PATCH 119/183] update CSS --- views/public/css/walking-tour.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/public/css/walking-tour.css b/views/public/css/walking-tour.css index 0f58854..da56699 100755 --- a/views/public/css/walking-tour.css +++ b/views/public/css/walking-tour.css @@ -131,10 +131,10 @@ a { font-weight: bold; } a:link { - color: #3d5a80; + color: #3d5a80 !important; } a:visited { - color: #426393; + color: #426393 !important; } #marker-count { From 674173afa87cd30ed3a27d7773370e1eb76e0bbe Mon Sep 17 00:00:00 2001 From: Alejandro Gonzalez Date: Fri, 1 Mar 2024 18:32:10 +0000 Subject: [PATCH 120/183] updated map.FlyTo --- views/public/javascripts/walking-tour.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/public/javascripts/walking-tour.js b/views/public/javascripts/walking-tour.js index 3f78e3f..5ecdfc2 100755 --- a/views/public/javascripts/walking-tour.js +++ b/views/public/javascripts/walking-tour.js @@ -460,7 +460,7 @@ function walkingTourJs() { function populatePopup(itemIDList, value, response, numPopup) { var numPopup = itemIDList.findIndex((ele) => ele == response.id); var coor = value.Data.features[numPopup].geometry.coordinates; - map.flyTo([coor[1], coor[0]], 16); + map.flyTo([coor[1], coor[0]], MAP_MAX_ZOOM); $('.next-button').unbind("click"); $('.prev-button').unbind("click"); @@ -622,7 +622,7 @@ function walkingTourJs() { onEachFeature: function (feature, layer) { layer.on('click', function (e) { // center click location - map.flyTo(e.latlng, 16); + map.flyTo(e.latlng,MAP_MAX_ZOOM); // Close the filerting var filterButton = $('filter-button'); filterButton.removeClass('on'). From e5d1e7740c4346967c3cc776090158c912c7a69b Mon Sep 17 00:00:00 2001 From: tutingjun Date: Fri, 1 Mar 2024 12:38:06 -0600 Subject: [PATCH 121/183] update zoom css --- README.md | 2 ++ views/public/css/walking-tour.css | 14 ++++---------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ac782e4..384cb4d 100755 --- a/README.md +++ b/README.md @@ -58,3 +58,5 @@ One annoying issue we found is that there is some coupling between the MallMap t - [x] Make the tour `getItemAction` not require abstract --> abstract needs `Dublin core extended` - [x] Font resources - [x] use leaflet watch + +- [x] map zoom css \ No newline at end of file diff --git a/views/public/css/walking-tour.css b/views/public/css/walking-tour.css index da56699..97d7e10 100755 --- a/views/public/css/walking-tour.css +++ b/views/public/css/walking-tour.css @@ -126,16 +126,6 @@ a.button{ border-radius: 3px; } -a { - text-decoration: none; - font-weight: bold; - } - a:link { - color: #3d5a80 !important; - } - a:visited { - color: #426393 !important; - } #marker-count { } @@ -593,6 +583,10 @@ h2.credits{ border-radius: 0; } +.leaflet-control-zoom a:link { + color: #3d5a80; +} + .leaflet-container a.leaflet-popup-close-button { position: absolute; top: -6px !important; From 0975fca4ceefb5f1d895868a2493d91b4d326042 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Fri, 8 Mar 2024 12:14:57 -0600 Subject: [PATCH 122/183] Update css class --- views/public/css/walking-tour.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/views/public/css/walking-tour.css b/views/public/css/walking-tour.css index 97d7e10..e6652cf 100755 --- a/views/public/css/walking-tour.css +++ b/views/public/css/walking-tour.css @@ -27,7 +27,9 @@ a#locate-button:before, #filter-button:before, line-height: 1; -webkit-font-smoothing: antialiased; } - +a:visited { + color: black; +} html, body { height: 100%; } From a47b7d8567fcb59baeac4fc668bf18891845e175 Mon Sep 17 00:00:00 2001 From: Alejandro Gonzalez Date: Mon, 18 Mar 2024 19:14:33 +0000 Subject: [PATCH 123/183] Update CSS issue --- views/public/css/walking-tour.css | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/views/public/css/walking-tour.css b/views/public/css/walking-tour.css index e6652cf..31656f8 100755 --- a/views/public/css/walking-tour.css +++ b/views/public/css/walking-tour.css @@ -27,7 +27,7 @@ a#locate-button:before, #filter-button:before, line-height: 1; -webkit-font-smoothing: antialiased; } -a:visited { +a{ color: black; } html, body { @@ -589,6 +589,14 @@ h2.credits{ color: #3d5a80; } +.leaflet-control-zoom a{ + color: black !important; +} + +.leaflet-bar a.leaflet-disabled{ + color: #bbb !important; +} + .leaflet-container a.leaflet-popup-close-button { position: absolute; top: -6px !important; From 094ab104978cffa2cd8779a5f55ba6b04ae64da4 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Mon, 18 Mar 2024 14:28:10 -0500 Subject: [PATCH 124/183] Clean up config form --- WalkingTourPlugin.php | 2 -- config_form.php | 24 ------------------------ 2 files changed, 26 deletions(-) diff --git a/WalkingTourPlugin.php b/WalkingTourPlugin.php index 37a0374..acaf1a8 100644 --- a/WalkingTourPlugin.php +++ b/WalkingTourPlugin.php @@ -129,8 +129,6 @@ public function hookConfig() set_option('walking_tour_max_zoom', $_POST['walking_tour_max_zoom']); set_option('walking_tour_min_zoom', $_POST['walking_tour_min_zoom']); set_option('walking_tour_max_bounds', $_POST['walking_tour_max_bounds']); - set_option('walking_tour_locate_bounds', $_POST['walking_tour_locate_bounds']); - set_option('walking_tour_max_locate_meters', $_POST['walking_tour_max_locate_meters']); } public function hookDefineRoutes($args) diff --git a/config_form.php b/config_form.php index 51a102f..dd4a437 100755 --- a/config_form.php +++ b/config_form.php @@ -80,28 +80,4 @@ - - -
-
- -
-
-

-
- -
-
-
- -
-
- -
-
-

-
- -
-
\ No newline at end of file From bbc32556a8edc7e6d4da98563df2859e54f55b95 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Mon, 18 Mar 2024 14:28:41 -0500 Subject: [PATCH 125/183] remove locate bound and alert outside locate bound --- views/public/javascripts/walking-tour.js | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/views/public/javascripts/walking-tour.js b/views/public/javascripts/walking-tour.js index 5ecdfc2..045d05a 100755 --- a/views/public/javascripts/walking-tour.js +++ b/views/public/javascripts/walking-tour.js @@ -19,7 +19,6 @@ function walkingTourJs() { var MAP_MAX_ZOOM; var MAP_MAX_BOUNDS; // MAP_MAX_BOUNDS controls the boundaries of the map var LOCATE_BOUNDS; - var MAX_LOCATE_METERS; var map; var historicMapLayer; @@ -273,8 +272,7 @@ function walkingTourJs() { MAP_CENTER = parse1DArrayPoint(response['walking_tour_center']) MAP_ZOOM = parseInt(response["walking_tour_default_zoom"]) MAP_MAX_BOUNDS = parse2DArrayPoint(response["walking_tour_max_bounds"]) - LOCATE_BOUNDS = parse2DArrayPoint(response['walking_tour_locate_bounds']) - MAX_LOCATE_METERS = parseInt(response["walking_tour_max_locate_meters"]) + LOCATE_BOUNDS = MAP_MAX_BOUNDS // Set the base map layer. map = L.map('map', { center: MAP_CENTER, @@ -335,16 +333,10 @@ function walkingTourJs() { bindPopup("You are within " + e.accuracy / 2 + " meters from this point"); // User outside location bounds. } else { - map.stopLocate(); var locateMeters = e.latlng.distanceTo(map.options.center); - // Show out of bounds message only if within a certain distance. - if (MAX_LOCATE_METERS > locateMeters) { - var locateMiles = Math.ceil((locateMeters * 0.000621371) * 100) / 100; - // $('#dialog').text('You are ' + locateMiles + ' miles from the National Mall.'). - // dialog('option', 'title', 'Not Quite on the Mall'). - // dialog('open'); - } - + var locateMiles = Math.ceil((locateMeters * 0.000621371) * 100) / 100; + alert('Cannot locate your location. You are ' + locateMiles + ' miles from the map bounds.'); + map.stopLocate(); } }); @@ -564,7 +556,6 @@ function walkingTourJs() { } async function getOverallPath(points, key) { - console.log(points) var pointsParam = [] points.forEach(ele => { pointsParam.push([ele.lng, ele.lat]) @@ -589,7 +580,6 @@ function walkingTourJs() { var tourToItem = {} jqXhr = $.post('walking-tour/index/query', function (response) { markerData = response; - console.log(response) dataArray = Object.entries(markerData) for (const tour in markerData) { itemArray = itemArray.concat(markerData[tour]['Data']['features']) @@ -649,7 +639,6 @@ function walkingTourJs() { markerData[tourId].geoJson = geoJsonLayer; var walkingPath = []; var json_content = response.features; - console.log(json_content) var pointList = []; for (var i = 0; i < json_content.length; i++) { lat = json_content[i].geometry.coordinates[1]; @@ -657,7 +646,6 @@ function walkingTourJs() { var point = new L.LatLng(lat, lng); pointList[i] = point; } - console.log(pointList) getOverallPath(pointList, key).then((data) => { var path = data["features"][0]["geometry"]["coordinates"]; path = orderCoords(path); From e00ff29f776d569cd9e7cd63391bdaeb4da2764b Mon Sep 17 00:00:00 2001 From: tutingjun Date: Mon, 18 Mar 2024 14:29:12 -0500 Subject: [PATCH 126/183] Update readme --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 384cb4d..c6b3412 100755 --- a/README.md +++ b/README.md @@ -58,5 +58,9 @@ One annoying issue we found is that there is some coupling between the MallMap t - [x] Make the tour `getItemAction` not require abstract --> abstract needs `Dublin core extended` - [x] Font resources - [x] use leaflet watch +- [x] map zoom css -- [x] map zoom css \ No newline at end of file +- [x] clean up config form +- [x] remove locate bound, set it as map bound +- [x] Alert outside locate bound +- [] leaflet get bound method From 2f4b8e3b618d05cc14e2d53956516837ad8ee676 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Mon, 18 Mar 2024 16:54:27 -0500 Subject: [PATCH 127/183] Add exhibit option to the tour item --- helpers/TourFunctions.php | 10 +++++ models/Tour.php | 13 ++++-- models/TourItem.php | 4 ++ models/TourTable.php | 2 +- views/admin/css/tour-1.7.css | 9 +++- views/admin/tours/edit.php | 2 +- views/admin/tours/form.php | 87 +++++++++++++++++++++++------------- 7 files changed, 89 insertions(+), 38 deletions(-) diff --git a/helpers/TourFunctions.php b/helpers/TourFunctions.php index 724aa08..d51ef56 100644 --- a/helpers/TourFunctions.php +++ b/helpers/TourFunctions.php @@ -24,6 +24,16 @@ function availableLocationItemsJSON() { } } +function availableExhibit() { + $db = get_db(); + $prefix=$db->prefix; + $exhibitTable = $db->getTable( 'Exhibit' ); + if ($exhibitTable){ + $items = $exhibitTable->fetchObjects( "SELECT * FROM ".$prefix."exhibits ORDER BY id DESC" ); + return json_encode($items); + } +} + function has_tours() { return( total_tours() > 0 ); diff --git a/models/Tour.php b/models/Tour.php index f30a8ec..64e2ff3 100644 --- a/models/Tour.php +++ b/models/Tour.php @@ -45,7 +45,7 @@ public function removeAllItems( ) { } } - public function addItem( $item_id, $ordinal = null ) + public function addItem( $item_id, $exhibit_id = 0 , $ordinal = null ) { if( !is_numeric( $item_id ) ) { $item_id = $item_id->id; @@ -66,7 +66,7 @@ public function addItem( $item_id, $ordinal = null ) $tourItem->item_id = $item_id; $tourItem->ordinal = $ordinal; if (plugin_is_active('ExhibitBuilder')){ - $tourItem->exhibit_id = 0; + $tourItem->exhibit_id = $exhibit_id; } $tourItem->save(); } @@ -93,6 +93,7 @@ protected function beforeDelete(){ protected function afterSave($args) { + _log(json_encode($args)); $post=$args['post']; if($post && !$args['insert']){ $this->removeAllItems(); @@ -101,15 +102,21 @@ protected function afterSave($args) // Get item IDs from $_POST and save to tour items table $tour_item_ids=trim( $post['tour_item_ids'] ); $item_ids=explode( ',', $tour_item_ids ); + + $tour_item_exhibit_ids=trim( $post['tour_item_exhibit_ids'] ); + $item_exhibit_ids=explode( ',', $tour_item_exhibit_ids ); $i=0; + $index = 0; foreach($item_ids as $item_id){ $item_id=intval($item_id); + $exhibit_id = intval($item_exhibit_ids[$index]); if($item_id){ - $this->addItem( $item_id, $i); + $this->addItem( $item_id, $exhibit_id, $i); $i++; } + $index++; } // Add tour to search index diff --git a/models/TourItem.php b/models/TourItem.php index 2c85cc0..d7d4f62 100644 --- a/models/TourItem.php +++ b/models/TourItem.php @@ -47,5 +47,9 @@ protected function _validate() if( ! is_numeric( $this->ordinal ) ) { $this->addError( 'ordinal', 'Order must be numeric' ); } + + if( ! is_numeric( $this->exhibit_id ) ) { + $this->addError( 'exhibit_id', 'Exhibit must be numeric id' ); + } } } diff --git a/models/TourTable.php b/models/TourTable.php index 4f48c79..1f5de47 100644 --- a/models/TourTable.php +++ b/models/TourTable.php @@ -14,7 +14,7 @@ public function findItemsByTourId( $tour_id ) $select->where( 'ti.tour_id = ?', array( $tour_id ) ); $select->order( 'ti.ordinal ASC' ); - $items = $itemTable->fetchObjects( "SELECT i.*, ti.ordinal + $items = $itemTable->fetchObjects( "SELECT i.*, ti.ordinal, ti.exhibit_id FROM ".$prefix."items i LEFT JOIN ".$prefix."tour_items ti ON i.id = ti.item_id WHERE ti.tour_id = ? diff --git a/views/admin/css/tour-1.7.css b/views/admin/css/tour-1.7.css index e173999..6e3f25b 100644 --- a/views/admin/css/tour-1.7.css +++ b/views/admin/css/tour-1.7.css @@ -37,7 +37,7 @@ min-height: 600px; min-height: 90vh; } -#tour-item-search{ +#tour-item-search, #tour-item-exhibit-search{ padding: 10px; width: 100%; box-sizing: border-box; @@ -49,8 +49,13 @@ padding: 1em !important; box-sizing: border-box; } -.exhibit{ +.exhibit-input-container{ margin-left: 4rem; + border: 1px solid #D6D5C2; + box-sizing: border-box; +} +.exhibit{ + cursor: pointer; } .remove{ cursor: pointer; diff --git a/views/admin/tours/edit.php b/views/admin/tours/edit.php index daa857f..d08efa1 100644 --- a/views/admin/tours/edit.php +++ b/views/admin/tours/edit.php @@ -21,7 +21,7 @@ formSubmit( 'submit', __('Save Changes'), array( 'id' => 'save-changes', 'class' => 'submit big green button' ) ); ?> - id ) ); ?>" + id ) ); ?>" class="big blue button" target="_blank"> diff --git a/views/admin/tours/form.php b/views/admin/tours/form.php index 74adafd..b04a2ab 100644 --- a/views/admin/tours/form.php +++ b/views/admin/tours/form.php @@ -67,13 +67,14 @@

Tour Items

Search for items with geolocations by title to add to tour.

- +
    id){ @@ -81,9 +82,13 @@ foreach($tourItems as $ti){ $html = '
  • '; $html .= ''.$svg_icon.metadata($ti,array('Dublin Core','Title')).''; - // $html .= 'Link Exhibit  '; - $html .= '  Remove
  • '; - // $html .= '
    '; + if (plugin_is_active('ExhibitBuilder')){ + $html .= 'Link Exhibit  '; + $html .= '  Remove'; + $html .= '
    '; + } else { + $html .= '  Remove'; + } echo $html; } } ?> @@ -97,6 +102,7 @@ From 507acd7f8b879ef4eb2319b3ee16222670fe3c30 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Wed, 20 Mar 2024 12:53:36 -0500 Subject: [PATCH 130/183] clean up --- README.md | 13 ++++++++----- views/public/javascripts/walking-tour.js | 14 +++++--------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index c6b3412..255ebdf 100755 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ This section describes the process of getting the **original Omeka** version to If you clone the plugin directly into the `/plugins` folder in your Omeka project, you won't see any items on your map until you've properly configured a few things: -#### Simple Vocab +### Simple Vocab A number of Simple Vocab terms need to be configured in order for the map to render any items @@ -28,7 +28,7 @@ In addition to vocabularies for the above terms, you also need to add new item t Finally, we need Simple Vocab definitions for the new Event::Event Type and Place::Type terms. For both of these, add a Simple Vocab definition, and a list of event and place types. You can see these on the mallhistory.org site if you select the item type dropdown, and within the dropdown, select either event or place--this will render a new dropdown where the event and place types can be seen. -#### Item type IDs and Element IDs +### Item type IDs and Element IDs In `MallMap/controllers/IndexController.php`, there are a number of `const` definitions at the top of the file, which are in charge of linking to your database. These numbers may be different from server to server, depending on which plugins you've installed (among other things). @@ -36,13 +36,13 @@ In the original MallMap version, these are customized for the MallMap server, so Note that some of the Dublin Core types are likely to be standard across many people's sites--for us, we only needed to edit the `ITEM_TYPE_ID_PLACE` , `ELEMENT_ID_MAP_COVERAGE`, and `ELEMENT_ID_PLACE_TYPE` (because these are the new parameters added for this plugin). -#### Geolocation +### Geolocation If you want an item to render to the map, you need to GeoLocate it. Go to an Item Edit page, and select the Map tab to add a Geolocation to an item. **Note:** Items must be public in order to render to the map. -#### Filter theming issues +### Filter theming issues One annoying issue we found is that there is some coupling between the MallMap theme and the MallMap plugin. One such issue causes the button which opens the dropdown to be the exact shade of white as the background theme, making it seem like something's gone wrong. In reality, it rendered correctly for us, but it was invisible! It's slightly above the map window, on the right side of the div. Hover your mouse around until it becomes a pointer--we promise, it's there! @@ -63,4 +63,7 @@ One annoying issue we found is that there is some coupling between the MallMap t - [x] clean up config form - [x] remove locate bound, set it as map bound - [x] Alert outside locate bound -- [] leaflet get bound method +- [ ] leaflet get bound method +- [ ] reformat walking tour js + +- [ ] Representation for no exhibit for tour item diff --git a/views/public/javascripts/walking-tour.js b/views/public/javascripts/walking-tour.js index 963fb35..ee54854 100755 --- a/views/public/javascripts/walking-tour.js +++ b/views/public/javascripts/walking-tour.js @@ -3,8 +3,6 @@ $(document).ready(function () { }); function walkingTourJs() { - // $.getScript("https://unpkg.com/leaflet.markercluster@1.4.1/dist/leaflet.markercluster.js"); - // imported.src = "/cgmrdev/plugins/WalkingTour/views/public/javascripts/new_markercluster_src.js"; var imported = document.createElement("script"); document.head.appendChild(imported); // Set map height to be window height minus header height. @@ -400,10 +398,11 @@ function walkingTourJs() { var css = "" for (const tour_id in markerData) { var color = markerData[tour_id]['Color'] - // TODO Temp solution + if (color.length == 0){ color = "#000000" } + var rgb = hexToRgb(color) css += `#filters div label.label${tour_id}:before { background-color: ${color} !important; @@ -491,8 +490,6 @@ function walkingTourJs() { var content = $('#info-panel-content'); content.empty(); - console.log(response) - var infoContent = "" var leftContent = ""; var rightContent = ""; @@ -526,7 +523,7 @@ function walkingTourJs() { if (response.thumbnail) { popupContent += '' + response.thumbnail + '
    '; } - popupContent += 'view more info'; + popupContent += 'View More Info'; if (!layer.getPopup()) { marker.bindPopup(popupContent, { maxWidth: 200, offset: L.point(0, -40) }).openPopup(); allMarkers[response.id] = marker; @@ -607,7 +604,6 @@ function walkingTourJs() { var geoJsonLayer = L.geoJson(response.features, { // adds the correct number to each marker based on order of tour pointToLayer: function (feature, latlng) { - myCustomColour = feature.properties["marker-color"]; var numberIcon = L.divIcon({ className: "my-custom-pin", iconSize: [25, 41], @@ -622,7 +618,7 @@ function walkingTourJs() { layer.on('click', function (e) { // center click location map.flyTo(e.latlng,MAP_MAX_ZOOM); - // Close the filerting + // Close the filtering var filterButton = $('filter-button'); filterButton.removeClass('on'). find('.screen-reader-text'). @@ -726,7 +722,7 @@ function walkingTourJs() { markers = new L.layerGroup(); } catch (err) { - + console.log(err) } markerLayers.forEach(ele => { From 6b9f94f9fc53e68e88e397b28467f54b57a0e4ce Mon Sep 17 00:00:00 2001 From: tutingjun Date: Thu, 21 Mar 2024 16:37:39 -0500 Subject: [PATCH 131/183] clean up walking tour js --- README.md | 4 +- views/public/javascripts/walking-tour.js | 564 +++++++++++++---------- 2 files changed, 324 insertions(+), 244 deletions(-) diff --git a/README.md b/README.md index 255ebdf..d7ac4cb 100755 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ One annoying issue we found is that there is some coupling between the MallMap t - [x] clean up config form - [x] remove locate bound, set it as map bound - [x] Alert outside locate bound -- [ ] leaflet get bound method -- [ ] reformat walking tour js +- [x] leaflet get bound method +- [x] reformat walking tour js - [ ] Representation for no exhibit for tour item diff --git a/views/public/javascripts/walking-tour.js b/views/public/javascripts/walking-tour.js index ee54854..b688de7 100755 --- a/views/public/javascripts/walking-tour.js +++ b/views/public/javascripts/walking-tour.js @@ -27,6 +27,12 @@ function walkingTourJs() { var allItems = {}; var allMarkers = {}; + + + /* + * JQuery Setup + */ + // Check for user's first time visiting. Wait to locate the user after displaying tooltip on the first visit. if (!($.cookie('myCookie'))) { $('#first-time').show(); @@ -43,16 +49,6 @@ function walkingTourJs() { $('#first-time').hide(); }); - window.onload = function () { - jqXhr = $.post('walking-tour/index/map-config', function (response) { - mapSetUp(response); - doQuery(); - }) - }; - - // Retain previous form state, if needed. - retainFormState(); - // Set up the dialog window. $('#dialog').dialog({ autoOpen: false, @@ -239,33 +235,25 @@ function walkingTourJs() { $('#info-panel-container').fadeToggle(200, 'linear'); }); - function parse1DArrayPoint(text) { - ptn = text.split(",") - ptn.forEach(function (ele, index) { - temp_ele = ele.replace(/\s+/g, ''); - temp_ele = temp_ele.replace('[', ''); - temp_ele = temp_ele.replace(']', ''); - this[index] = parseFloat(temp_ele) - }, ptn); - return ptn; - } + /* + * Query backend + */ - function parse2DArrayPoint(text) { - ptn = text.match(/(\[-?[0-9]*.[0-9]*, -?[0-9]*.[0-9]*\])/g) - b_new = [] - ptn.forEach(ele => { - temp_ele = ele.split(",") - temp_ele.forEach(function (ele_inner, index_inner) { - temp_ele_inner = ele_inner.replace(/\s+/g, ''); - temp_ele_inner = temp_ele_inner.replace('[', ''); - temp_ele_inner = temp_ele_inner.replace(']', ''); - this[index_inner] = parseFloat(temp_ele_inner) - }, temp_ele) - b_new.push(temp_ele) + window.onload = function () { + jqXhr = $.post('walking-tour/index/map-config', function (response) { + mapSetUp(response); + doQuery(); }) - return b_new - } + }; + // Retain previous form state, if needed. + retainFormState(); + + /* + * Setup map layer + * + * Call only once during set up + */ function mapSetUp(response) { MAP_MAX_ZOOM = parseInt(response['walking_tour_max_zoom']) MAP_MIN_ZOOM = parseInt(response['walking_tour_min_zoom']) @@ -347,202 +335,11 @@ function walkingTourJs() { }); } - function populateTourIntroPopup(itemIDList, value, tour_id) { - $('.next-button').unbind("click"); - $('.prev-button').unbind("click"); - - $('.prev-button').addClass('off'); - $('.next-button').addClass('off'); - - document.getElementById("info-panel-name").innerHTML = value["Tour Name"]; - $('.panel-title').css("backgroundColor", value['Color']) - var content = $('#info-panel-content'); - content.empty(); - - var infoContent = "" - var rightContent = ""; - // click title to show the popup on map - if (value.Description != "") { - rightContent += '

    ' + value.Description + '

    ' - } else { - rightContent += "

    No descriptions available.

    " - } - - if (value.Credits != "") { - rightContent += "

    Credits

    " - rightContent += '

    ' + value.Credits + '

    ' - } - rightContent += '

    Start Tour

    '; - window.setTimeout(function () { - $('#start-tour').click(function (e) { - var newId = itemIDList[0] - popupButtonEvent(e, newId, itemIDList, value, tour_id); - }) - }, 500) - infoContent += '
    ' + rightContent + '
    '; - - content.append('
    ' + infoContent + '
    ') - } - - function hexToRgb(hex) { - var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - return result ? { - r: parseInt(result[1], 16), - g: parseInt(result[2], 16), - b: parseInt(result[3], 16) - } : null; - } - - function createCustomCSS() { - var style = document.createElement('style') - var css = "" - for (const tour_id in markerData) { - var color = markerData[tour_id]['Color'] - - if (color.length == 0){ - color = "#000000" - } - - var rgb = hexToRgb(color) - css += `#filters div label.label${tour_id}:before { - background-color: ${color} !important; - } - #filters div label.label${tour_id} { - background-color: rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.15) !important; - color: ${color} !important; - } - #filters div label.label${tour_id}.on:before { - background-color: rgba(33, 201, 0, 1) !important; - }\n` - } - style.innerHTML = css; - document.body.appendChild(style); - } - /* - * Get the popup content for each item - */ - - function getMarkerHTML(color) { - let markerHtmlStyles = ` - background-color: ${color}; - width: 1.7rem; - height: 1.7rem; - display: block; - left: -0.5rem; - top: -0.5rem; - position: relative; - border-radius: 1.5rem 1.5rem 0; - transform: rotate(45deg);` - return markerHtmlStyles; - } - - function popupButtonEvent(e, id, itemIDList, value, tour_id) { - e.preventDefault(); - var response = allItems[id] - if (response == undefined) { - $.post('walking-tour/index/get-item', { id: id, tour: tour_id }, function (response) { - allItems[id] = response; - populatePopup(itemIDList, value, response, itemIDList.findIndex((ele) => ele == response.id), tour_id); - }) - } else { - populatePopup(itemIDList, value, response, itemIDList.findIndex((ele) => ele == response.id), tour_id) - } - } - - function populatePopup(itemIDList, value, response, numPopup, tour_id) { - var numPopup = itemIDList.findIndex((ele) => ele == response.id); - var coor = value.Data.features[numPopup].geometry.coordinates; - map.flyTo([coor[1], coor[0]], MAP_MAX_ZOOM); - - $('.next-button').unbind("click"); - $('.prev-button').unbind("click"); - - if (numPopup + 1 == itemIDList.length) { - $('.next-button').addClass('off'); - } else { - $('.next-button').removeClass('off'); - $('.next-button').unbind("click"); - window.setTimeout(function () { - $('.next-button').click(function (e) { - var newId = itemIDList[numPopup + 1] - // value.allMarker[numPopup].closePopup(); - popupButtonEvent(e, newId, itemIDList, value, tour_id); - }) - }, 500) - } - - if (numPopup - 1 == -1 || numPopup == -1) { - $('.prev-button').addClass('off'); - } else { - $('.prev-button').removeClass('off'); - window.setTimeout(function () { - $('.prev-button').click(function (e) { - var newId = itemIDList[numPopup - 1] - // value.allMarker[numPopup].closePopup(); - popupButtonEvent(e, newId, itemIDList, value, tour_id); - }) - }, 500) - } - - document.getElementById("info-panel-name").innerHTML = value["Tour Name"] + ` #${numPopup + 1}`; - $('.panel-title').css("backgroundColor", value['Color']) - var content = $('#info-panel-content'); - content.empty(); - - var infoContent = "" - var leftContent = ""; - var rightContent = ""; - if (response.fullsize) { - leftContent += response.fullsize; - infoContent += '
    ' + leftContent + '
    '; - } - - // click title to show the popup on map - rightContent += `

    ` + response.title + '

    ' - if (response.abstract) { - rightContent += '

    ' + response.abstract + '

    '; - } else if (response.description) { - rightContent += '

    ' + response.description + '

    '; - } else { - rightContent += '

    No descriptions available.

    '; - } - rightContent += '
    ' - rightContent += 'Full Details'; - if (response.exhibitUrl != ""){ - rightContent += 'Linked Exhibit'; - } - rightContent += '
    ' - infoContent += '
    ' + rightContent + '
    '; - - content.append('
    ' + infoContent + '
    ') - } - - function featureOnclickAction(response, layer, marker, itemIDList, value, tourId) { - var popupContent = '

    ' + response.title + '

    '; - if (response.thumbnail) { - popupContent += '' + response.thumbnail + '
    '; - } - popupContent += 'View More Info'; - if (!layer.getPopup()) { - marker.bindPopup(popupContent, { maxWidth: 200, offset: L.point(0, -40) }).openPopup(); - allMarkers[response.id] = marker; - } - - window.setTimeout(function () { - layer.getPopup().update() - $('.open-info-panel').click(function (e) { - e.preventDefault(); - $('#info-panel-container').fadeToggle(200, 'linear'); - $('#toggle-map-button + .back-button').show(); - marker.closePopup(); - }); - }, 500); - - // Populate the item info panel. - populatePopup(itemIDList, value, response, itemIDList.findIndex((ele) => ele == response.id), tourId); - } - + * Query backend for tour info + * + * Call only once during set up + */ function doQuery() { const markerFontHtmlStyles = ` transform: rotate(-45deg); @@ -626,10 +423,10 @@ function walkingTourJs() { $('#filters').fadeOut(200, 'linear'); var marker = this; - response = allItems[feature.properties.id] + response = allItems[`${tourId}:${feature.properties.id}`] if (response == undefined) { $.post('walking-tour/index/get-item', { id: feature.properties.id, tour: tourId }, function (response) { - allItems[feature.properties.id] = response; + allItems[`${tourId}:${feature.properties.id}`] = response; featureOnclickAction(response, layer, marker, itemIDList, value, tourId); }) } else { @@ -735,18 +532,210 @@ function walkingTourJs() { } /* - * Add the historic map layer. + * Setup color for each tour + * */ - function addHistoricMapLayer() { - // Get the historic map data - var getData = { 'text': $('#map-coverage').val() }; - $.get('walking-tour/index/historic-map-data', getData, function (response) { - historicMapLayer = L.tileLayer( - response.url, - { tms: true, opacity: 1.00 } - ); - map.addLayer(historicMapLayer); - $('#toggle-map-button').show(); + function createCustomCSS() { + var style = document.createElement('style') + var css = "" + for (const tour_id in markerData) { + var color = markerData[tour_id]['Color'] + + if (color.length == 0){ + color = "#000000" + } + + var rgb = hexToRgb(color) + css += `#filters div label.label${tour_id}:before { + background-color: ${color} !important; + } + #filters div label.label${tour_id} { + background-color: rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.15) !important; + color: ${color} !important; + } + #filters div label.label${tour_id}.on:before { + background-color: rgba(33, 201, 0, 1) !important; + }\n` + } + style.innerHTML = css; + document.body.appendChild(style); + } + + /* + * Setup popups for each item and tour + */ + + function featureOnclickAction(response, layer, marker, itemIDList, value, tourId) { + var popupContent = '

    ' + response.title + '

    '; + if (response.thumbnail) { + popupContent += '' + response.thumbnail + '
    '; + } + popupContent += 'View More Info'; + if (!layer.getPopup()) { + marker.bindPopup(popupContent, { maxWidth: 200, offset: L.point(0, -40) }).openPopup(); + allMarkers[response.id] = marker; + } + + window.setTimeout(function () { + layer.getPopup().update() + $('.open-info-panel').click(function (e) { + e.preventDefault(); + $('#info-panel-container').fadeToggle(200, 'linear'); + $('#toggle-map-button + .back-button').show(); + marker.closePopup(); + }); + }, 500); + + // Populate the item info panel. + populatePopup(itemIDList, value, response, itemIDList.findIndex((ele) => ele == response.id), tourId); + } + + function populateTourIntroPopup(itemIDList, value, tour_id) { + $('.next-button').unbind("click"); + $('.prev-button').unbind("click"); + + $('.prev-button').addClass('off'); + $('.next-button').addClass('off'); + + document.getElementById("info-panel-name").innerHTML = value["Tour Name"]; + $('.panel-title').css("backgroundColor", value['Color']) + var content = $('#info-panel-content'); + content.empty(); + + var infoContent = "" + var rightContent = ""; + // click title to show the popup on map + if (value.Description != "") { + rightContent += '

    ' + value.Description + '

    ' + } else { + rightContent += "

    No descriptions available.

    " + } + + if (value.Credits != "") { + rightContent += "

    Credits

    " + rightContent += '

    ' + value.Credits + '

    ' + } + rightContent += '

    Start Tour

    '; + window.setTimeout(function () { + $('#start-tour').click(function (e) { + var newId = itemIDList[0] + popupButtonEvent(e, newId, itemIDList, value, tour_id); + }) + }, 500) + infoContent += '
    ' + rightContent + '
    '; + + content.append('
    ' + infoContent + '
    ') + } + + function populatePopup(itemIDList, value, response, numPopup, tour_id) { + var numPopup = itemIDList.findIndex((ele) => ele == response.id); + var coor = value.Data.features[numPopup].geometry.coordinates; + map.flyTo([coor[1], coor[0]], MAP_MAX_ZOOM); + + $('.next-button').unbind("click"); + $('.prev-button').unbind("click"); + + if (numPopup + 1 == itemIDList.length) { + $('.next-button').addClass('off'); + } else { + $('.next-button').removeClass('off'); + $('.next-button').unbind("click"); + window.setTimeout(function () { + $('.next-button').click(function (e) { + var newId = itemIDList[numPopup + 1] + // value.allMarker[numPopup].closePopup(); + popupButtonEvent(e, newId, itemIDList, value, tour_id); + }) + }, 500) + } + + if (numPopup - 1 == -1 || numPopup == -1) { + $('.prev-button').addClass('off'); + } else { + $('.prev-button').removeClass('off'); + window.setTimeout(function () { + $('.prev-button').click(function (e) { + var newId = itemIDList[numPopup - 1] + // value.allMarker[numPopup].closePopup(); + popupButtonEvent(e, newId, itemIDList, value, tour_id); + }) + }, 500) + } + + document.getElementById("info-panel-name").innerHTML = value["Tour Name"] + ` #${numPopup + 1}`; + $('.panel-title').css("backgroundColor", value['Color']) + var content = $('#info-panel-content'); + content.empty(); + + var infoContent = "" + var leftContent = ""; + var rightContent = ""; + if (response.fullsize) { + leftContent += response.fullsize; + infoContent += '
    ' + leftContent + '
    '; + } + + // click title to show the popup on map + rightContent += `

    ` + response.title + '

    ' + if (response.abstract) { + rightContent += '

    ' + response.abstract + '

    '; + } else if (response.description) { + rightContent += '

    ' + response.description + '

    '; + } else { + rightContent += '

    No descriptions available.

    '; + } + rightContent += '
    ' + rightContent += 'Full Details'; + if (response.exhibitUrl != ""){ + rightContent += 'Linked Exhibit'; + } + rightContent += '
    ' + infoContent += '
    ' + rightContent + '
    '; + + content.append('
    ' + infoContent + '
    ') + } + + function getMarkerHTML(color) { + let markerHtmlStyles = ` + background-color: ${color}; + width: 1.7rem; + height: 1.7rem; + display: block; + left: -0.5rem; + top: -0.5rem; + position: relative; + border-radius: 1.5rem 1.5rem 0; + transform: rotate(45deg);` + return markerHtmlStyles; + } + + function popupButtonEvent(e, id, itemIDList, value, tour_id) { + e.preventDefault(); + var response = allItems[`${tour_id}:${id}`] + if (response == undefined) { + $.post('walking-tour/index/get-item', { id: id, tour: tour_id }, function (response) { + allItems[`${tour_id}:${id}`] = response; + populatePopup(itemIDList, value, response, itemIDList.findIndex((ele) => ele == response.id), tour_id); + }) + } else { + populatePopup(itemIDList, value, response, itemIDList.findIndex((ele) => ele == response.id), tour_id) + } + } + + + /* + * Add the historic map layer. + */ + function addHistoricMapLayer() { + // Get the historic map data + var getData = { 'text': $('#map-coverage').val() }; + $.get('walking-tour/index/historic-map-data', getData, function (response) { + historicMapLayer = L.tileLayer( + response.url, + { tms: true, opacity: 1.00 } + ); + map.addLayer(historicMapLayer); + $('#toggle-map-button').show(); // Set the map title as the map attribution prefix. map.attributionControl.setPrefix(response.title); @@ -762,6 +751,97 @@ function walkingTourJs() { map.attributionControl.setPrefix(''); } + /* + * Helper Functions + */ + + function hexToRgb(hex) { + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result ? { + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) + } : null; + } + + function parse1DArrayPoint(text) { + ptn = text.split(",") + ptn.forEach(function (ele, index) { + temp_ele = ele.replace(/\s+/g, ''); + temp_ele = temp_ele.replace('[', ''); + temp_ele = temp_ele.replace(']', ''); + this[index] = parseFloat(temp_ele) + }, ptn); + return ptn; + } + + function parse2DArrayPoint(text) { + ptn = text.match(/(\[-?[0-9]*.[0-9]*, -?[0-9]*.[0-9]*\])/g) + b_new = [] + ptn.forEach(ele => { + temp_ele = ele.split(",") + temp_ele.forEach(function (ele_inner, index_inner) { + temp_ele_inner = ele_inner.replace(/\s+/g, ''); + temp_ele_inner = temp_ele_inner.replace('[', ''); + temp_ele_inner = temp_ele_inner.replace(']', ''); + this[index_inner] = parseFloat(temp_ele_inner) + }, temp_ele) + b_new.push(temp_ele) + }) + return b_new + } + + /* + * Revert to default (original) form state. + */ + function revertFormState() { + if (historicMapLayer) { + removeHistoricMapLayer(); + } + + $('#map-coverage').val('0'); + $('#tour-type').val('0'); + + $('#place-type-div').hide({ duration: 'fast' }); + $('input[name=place-type-all]').prop('checked', true). + parent().addClass('on'); + $('input[name=place-type]:checked').prop('checked', false). + parent().removeClass('on'); + + $('#event-type-div').hide({ duration: 'fast' }); + $('input[name=event-type-all]').prop('checked', true). + parent().addClass('on'); + $('input[name=event-type]:checked').prop('checked', false). + parent().removeClass('on'); + + doFilters(); + } + + /* + * Retain previous form state. + * + * Acts on the assumption that all browsers will preserve the form state + * when navigating back to the map from another page. + */ + function retainFormState() { + if ('Place' == $('#tour-type').find(':selected').text()) { + var placeTypes = $('input[name=place-type]:checked'); + if (placeTypes.length) { + $('input[name=place-type-all]').parent().removeClass('on'); + placeTypes.parent().addClass('on'); + } + $('#place-type-div').show({ duration: 'fast' }); + } + if ('Event' == $('#tour-type').find(':selected').text()) { + var eventTypes = $('input[name=event-type]:checked'); + if (eventTypes.length) { + $('input[name=event-type-all]').parent().removeClass('on'); + eventTypes.parent().addClass('on'); + } + $('#event-type-div').show({ duration: 'fast' }); + } + } + /* * Revert to default (original) form state. */ From 261201a7f0627bad322c5af1d436cba2db2ad07a Mon Sep 17 00:00:00 2001 From: tutingjun Date: Thu, 21 Mar 2024 16:55:04 -0500 Subject: [PATCH 132/183] fix width for link exhibit btn --- views/admin/css/tour-1.7.css | 3 +++ views/admin/tours/form.php | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/views/admin/css/tour-1.7.css b/views/admin/css/tour-1.7.css index 62b537e..a07ba09 100644 --- a/views/admin/css/tour-1.7.css +++ b/views/admin/css/tour-1.7.css @@ -56,9 +56,12 @@ } .exhibit{ cursor: pointer; + margin: 0 1em; + flex: 0 0 80px; } .remove{ cursor: pointer; + flex: 0 0; } .tour-item-ui{ display: flex; diff --git a/views/admin/tours/form.php b/views/admin/tours/form.php index c7b5508..bfa14ee 100644 --- a/views/admin/tours/form.php +++ b/views/admin/tours/form.php @@ -99,8 +99,8 @@ '

    Linked Exhibit: '.$exhibitName.'

    '. ''. ''; - $html .= 'Link Exhibit  '; - $html .= '  Remove'; + $html .= 'Link Exhibit'; + $html .= 'Remove'; $html .= '
    '; } else { @@ -109,7 +109,7 @@ '. $svg_icon.metadata($ti,array('Dublin Core','Title')). ''. - '  Remove + 'Remove '; } @@ -219,7 +219,7 @@ function addItem( label, id ) {

    Linked Exhibit: None

    \ \ - Link Exhibit  \ + Link Exhibit\ Remove\ \
    \ From 8f8f90c52dd90af4ce474fd5ea74d33ac69d42e6 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Thu, 21 Mar 2024 17:33:53 -0500 Subject: [PATCH 133/183] Add clear exhibit option --- views/admin/tours/form.php | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/views/admin/tours/form.php b/views/admin/tours/form.php index bfa14ee..2c1f037 100644 --- a/views/admin/tours/form.php +++ b/views/admin/tours/form.php @@ -99,7 +99,8 @@ '

    Linked Exhibit: '.$exhibitName.'

    '. '
    '. ''; - $html .= 'Link Exhibit'; + $exhibitAction = ($exhibitName == "None") ? "Link Exhibit" : "Clear Exhibit"; + $html .= ''.$exhibitAction.''; $html .= 'Remove'; $html .= '
    '; } else { @@ -168,10 +169,8 @@ function _itemsInTour(){ } jQuery('#sortable').on('click', ".remove", function(){ - jQuery(this).parent().fadeOut(400,function(){ + jQuery(this).parent().parent().fadeOut(400,function(){ jQuery(this).remove(); - var id = jQuery(this).attr('data-id') - jQuery(`#${id}.exhibit-input-container`).remove(); // update list on remove jQuery(document).trigger('tourItemsUpdated'); }); @@ -179,9 +178,13 @@ function _itemsInTour(){ jQuery("#sortable").on('click', ".exhibit", function(){ var id = jQuery(this).attr('id') - jQuery(`#${id}.exhibit-input-container`).fadeToggle(200, 'linear', function(){ - jQuery(document).trigger('tourItemsUpdated'); - }); + var data_id = jQuery(this).attr('data-id') + if (data_id == 0){ + jQuery(`#${id}.exhibit-input-container`).fadeToggle(200, 'linear'); + }else { + clearExhibit(id); + } + jQuery(document).trigger('tourItemsUpdated'); }) @@ -233,7 +236,7 @@ function addItem( label, id ) { ` } - jQuery( '
  • ' ).html( html ).prependTo( "#sortable" ); + jQuery( `
  • ` ).html( html ).prependTo( "#sortable" ); jQuery('.exhibit-input-container').hide(); jQuery( "#sortable" ).scrollTop( 0 ); // update list on add @@ -247,10 +250,17 @@ function addExhibit( itemId, exhibitId, exhibitLabel ) { alert('Exhibit "' +exhibitLabel+ '" has already been added to this item.'); } else { jQuery(`#sortable #${itemId}.exhibit`).attr('data-id', exhibitId); - console.log(jQuery(`#sortable #item${itemId}-exhibit-name`).text(`Linked Exhibit: ${exhibitLabel}`)); + jQuery(`#sortable #item${itemId}-exhibit-name`).text(`Linked Exhibit: ${exhibitLabel}`) + jQuery(`#sortable #${itemId}.exhibit`).text("Clear Exhibit") } } + function clearExhibit( itemId ) { + jQuery(`#sortable #${itemId}.exhibit`).attr('data-id', 0); + jQuery(`#sortable #item${itemId}-exhibit-name`).text(`Linked Exhibit: None`) + jQuery(`#sortable #${itemId}.exhibit`).text("Link Exhibit") + } + jQuery( "#tour-item-search" ).autocomplete({ minLength: 2, source: allItems, @@ -276,7 +286,6 @@ function exhibitAutoComplete() { select: function( event, ui ) { var itemId = parseInt(jQuery(this).attr('data-id')); addExhibit(itemId, ui.item.id, ui.item.label); - console.log(parseInt(jQuery(`#sortable #${itemId}.exhibit`).attr('data-id'))) jQuery('.exhibit-input-container').hide(); // clear the form jQuery( "#tour-item-exhibit-search" ).val(''); From b655732fd07585dc68adcb5c393ba5d9fd0ab9a6 Mon Sep 17 00:00:00 2001 From: tutingjun Date: Thu, 21 Mar 2024 17:45:19 -0500 Subject: [PATCH 134/183] fix tour item remove logic --- views/admin/tours/form.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/views/admin/tours/form.php b/views/admin/tours/form.php index 2c1f037..8f00fb4 100644 --- a/views/admin/tours/form.php +++ b/views/admin/tours/form.php @@ -80,7 +80,7 @@ id){ $tourItems = $tour->getItems(); foreach($tourItems as $ti){ - $html = '
  • '; + $html = '
  • '; if (plugin_is_active('ExhibitBuilder')){ $exhibit = get_records('Exhibit', array('id' => $ti->exhibit_id)); @@ -101,7 +101,7 @@ ''; $exhibitAction = ($exhibitName == "None") ? "Link Exhibit" : "Clear Exhibit"; $html .= ''.$exhibitAction.''; - $html .= 'Remove'; + $html .= 'Remove'; $html .= '
  • '; } else { @@ -110,7 +110,7 @@ '. $svg_icon.metadata($ti,array('Dublin Core','Title')). ''. - 'Remove + 'Remove '; } @@ -169,7 +169,8 @@ function _itemsInTour(){ } jQuery('#sortable').on('click', ".remove", function(){ - jQuery(this).parent().parent().fadeOut(400,function(){ + var id = jQuery(this).attr('id') + jQuery(`li#${id}`).fadeOut(400,function(){ jQuery(this).remove(); // update list on remove jQuery(document).trigger('tourItemsUpdated'); @@ -223,7 +224,7 @@ function addItem( label, id ) { \ Link Exhibit\ - Remove\ + Remove\ \
    \ \ @@ -232,7 +233,7 @@ function addItem( label, id ) { var html = `
    \ ${svg_icon}${label}\ - Remove\ + Remove\
    ` } From 4a0219828ea045e72eeef16a322249902a96631c Mon Sep 17 00:00:00 2001 From: tutingjun Date: Tue, 9 Apr 2024 12:22:14 -0500 Subject: [PATCH 135/183] update database schema for no linked exhibits --- README.md | 4 +- WalkingTourPlugin.php | 4 +- controllers/IndexController.php | 3 +- models/TourItem.php | 2 +- plugin.ini | 2 +- views/admin/tours/form.php | 6 +- .../javascripts/leaflet/images/layers-2x.png | Bin 0 -> 1259 bytes .../javascripts/leaflet/images/layers.png | Bin 0 -> 696 bytes .../leaflet/images/marker-icon-2x.png | Bin 0 -> 2464 bytes .../leaflet/images/marker-icon.png | Bin 0 -> 1466 bytes .../leaflet/images/marker-shadow.png | Bin 0 -> 618 bytes .../javascripts/leaflet/leaflet-providers.js | 1011 ++ .../javascripts/leaflet/leaflet-src.esm.js | 13986 +++++++++++++++ .../leaflet/leaflet-src.esm.js.map | 1 + .../public/javascripts/leaflet/leaflet-src.js | 14080 ++++++++++++++++ .../javascripts/leaflet/leaflet-src.js.map | 1 + views/public/javascripts/leaflet/leaflet.css | 640 + views/public/javascripts/leaflet/leaflet.js | 5 + .../public/javascripts/leaflet/leaflet.js.map | 1 + views/public/javascripts/walking-tour.js | 4 + 20 files changed, 29741 insertions(+), 9 deletions(-) create mode 100644 views/public/javascripts/leaflet/images/layers-2x.png create mode 100644 views/public/javascripts/leaflet/images/layers.png create mode 100644 views/public/javascripts/leaflet/images/marker-icon-2x.png create mode 100644 views/public/javascripts/leaflet/images/marker-icon.png create mode 100644 views/public/javascripts/leaflet/images/marker-shadow.png create mode 100644 views/public/javascripts/leaflet/leaflet-providers.js create mode 100644 views/public/javascripts/leaflet/leaflet-src.esm.js create mode 100644 views/public/javascripts/leaflet/leaflet-src.esm.js.map create mode 100644 views/public/javascripts/leaflet/leaflet-src.js create mode 100644 views/public/javascripts/leaflet/leaflet-src.js.map create mode 100644 views/public/javascripts/leaflet/leaflet.css create mode 100644 views/public/javascripts/leaflet/leaflet.js create mode 100644 views/public/javascripts/leaflet/leaflet.js.map diff --git a/README.md b/README.md index d7ac4cb..0186a33 100755 --- a/README.md +++ b/README.md @@ -66,4 +66,6 @@ One annoying issue we found is that there is some coupling between the MallMap t - [x] leaflet get bound method - [x] reformat walking tour js -- [ ] Representation for no exhibit for tour item +- [x] Representation for no exhibit for tour item +- [ ] Padding on the dropdown menu +- [ ] Historical Map diff --git a/WalkingTourPlugin.php b/WalkingTourPlugin.php index acaf1a8..9fde27b 100644 --- a/WalkingTourPlugin.php +++ b/WalkingTourPlugin.php @@ -67,7 +67,7 @@ public function hookInstall() `tour_id` INT( 10 ) UNSIGNED NOT NULL, `ordinal` INT NOT NULL, `item_id` INT( 10 ) UNSIGNED NOT NULL, - `exhibit_id` INT( 10 ) UNSIGNED NOT NULL, + `exhibit_id` INT NOT NULL, PRIMARY KEY( `id` ), KEY `tour` ( `tour_id` ) ) ENGINE=InnoDB "; @@ -88,7 +88,7 @@ public function hookUninstall() public function hookUpgrade( $args ) { if (version_compare($args['old_version'], '0.1-dev', "<")){ - $sql = "ALTER TABLE `{$db->prefix}tour_items` ADD COLUMN `exhibit_id` INT( 10 ) UNSIGNED NOT NULL AFTER `item_id`"; + $sql = "ALTER TABLE `{$db->prefix}tour_items` MODIFY COLUMN `exhibit_id` INT NOT NULL;"; $this->_db->query($sql); } } diff --git a/controllers/IndexController.php b/controllers/IndexController.php index bc39925..31ae393 100755 --- a/controllers/IndexController.php +++ b/controllers/IndexController.php @@ -54,9 +54,10 @@ public function indexAction() ->appendFile('//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js') ->appendFile('//ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js') ->appendFile(src('jquery.cookie', 'javascripts', 'js')) - // ->appendFile('//cdn.leafletjs.com/leaflet-0.7/leaflet.js') + ->appendFile(src('/leaflet/leaflet', 'javascripts', 'js')) ->appendFile(src('modernizr.custom.63332', 'javascripts', 'js')) ->appendFile(src('Polyline.encoded', 'javascripts', 'js')) + ->appendFile('//cdn.jsdelivr.net/npm/@allmaps/leaflet/dist/bundled/allmaps-leaflet-1.9.umd.js') ->appendFile(src('walking-tour', 'javascripts', 'js')); $this->view->headLink() ->appendStylesheet('//code.jquery.com/ui/1.10.2/themes/smoothness/jquery-ui.css', 'all') diff --git a/models/TourItem.php b/models/TourItem.php index d7d4f62..0553116 100644 --- a/models/TourItem.php +++ b/models/TourItem.php @@ -9,7 +9,7 @@ class TourItem extends Omeka_Record_AbstractRecord public $tour_id; public $item_id; public $ordinal = 0; - public $exhibit_id = 0; + public $exhibit_id = -1; protected $_related = array( 'Tour' => 'getTour', diff --git a/plugin.ini b/plugin.ini index 1fc3cdd..19cb7c3 100755 --- a/plugin.ini +++ b/plugin.ini @@ -5,7 +5,7 @@ description="Adds the ability to create and display walking tours on a map" license="GPLv3" link="" support_link="https://github.com/DigitalCarleton/WalkingTour" -version="0.2" +version="0.2.3" omeka_minimum_version="3.0" omeka_target_version="3.1.2" tags="map, tour" diff --git a/views/admin/tours/form.php b/views/admin/tours/form.php index 8f00fb4..1e35ea4 100644 --- a/views/admin/tours/form.php +++ b/views/admin/tours/form.php @@ -180,7 +180,7 @@ function _itemsInTour(){ jQuery("#sortable").on('click', ".exhibit", function(){ var id = jQuery(this).attr('id') var data_id = jQuery(this).attr('data-id') - if (data_id == 0){ + if (data_id == -1){ jQuery(`#${id}.exhibit-input-container`).fadeToggle(200, 'linear'); }else { clearExhibit(id); @@ -223,7 +223,7 @@ function addItem( label, id ) {

    Linked Exhibit: None

    \
    \ - Link Exhibit\ + Link Exhibit\ Remove\ \
    \ @@ -257,7 +257,7 @@ function addExhibit( itemId, exhibitId, exhibitLabel ) { } function clearExhibit( itemId ) { - jQuery(`#sortable #${itemId}.exhibit`).attr('data-id', 0); + jQuery(`#sortable #${itemId}.exhibit`).attr('data-id', -1); jQuery(`#sortable #item${itemId}-exhibit-name`).text(`Linked Exhibit: None`) jQuery(`#sortable #${itemId}.exhibit`).text("Link Exhibit") } diff --git a/views/public/javascripts/leaflet/images/layers-2x.png b/views/public/javascripts/leaflet/images/layers-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..200c333dca9652ac4cba004d609e5af4eee168c1 GIT binary patch literal 1259 zcmVFhCYNy;#0irRPomHqW|G1C*;4?@4#E?jH>?v@U%cy?3dQAc-DchXVErpOh~ z-jbon+tNbnl6hoEb;)TVk+%hTDDi_G%i3*RZ&15!$Fjr^f;Ke&A@|?=`2&+{zr+3a z{D*=t(`AXyS%X7N z%a#RZw6vD^t_rnM`L4E>m=U&R!A-&}nZIi$BOPvkhrCuUe@BN~-lRD)f44;J%TwgE zcze8u!PQ_NR7?o(NylLXVTfDO zxs5=@|GsYEsNo4M#nT%N!UE(?dnS)t2+{ELYAFp*3=iF=|EQnTp`#vlSXuGVraYo? z+RCzXo6h3qA8{KG?S4nE(lM+;Eb4nT3XV;7gcAxUi5m)`k5tv}cPy()8ZR3TLW3I- zAS^}cq-IJvL7a4RgR!yk@~RT%$lA7{L5ES*hyx)M4(yxI$Ub(4f)K|^v1>zvwQY!_ zIrWw8q9GS^!Dp~}+?mbnB6jDF8mVlbQ!jFKDY;w=7;XO{9bq7>LXGK24WA`;rL)_Z z)&j}pbV(;6gY;VMhbxgvn`X;6x}VUEE-7 z%)7j-%t8S=ZL3yc)HbXDAqJZvBTPoiW_A-+a8m3_Z?v{DN7Tnr#O_VUMT0UBt$;p` zDh6JbGHN8JJ*JN%y2%msb97@_S>9!%Egwk;?PEkU9ntz&3uR}%Fj5d$JHQbQb3}a{ zSzFT^#n=VInPpcAS}CNxj?_ zVscANk5Cfz(51EI1pz};AWWb|kgbYNb4wCEGUn3+eMUMV?1-{=I4TlmLJMot@rd07 zZuo2hk1ccu{YmGkcYdWAVdk{Z4Nm?^cTD&}jGm+Q1SYIXMwmG*oO*83&#>l%nbR`G zhh=lZ%xIb7kU3#;TBbfECrnC9P=-XpL|TG2BoZdj61*XiFbW8?1Z_wp%#;>${SUIy V$8qr;L*)Pf002ovPDHLkV1hYLS~36t literal 0 HcmV?d00001 diff --git a/views/public/javascripts/leaflet/images/layers.png b/views/public/javascripts/leaflet/images/layers.png new file mode 100644 index 0000000000000000000000000000000000000000..1a72e5784b2b456eac5d7670738db80697af3377 GIT binary patch literal 696 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 e-I|>x8~*?ZhF3snGbtJX0000cOl4 literal 0 HcmV?d00001 diff --git a/views/public/javascripts/leaflet/images/marker-icon.png b/views/public/javascripts/leaflet/images/marker-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..950edf24677ded147df13b26f91baa2b0fa70513 GIT binary patch literal 1466 zcmV;r1x5OaP)P001cn1^@s6z>|W`000GnNklGNuHDcIX17Zdjl&3`L?0sTjIws<{((Dh&g-s0<@jYQyl?D*X^?%13;ml^gy> ziMrY_^1WI=(g@LMizu=zCoA>C`6|QEq1eV92k*7m>G65*&@&6)aC&e}G zI)pf-Za|N`DT&Cn1J|o`19mumxW~hiKiKyc-P`S@q)rdTo84@QI@;0yXrG%9uhI>A zG5QHb6s4=<6xy{1 z@NMxEkryp{LS44%z$3lP^cX!9+2-;CTt3wM4(k*#C{aiIiLuB>jJj;KPhPzIC00bL zU3a#;aJld94lCW=`4&aAy8M7PY=HQ>O%$YEP4c4UY#CRxfgbE~(|uiI=YS8q;O9y6 zmIkXzR`}p7ti|PrM3a}WMnR=3NVnWdAAR>b9X@)DKL6=YsvmH%?I24wdq?Gh54_;# z$?_LvgjEdspdQlft#4CQ z`2Zyvy?*)N1Ftw|{_hakhG9WjS?Az@I@+IZ8JbWewR!XUK4&6346+d#~gsE0SY(LX8&JfY>Aj)RxGy96nwhs2rv zzW6pTnMpFkDSkT*a*6Dx|u@ds6ISVn0@^RmIsKZ5Y;bazbc;tTSq(kg(=481ODrPyNB6n z-$+U}(w$m6U6H$w17Bw+wDaFIe~GvNMYvnw31MpY0eQKT9l>SU``8k7w4)z!GZKMI z#_cEKq7k~i%nlK@6c-K?+R;B#5$?T#YpKD`t_4bAs^#E+@5QW$@OX3*`;(#{U^d-vY)&xEE>n5lYl&T?Amke9$Lam@{1K@O ze*LXqlKQHiv=gx+V^Cbb2?z@ISBQ*3amF;9UJ3SBg(N|710TLamQmYZ&Qjn2LuO<* zCZlB4n%@pc&7NNnY1}x+NWpHlq`OJEo|`aYN9<`RBUB+79g;>dgb6YlfN#kGL?lO_ z!6~M^7sOnbsUkKk<@Ysie&`G>ruxH&Mgy&8;i=A zB9OO!xR{AyODw>DS-q5YM{0ExFEAzt zm>RdS+ssW(-8|?xr0(?$vBVB*%(xDLtq3Hf0I5yFm<_g=W2`QWAax{1rWVH=I!VrP zs(rTFX@W#t$hXNvbgX`gK&^w_YD;CQ!B@e0QbLIWaKAXQe2-kkloo;{iF#6}z!4=W zi$giRj1{ zt;2w`VSCF#WE&*ev7jpsC=6175@(~nTE2;7M-L((0bH@yG}-TB$R~WXd?tA$s3|%y zA`9$sA(>F%J3ioz<-LJl*^o1|w84l>HBR`>3l9c8$5Xr@xCiIQ7{x$fMCzOk_-M=% z+{a_Q#;42`#KfUte@$NT77uaTz?b-fBe)1s5XE$yA79fm?KqM^VgLXD07*qoM6N<$ Ef<_J(9smFU literal 0 HcmV?d00001 diff --git a/views/public/javascripts/leaflet/leaflet-providers.js b/views/public/javascripts/leaflet/leaflet-providers.js new file mode 100644 index 0000000..abb0c40 --- /dev/null +++ b/views/public/javascripts/leaflet/leaflet-providers.js @@ -0,0 +1,1011 @@ +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['leaflet'], factory); + } else if (typeof modules === 'object' && module.exports) { + // define a Common JS module that relies on 'leaflet' + module.exports = factory(require('leaflet')); + } else { + // Assume Leaflet is loaded into global object L already + factory(L); + } +}(this, function (L) { + 'use strict'; + + L.TileLayer.Provider = L.TileLayer.extend({ + initialize: function (arg, options) { + var providers = L.TileLayer.Provider.providers; + + var parts = arg.split('.'); + + var providerName = parts[0]; + var variantName = parts[1]; + + if (!providers[providerName]) { + throw 'No such provider (' + providerName + ')'; + } + + var provider = { + url: providers[providerName].url, + options: providers[providerName].options + }; + + // overwrite values in provider from variant. + if (variantName && 'variants' in providers[providerName]) { + if (!(variantName in providers[providerName].variants)) { + throw 'No such variant of ' + providerName + ' (' + variantName + ')'; + } + var variant = providers[providerName].variants[variantName]; + var variantOptions; + if (typeof variant === 'string') { + variantOptions = { + variant: variant + }; + } else { + variantOptions = variant.options; + } + provider = { + url: variant.url || provider.url, + options: L.Util.extend({}, provider.options, variantOptions) + }; + } + + // replace attribution placeholders with their values from toplevel provider attribution, + // recursively + var attributionReplacer = function (attr) { + if (attr.indexOf('{attribution.') === -1) { + return attr; + } + return attr.replace(/\{attribution.(\w*)\}/g, + function (match, attributionName) { + return attributionReplacer(providers[attributionName].options.attribution); + } + ); + }; + provider.options.attribution = attributionReplacer(provider.options.attribution); + + // Compute final options combining provider options with any user overrides + var layerOpts = L.Util.extend({}, provider.options, options); + L.TileLayer.prototype.initialize.call(this, provider.url, layerOpts); + } + }); + + /** + * Definition of providers. + * see http://leafletjs.com/reference.html#tilelayer for options in the options map. + */ + + L.TileLayer.Provider.providers = { + OpenStreetMap: { + url: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + attribution: + '© OpenStreetMap contributors' + }, + variants: { + Mapnik: {}, + DE: { + url: 'https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png', + options: { + maxZoom: 18 + } + }, + CH: { + url: 'https://tile.osm.ch/switzerland/{z}/{x}/{y}.png', + options: { + maxZoom: 18, + bounds: [[45, 5], [48, 11]] + } + }, + France: { + url: 'https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', + options: { + maxZoom: 20, + attribution: '© Openstreetmap France | {attribution.OpenStreetMap}' + } + }, + HOT: { + url: 'https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', + options: { + attribution: + '{attribution.OpenStreetMap}, ' + + 'Tiles style by Humanitarian OpenStreetMap Team ' + + 'hosted by OpenStreetMap France' + } + }, + BZH: { + url: 'https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png', + options: { + attribution: '{attribution.OpenStreetMap}, Tiles courtesy of Breton OpenStreetMap Team', + bounds: [[46.2, -5.5], [50, 0.7]] + } + } + } + }, + OpenSeaMap: { + url: 'https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png', + options: { + attribution: 'Map data: © OpenSeaMap contributors' + } + }, + OpenPtMap: { + url: 'http://openptmap.org/tiles/{z}/{x}/{y}.png', + options: { + maxZoom: 17, + attribution: 'Map data: © OpenPtMap contributors' + } + }, + OpenTopoMap: { + url: 'https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png', + options: { + maxZoom: 17, + attribution: 'Map data: {attribution.OpenStreetMap}, SRTM | Map style: © OpenTopoMap (CC-BY-SA)' + } + }, + OpenRailwayMap: { + url: 'https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © OpenRailwayMap (CC-BY-SA)' + } + }, + OpenFireMap: { + url: 'http://openfiremap.org/hytiles/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © OpenFireMap (CC-BY-SA)' + } + }, + SafeCast: { + url: 'https://s3.amazonaws.com/te512.safecast.org/{z}/{x}/{y}.png', + options: { + maxZoom: 16, + attribution: 'Map data: {attribution.OpenStreetMap} | Map style: © SafeCast (CC-BY-SA)' + } + }, + Stadia: { + url: 'https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png', + options: { + maxZoom: 20, + attribution: '© Stadia Maps, © OpenMapTiles © OpenStreetMap contributors' + }, + variants: { + AlidadeSmooth: { + url: 'https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png' + }, + AlidadeSmoothDark: { + url: 'https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/{z}/{x}/{y}{r}.png' + }, + OSMBright: { + url: 'https://tiles.stadiamaps.com/tiles/osm_bright/{z}/{x}/{y}{r}.png' + }, + Outdoors: { + url: 'https://tiles.stadiamaps.com/tiles/outdoors/{z}/{x}/{y}{r}.png' + } + } + }, + Thunderforest: { + url: 'https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}', + options: { + attribution: + '© Thunderforest, {attribution.OpenStreetMap}', + variant: 'cycle', + apikey: '', + maxZoom: 22 + }, + variants: { + OpenCycleMap: 'cycle', + Transport: { + options: { + variant: 'transport' + } + }, + TransportDark: { + options: { + variant: 'transport-dark' + } + }, + SpinalMap: { + options: { + variant: 'spinal-map' + } + }, + Landscape: 'landscape', + Outdoors: 'outdoors', + Pioneer: 'pioneer', + MobileAtlas: 'mobile-atlas', + Neighbourhood: 'neighbourhood' + } + }, + CyclOSM: { + url: 'https://dev.{s}.tile.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png', + options: { + maxZoom: 20, + attribution: 'CyclOSM | Map data: {attribution.OpenStreetMap}' + } + }, + Hydda: { + url: 'https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png', + options: { + maxZoom: 20, + variant: 'full', + attribution: 'Tiles courtesy of OpenStreetMap Sweden — Map data {attribution.OpenStreetMap}' + }, + variants: { + Full: 'full', + Base: 'base', + RoadsAndLabels: 'roads_and_labels' + } + }, + Jawg: { + url: 'https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}', + options: { + attribution: + '© JawgMaps ' + + '{attribution.OpenStreetMap}', + minZoom: 0, + maxZoom: 22, + subdomains: 'abcd', + variant: 'jawg-terrain', + // Get your own Jawg access token here : https://www.jawg.io/lab/ + // NB : this is a demonstration key that comes with no guarantee + accessToken: '', + }, + variants: { + Streets: 'jawg-streets', + Terrain: 'jawg-terrain', + Sunny: 'jawg-sunny', + Dark: 'jawg-dark', + Light: 'jawg-light', + Matrix: 'jawg-matrix' + } + }, + MapBox: { + url: 'https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}{r}?access_token={accessToken}', + options: { + attribution: + '© Mapbox ' + + '{attribution.OpenStreetMap} ' + + 'Improve this map', + tileSize: 512, + maxZoom: 18, + zoomOffset: -1, + id: 'mapbox/streets-v11', + accessToken: '', + } + }, + MapTiler: { + url: 'https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}', + options: { + attribution: + '© MapTiler © OpenStreetMap contributors', + variant: 'streets', + ext: 'png', + key: '', + tileSize: 512, + zoomOffset: -1, + minZoom: 0, + maxZoom: 21 + }, + variants: { + Streets: 'streets', + Basic: 'basic', + Bright: 'bright', + Pastel: 'pastel', + Positron: 'positron', + Hybrid: { + options: { + variant: 'hybrid', + ext: 'jpg' + } + }, + Toner: 'toner', + Topo: 'topo', + Voyager: 'voyager' + } + }, + Stamen: { + url: 'https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}', + options: { + attribution: + 'Map tiles by Stamen Design, ' + + 'CC BY 3.0 — ' + + 'Map data {attribution.OpenStreetMap}', + subdomains: 'abcd', + minZoom: 0, + maxZoom: 20, + variant: 'toner', + ext: 'png' + }, + variants: { + Toner: 'toner', + TonerBackground: 'toner-background', + TonerHybrid: 'toner-hybrid', + TonerLines: 'toner-lines', + TonerLabels: 'toner-labels', + TonerLite: 'toner-lite', + Watercolor: { + url: 'https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', + options: { + variant: 'watercolor', + ext: 'jpg', + minZoom: 1, + maxZoom: 16 + } + }, + Terrain: { + options: { + variant: 'terrain', + minZoom: 0, + maxZoom: 18 + } + }, + TerrainBackground: { + options: { + variant: 'terrain-background', + minZoom: 0, + maxZoom: 18 + } + }, + TerrainLabels: { + options: { + variant: 'terrain-labels', + minZoom: 0, + maxZoom: 18 + } + }, + TopOSMRelief: { + url: 'https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}', + options: { + variant: 'toposm-color-relief', + ext: 'jpg', + bounds: [[22, -132], [51, -56]] + } + }, + TopOSMFeatures: { + options: { + variant: 'toposm-features', + bounds: [[22, -132], [51, -56]], + opacity: 0.9 + } + } + } + }, + TomTom: { + url: 'https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}', + options: { + variant: 'basic', + maxZoom: 22, + attribution: + '© 1992 - ' + new Date().getFullYear() + ' TomTom. ', + subdomains: 'abcd', + style: 'main', + ext: 'png', + apikey: '', + }, + variants: { + Basic: 'basic', + Hybrid: 'hybrid', + Labels: 'labels' + } + }, + Esri: { + url: 'https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}', + options: { + variant: 'World_Street_Map', + attribution: 'Tiles © Esri' + }, + variants: { + WorldStreetMap: { + options: { + attribution: + '{attribution.Esri} — ' + + 'Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012' + } + }, + DeLorme: { + options: { + variant: 'Specialty/DeLorme_World_Base_Map', + minZoom: 1, + maxZoom: 11, + attribution: '{attribution.Esri} — Copyright: ©2012 DeLorme' + } + }, + WorldTopoMap: { + options: { + variant: 'World_Topo_Map', + attribution: + '{attribution.Esri} — ' + + 'Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community' + } + }, + WorldImagery: { + options: { + variant: 'World_Imagery', + attribution: + '{attribution.Esri} — ' + + 'Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community' + } + }, + WorldTerrain: { + options: { + variant: 'World_Terrain_Base', + maxZoom: 13, + attribution: + '{attribution.Esri} — ' + + 'Source: USGS, Esri, TANA, DeLorme, and NPS' + } + }, + WorldShadedRelief: { + options: { + variant: 'World_Shaded_Relief', + maxZoom: 13, + attribution: '{attribution.Esri} — Source: Esri' + } + }, + WorldPhysical: { + options: { + variant: 'World_Physical_Map', + maxZoom: 8, + attribution: '{attribution.Esri} — Source: US National Park Service' + } + }, + OceanBasemap: { + options: { + variant: 'Ocean_Basemap', + maxZoom: 13, + attribution: '{attribution.Esri} — Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri' + } + }, + NatGeoWorldMap: { + options: { + variant: 'NatGeo_World_Map', + maxZoom: 16, + attribution: '{attribution.Esri} — National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC' + } + }, + WorldGrayCanvas: { + options: { + variant: 'Canvas/World_Light_Gray_Base', + maxZoom: 16, + attribution: '{attribution.Esri} — Esri, DeLorme, NAVTEQ' + } + } + } + }, + OpenWeatherMap: { + url: 'http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}', + options: { + maxZoom: 19, + attribution: 'Map data © OpenWeatherMap', + apiKey:'', + opacity: 0.5 + }, + variants: { + Clouds: 'clouds', + CloudsClassic: 'clouds_cls', + Precipitation: 'precipitation', + PrecipitationClassic: 'precipitation_cls', + Rain: 'rain', + RainClassic: 'rain_cls', + Pressure: 'pressure', + PressureContour: 'pressure_cntr', + Wind: 'wind', + Temperature: 'temp', + Snow: 'snow' + } + }, + HERE: { + /* + * HERE maps, formerly Nokia maps. + * These basemaps are free, but you need an api id and app key. Please sign up at + * https://developer.here.com/plans + */ + url: + 'https://{s}.{base}.maps.api.here.com/maptile/2.1/' + + '{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?' + + 'app_id={app_id}&app_code={app_code}&lg={language}', + options: { + attribution: + 'Map © 1987-' + new Date().getFullYear() + ' HERE', + subdomains: '1234', + mapID: 'newest', + 'app_id': '', + 'app_code': '', + base: 'base', + variant: 'normal.day', + maxZoom: 20, + type: 'maptile', + language: 'eng', + format: 'png8', + size: '256' + }, + variants: { + normalDay: 'normal.day', + normalDayCustom: 'normal.day.custom', + normalDayGrey: 'normal.day.grey', + normalDayMobile: 'normal.day.mobile', + normalDayGreyMobile: 'normal.day.grey.mobile', + normalDayTransit: 'normal.day.transit', + normalDayTransitMobile: 'normal.day.transit.mobile', + normalDayTraffic: { + options: { + variant: 'normal.traffic.day', + base: 'traffic', + type: 'traffictile' + } + }, + normalNight: 'normal.night', + normalNightMobile: 'normal.night.mobile', + normalNightGrey: 'normal.night.grey', + normalNightGreyMobile: 'normal.night.grey.mobile', + normalNightTransit: 'normal.night.transit', + normalNightTransitMobile: 'normal.night.transit.mobile', + reducedDay: 'reduced.day', + reducedNight: 'reduced.night', + basicMap: { + options: { + type: 'basetile' + } + }, + mapLabels: { + options: { + type: 'labeltile', + format: 'png' + } + }, + trafficFlow: { + options: { + base: 'traffic', + type: 'flowtile' + } + }, + carnavDayGrey: 'carnav.day.grey', + hybridDay: { + options: { + base: 'aerial', + variant: 'hybrid.day' + } + }, + hybridDayMobile: { + options: { + base: 'aerial', + variant: 'hybrid.day.mobile' + } + }, + hybridDayTransit: { + options: { + base: 'aerial', + variant: 'hybrid.day.transit' + } + }, + hybridDayGrey: { + options: { + base: 'aerial', + variant: 'hybrid.grey.day' + } + }, + hybridDayTraffic: { + options: { + variant: 'hybrid.traffic.day', + base: 'traffic', + type: 'traffictile' + } + }, + pedestrianDay: 'pedestrian.day', + pedestrianNight: 'pedestrian.night', + satelliteDay: { + options: { + base: 'aerial', + variant: 'satellite.day' + } + }, + terrainDay: { + options: { + base: 'aerial', + variant: 'terrain.day' + } + }, + terrainDayMobile: { + options: { + base: 'aerial', + variant: 'terrain.day.mobile' + } + } + } + }, + HEREv3: { + /* + * HERE maps API Version 3. + * These basemaps are free, but you need an API key. Please sign up at + * https://developer.here.com/plans + * Version 3 deprecates the app_id and app_code access in favor of apiKey + * + * Supported access methods as of 2019/12/21: + * @see https://developer.here.com/faqs#access-control-1--how-do-you-control-access-to-here-location-services + */ + url: + 'https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/' + + '{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?' + + 'apiKey={apiKey}&lg={language}', + options: { + attribution: + 'Map © 1987-' + new Date().getFullYear() + ' HERE', + subdomains: '1234', + mapID: 'newest', + apiKey: '', + base: 'base', + variant: 'normal.day', + maxZoom: 20, + type: 'maptile', + language: 'eng', + format: 'png8', + size: '256' + }, + variants: { + normalDay: 'normal.day', + normalDayCustom: 'normal.day.custom', + normalDayGrey: 'normal.day.grey', + normalDayMobile: 'normal.day.mobile', + normalDayGreyMobile: 'normal.day.grey.mobile', + normalDayTransit: 'normal.day.transit', + normalDayTransitMobile: 'normal.day.transit.mobile', + normalNight: 'normal.night', + normalNightMobile: 'normal.night.mobile', + normalNightGrey: 'normal.night.grey', + normalNightGreyMobile: 'normal.night.grey.mobile', + normalNightTransit: 'normal.night.transit', + normalNightTransitMobile: 'normal.night.transit.mobile', + reducedDay: 'reduced.day', + reducedNight: 'reduced.night', + basicMap: { + options: { + type: 'basetile' + } + }, + mapLabels: { + options: { + type: 'labeltile', + format: 'png' + } + }, + trafficFlow: { + options: { + base: 'traffic', + type: 'flowtile' + } + }, + carnavDayGrey: 'carnav.day.grey', + hybridDay: { + options: { + base: 'aerial', + variant: 'hybrid.day' + } + }, + hybridDayMobile: { + options: { + base: 'aerial', + variant: 'hybrid.day.mobile' + } + }, + hybridDayTransit: { + options: { + base: 'aerial', + variant: 'hybrid.day.transit' + } + }, + hybridDayGrey: { + options: { + base: 'aerial', + variant: 'hybrid.grey.day' + } + }, + pedestrianDay: 'pedestrian.day', + pedestrianNight: 'pedestrian.night', + satelliteDay: { + options: { + base: 'aerial', + variant: 'satellite.day' + } + }, + terrainDay: { + options: { + base: 'aerial', + variant: 'terrain.day' + } + }, + terrainDayMobile: { + options: { + base: 'aerial', + variant: 'terrain.day.mobile' + } + } + } + }, + FreeMapSK: { + url: 'http://t{s}.freemap.sk/T/{z}/{x}/{y}.jpeg', + options: { + minZoom: 8, + maxZoom: 16, + subdomains: '1234', + bounds: [[47.204642, 15.996093], [49.830896, 22.576904]], + attribution: + '{attribution.OpenStreetMap}, vizualization CC-By-SA 2.0 Freemap.sk' + } + }, + MtbMap: { + url: 'http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png', + options: { + attribution: + '{attribution.OpenStreetMap} & USGS' + } + }, + CartoDB: { + url: 'https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png', + options: { + attribution: '{attribution.OpenStreetMap} © CARTO', + subdomains: 'abcd', + maxZoom: 19, + variant: 'light_all' + }, + variants: { + Positron: 'light_all', + PositronNoLabels: 'light_nolabels', + PositronOnlyLabels: 'light_only_labels', + DarkMatter: 'dark_all', + DarkMatterNoLabels: 'dark_nolabels', + DarkMatterOnlyLabels: 'dark_only_labels', + Voyager: 'rastertiles/voyager', + VoyagerNoLabels: 'rastertiles/voyager_nolabels', + VoyagerOnlyLabels: 'rastertiles/voyager_only_labels', + VoyagerLabelsUnder: 'rastertiles/voyager_labels_under' + } + }, + HikeBike: { + url: 'https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png', + options: { + maxZoom: 19, + attribution: '{attribution.OpenStreetMap}', + variant: 'hikebike' + }, + variants: { + HikeBike: {}, + HillShading: { + options: { + maxZoom: 15, + variant: 'hillshading' + } + } + } + }, + BasemapAT: { + url: 'https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}', + options: { + maxZoom: 19, + attribution: 'Datenquelle: basemap.at', + subdomains: ['', '1', '2', '3', '4'], + type: 'normal', + format: 'png', + bounds: [[46.358770, 8.782379], [49.037872, 17.189532]], + variant: 'geolandbasemap' + }, + variants: { + basemap: { + options: { + maxZoom: 20, // currently only in Vienna + variant: 'geolandbasemap' + } + }, + grau: 'bmapgrau', + overlay: 'bmapoverlay', + terrain: { + options: { + variant: 'bmapgelaende', + type: 'grau', + format: 'jpeg' + } + }, + surface: { + options: { + variant: 'bmapoberflaeche', + type: 'grau', + format: 'jpeg' + } + }, + highdpi: { + options: { + variant: 'bmaphidpi', + format: 'jpeg' + } + }, + orthofoto: { + options: { + maxZoom: 20, // currently only in Vienna + variant: 'bmaporthofoto30cm', + format: 'jpeg' + } + } + } + }, + nlmaps: { + url: 'https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png', + options: { + minZoom: 6, + maxZoom: 19, + bounds: [[50.5, 3.25], [54, 7.6]], + attribution: 'Kaartgegevens © Kadaster' + }, + variants: { + 'standaard': 'brtachtergrondkaart', + 'pastel': 'brtachtergrondkaartpastel', + 'grijs': 'brtachtergrondkaartgrijs', + 'luchtfoto': { + 'url': 'https://geodata.nationaalgeoregister.nl/luchtfoto/rgb/wmts/2018_ortho25/EPSG:3857/{z}/{x}/{y}.png', + } + } + }, + NASAGIBS: { + url: 'https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{maxZoom}/{z}/{y}/{x}.{format}', + options: { + attribution: + 'Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System ' + + '(ESDIS) with funding provided by NASA/HQ.', + bounds: [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], + minZoom: 1, + maxZoom: 9, + format: 'jpg', + time: '', + tilematrixset: 'GoogleMapsCompatible_Level' + }, + variants: { + ModisTerraTrueColorCR: 'MODIS_Terra_CorrectedReflectance_TrueColor', + ModisTerraBands367CR: 'MODIS_Terra_CorrectedReflectance_Bands367', + ViirsEarthAtNight2012: { + options: { + variant: 'VIIRS_CityLights_2012', + maxZoom: 8 + } + }, + ModisTerraLSTDay: { + options: { + variant: 'MODIS_Terra_Land_Surface_Temp_Day', + format: 'png', + maxZoom: 7, + opacity: 0.75 + } + }, + ModisTerraSnowCover: { + options: { + variant: 'MODIS_Terra_Snow_Cover', + format: 'png', + maxZoom: 8, + opacity: 0.75 + } + }, + ModisTerraAOD: { + options: { + variant: 'MODIS_Terra_Aerosol', + format: 'png', + maxZoom: 6, + opacity: 0.75 + } + }, + ModisTerraChlorophyll: { + options: { + variant: 'MODIS_Terra_Chlorophyll_A', + format: 'png', + maxZoom: 7, + opacity: 0.75 + } + } + } + }, + NLS: { + // NLS maps are copyright National library of Scotland. + // http://maps.nls.uk/projects/api/index.html + // Please contact NLS for anything other than non-commercial low volume usage + // + // Map sources: Ordnance Survey 1:1m to 1:63K, 1920s-1940s + // z0-9 - 1:1m + // z10-11 - quarter inch (1:253440) + // z12-18 - one inch (1:63360) + url: 'https://nls-{s}.tileserver.com/nls/{z}/{x}/{y}.jpg', + options: { + attribution: 'National Library of Scotland Historic Maps', + bounds: [[49.6, -12], [61.7, 3]], + minZoom: 1, + maxZoom: 18, + subdomains: '0123', + } + }, + JusticeMap: { + // Justice Map (http://www.justicemap.org/) + // Visualize race and income data for your community, county and country. + // Includes tools for data journalists, bloggers and community activists. + url: 'http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png', + options: { + attribution: 'Justice Map', + // one of 'county', 'tract', 'block' + size: 'county', + // Bounds for USA, including Alaska and Hawaii + bounds: [[14, -180], [72, -56]] + }, + variants: { + income: 'income', + americanIndian: 'indian', + asian: 'asian', + black: 'black', + hispanic: 'hispanic', + multi: 'multi', + nonWhite: 'nonwhite', + white: 'white', + plurality: 'plural' + } + }, + Wikimedia: { + url: 'https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}{r}.png', + options: { + attribution: 'Wikimedia', + minZoom: 1, + maxZoom: 19 + } + }, + GeoportailFrance: { + url: 'https://wxs.ign.fr/{apikey}/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}', + options: { + attribution: 'Geoportail France', + bounds: [[-75, -180], [81, 180]], + minZoom: 2, + maxZoom: 18, + // Get your own geoportail apikey here : http://professionnels.ign.fr/ign/contrats/ + // NB : 'choisirgeoportail' is a demonstration key that comes with no guarantee + apikey: 'choisirgeoportail', + format: 'image/jpeg', + style : 'normal', + variant: 'GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.STANDARD' + }, + variants: { + parcels: { + options : { + variant: 'CADASTRALPARCELS.PARCELS', + maxZoom: 20, + style : 'bdparcellaire', + format: 'image/png' + } + }, + ignMaps: 'GEOGRAPHICALGRIDSYSTEMS.MAPS', + maps: 'GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.STANDARD', + orthos: { + options: { + maxZoom: 19, + variant: 'ORTHOIMAGERY.ORTHOPHOTOS' + } + } + } + }, + OneMapSG: { + url: 'https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png', + options: { + variant: 'Default', + minZoom: 11, + maxZoom: 18, + bounds: [[1.56073, 104.11475], [1.16, 103.502]], + attribution: ' New OneMap | Map data © contributors, Singapore Land Authority' + }, + variants: { + Default: 'Default', + Night: 'Night', + Original: 'Original', + Grey: 'Grey', + LandLot: 'LandLot' + } + } + }; + + L.tileLayer.provider = function (provider, options) { + return new L.TileLayer.Provider(provider, options); + }; + + return L; +})); diff --git a/views/public/javascripts/leaflet/leaflet-src.esm.js b/views/public/javascripts/leaflet/leaflet-src.esm.js new file mode 100644 index 0000000..fb08729 --- /dev/null +++ b/views/public/javascripts/leaflet/leaflet-src.esm.js @@ -0,0 +1,13986 @@ +/* @preserve + * Leaflet 1.6.0+Detached: 0c81bdf904d864fd12a286e3d1979f47aba17991.0c81bdf, a JS library for interactive maps. http://leafletjs.com + * (c) 2010-2019 Vladimir Agafonkin, (c) 2010-2011 CloudMade + */ + +var version = "1.6.0+HEAD.0c81bdf"; + +/* + * @namespace Util + * + * Various utility functions, used by Leaflet internally. + */ + +var freeze = Object.freeze; +Object.freeze = function (obj) { return obj; }; + +// @function extend(dest: Object, src?: Object): Object +// Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut. +function extend(dest) { + var i, j, len, src; + + for (j = 1, len = arguments.length; j < len; j++) { + src = arguments[j]; + for (i in src) { + dest[i] = src[i]; + } + } + return dest; +} + +// @function create(proto: Object, properties?: Object): Object +// Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create) +var create = Object.create || (function () { + function F() {} + return function (proto) { + F.prototype = proto; + return new F(); + }; +})(); + +// @function bind(fn: Function, …): Function +// Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind). +// Has a `L.bind()` shortcut. +function bind(fn, obj) { + var slice = Array.prototype.slice; + + if (fn.bind) { + return fn.bind.apply(fn, slice.call(arguments, 1)); + } + + var args = slice.call(arguments, 2); + + return function () { + return fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments); + }; +} + +// @property lastId: Number +// Last unique ID used by [`stamp()`](#util-stamp) +var lastId = 0; + +// @function stamp(obj: Object): Number +// Returns the unique ID of an object, assigning it one if it doesn't have it. +function stamp(obj) { + /*eslint-disable */ + obj._leaflet_id = obj._leaflet_id || ++lastId; + return obj._leaflet_id; + /* eslint-enable */ +} + +// @function throttle(fn: Function, time: Number, context: Object): Function +// Returns a function which executes function `fn` with the given scope `context` +// (so that the `this` keyword refers to `context` inside `fn`'s code). The function +// `fn` will be called no more than one time per given amount of `time`. The arguments +// received by the bound function will be any arguments passed when binding the +// function, followed by any arguments passed when invoking the bound function. +// Has an `L.throttle` shortcut. +function throttle(fn, time, context) { + var lock, args, wrapperFn, later; + + later = function () { + // reset lock and call if queued + lock = false; + if (args) { + wrapperFn.apply(context, args); + args = false; + } + }; + + wrapperFn = function () { + if (lock) { + // called too soon, queue to call later + args = arguments; + + } else { + // call and lock until later + fn.apply(context, arguments); + setTimeout(later, time); + lock = true; + } + }; + + return wrapperFn; +} + +// @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number +// Returns the number `num` modulo `range` in such a way so it lies within +// `range[0]` and `range[1]`. The returned value will be always smaller than +// `range[1]` unless `includeMax` is set to `true`. +function wrapNum(x, range, includeMax) { + var max = range[1], + min = range[0], + d = max - min; + return x === max && includeMax ? x : ((x - min) % d + d) % d + min; +} + +// @function falseFn(): Function +// Returns a function which always returns `false`. +function falseFn() { return false; } + +// @function formatNum(num: Number, digits?: Number): Number +// Returns the number `num` rounded to `digits` decimals, or to 6 decimals by default. +function formatNum(num, digits) { + var pow = Math.pow(10, (digits === undefined ? 6 : digits)); + return Math.round(num * pow) / pow; +} + +// @function trim(str: String): String +// Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim) +function trim(str) { + return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); +} + +// @function splitWords(str: String): String[] +// Trims and splits the string on whitespace and returns the array of parts. +function splitWords(str) { + return trim(str).split(/\s+/); +} + +// @function setOptions(obj: Object, options: Object): Object +// Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut. +function setOptions(obj, options) { + if (!obj.hasOwnProperty('options')) { + obj.options = obj.options ? create(obj.options) : {}; + } + for (var i in options) { + obj.options[i] = options[i]; + } + return obj.options; +} + +// @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String +// Converts an object into a parameter URL string, e.g. `{a: "foo", b: "bar"}` +// translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will +// be appended at the end. If `uppercase` is `true`, the parameter names will +// be uppercased (e.g. `'?A=foo&B=bar'`) +function getParamString(obj, existingUrl, uppercase) { + var params = []; + for (var i in obj) { + params.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i])); + } + return ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&'); +} + +var templateRe = /\{ *([\w_-]+) *\}/g; + +// @function template(str: String, data: Object): String +// Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'` +// and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string +// `('Hello foo, bar')`. You can also specify functions instead of strings for +// data values — they will be evaluated passing `data` as an argument. +function template(str, data) { + return str.replace(templateRe, function (str, key) { + var value = data[key]; + + if (value === undefined) { + throw new Error('No value provided for variable ' + str); + + } else if (typeof value === 'function') { + value = value(data); + } + return value; + }); +} + +// @function isArray(obj): Boolean +// Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray) +var isArray = Array.isArray || function (obj) { + return (Object.prototype.toString.call(obj) === '[object Array]'); +}; + +// @function indexOf(array: Array, el: Object): Number +// Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf) +function indexOf(array, el) { + for (var i = 0; i < array.length; i++) { + if (array[i] === el) { return i; } + } + return -1; +} + +// @property emptyImageUrl: String +// Data URI string containing a base64-encoded empty GIF image. +// Used as a hack to free memory from unused images on WebKit-powered +// mobile devices (by setting image `src` to this string). +var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='; + +// inspired by http://paulirish.com/2011/requestanimationframe-for-smart-animating/ + +function getPrefixed(name) { + return window['webkit' + name] || window['moz' + name] || window['ms' + name]; +} + +var lastTime = 0; + +// fallback for IE 7-8 +function timeoutDefer(fn) { + var time = +new Date(), + timeToCall = Math.max(0, 16 - (time - lastTime)); + + lastTime = time + timeToCall; + return window.setTimeout(fn, timeToCall); +} + +var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer; +var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') || + getPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); }; + +// @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number +// Schedules `fn` to be executed when the browser repaints. `fn` is bound to +// `context` if given. When `immediate` is set, `fn` is called immediately if +// the browser doesn't have native support for +// [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame), +// otherwise it's delayed. Returns a request ID that can be used to cancel the request. +function requestAnimFrame(fn, context, immediate) { + if (immediate && requestFn === timeoutDefer) { + fn.call(context); + } else { + return requestFn.call(window, bind(fn, context)); + } +} + +// @function cancelAnimFrame(id: Number): undefined +// Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame). +function cancelAnimFrame(id) { + if (id) { + cancelFn.call(window, id); + } +} + + +var Util = (Object.freeze || Object)({ + freeze: freeze, + extend: extend, + create: create, + bind: bind, + lastId: lastId, + stamp: stamp, + throttle: throttle, + wrapNum: wrapNum, + falseFn: falseFn, + formatNum: formatNum, + trim: trim, + splitWords: splitWords, + setOptions: setOptions, + getParamString: getParamString, + template: template, + isArray: isArray, + indexOf: indexOf, + emptyImageUrl: emptyImageUrl, + requestFn: requestFn, + cancelFn: cancelFn, + requestAnimFrame: requestAnimFrame, + cancelAnimFrame: cancelAnimFrame +}); + +// @class Class +// @aka L.Class + +// @section +// @uninheritable + +// Thanks to John Resig and Dean Edwards for inspiration! + +function Class() {} + +Class.extend = function (props) { + + // @function extend(props: Object): Function + // [Extends the current class](#class-inheritance) given the properties to be included. + // Returns a Javascript function that is a class constructor (to be called with `new`). + var NewClass = function () { + + // call the constructor + if (this.initialize) { + this.initialize.apply(this, arguments); + } + + // call all constructor hooks + this.callInitHooks(); + }; + + var parentProto = NewClass.__super__ = this.prototype; + + var proto = create(parentProto); + proto.constructor = NewClass; + + NewClass.prototype = proto; + + // inherit parent's statics + for (var i in this) { + if (this.hasOwnProperty(i) && i !== 'prototype' && i !== '__super__') { + NewClass[i] = this[i]; + } + } + + // mix static properties into the class + if (props.statics) { + extend(NewClass, props.statics); + delete props.statics; + } + + // mix includes into the prototype + if (props.includes) { + checkDeprecatedMixinEvents(props.includes); + extend.apply(null, [proto].concat(props.includes)); + delete props.includes; + } + + // merge options + if (proto.options) { + props.options = extend(create(proto.options), props.options); + } + + // mix given properties into the prototype + extend(proto, props); + + proto._initHooks = []; + + // add method for calling all hooks + proto.callInitHooks = function () { + + if (this._initHooksCalled) { return; } + + if (parentProto.callInitHooks) { + parentProto.callInitHooks.call(this); + } + + this._initHooksCalled = true; + + for (var i = 0, len = proto._initHooks.length; i < len; i++) { + proto._initHooks[i].call(this); + } + }; + + return NewClass; +}; + + +// @function include(properties: Object): this +// [Includes a mixin](#class-includes) into the current class. +Class.include = function (props) { + extend(this.prototype, props); + return this; +}; + +// @function mergeOptions(options: Object): this +// [Merges `options`](#class-options) into the defaults of the class. +Class.mergeOptions = function (options) { + extend(this.prototype.options, options); + return this; +}; + +// @function addInitHook(fn: Function): this +// Adds a [constructor hook](#class-constructor-hooks) to the class. +Class.addInitHook = function (fn) { // (Function) || (String, args...) + var args = Array.prototype.slice.call(arguments, 1); + + var init = typeof fn === 'function' ? fn : function () { + this[fn].apply(this, args); + }; + + this.prototype._initHooks = this.prototype._initHooks || []; + this.prototype._initHooks.push(init); + return this; +}; + +function checkDeprecatedMixinEvents(includes) { + if (typeof L === 'undefined' || !L || !L.Mixin) { return; } + + includes = isArray(includes) ? includes : [includes]; + + for (var i = 0; i < includes.length; i++) { + if (includes[i] === L.Mixin.Events) { + console.warn('Deprecated include of L.Mixin.Events: ' + + 'this property will be removed in future releases, ' + + 'please inherit from L.Evented instead.', new Error().stack); + } + } +} + +/* + * @class Evented + * @aka L.Evented + * @inherits Class + * + * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event). + * + * @example + * + * ```js + * map.on('click', function(e) { + * alert(e.latlng); + * } ); + * ``` + * + * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function: + * + * ```js + * function onClick(e) { ... } + * + * map.on('click', onClick); + * map.off('click', onClick); + * ``` + */ + +var Events = { + /* @method on(type: String, fn: Function, context?: Object): this + * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`). + * + * @alternative + * @method on(eventMap: Object): this + * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` + */ + on: function (types, fn, context) { + + // types can be a map of types/handlers + if (typeof types === 'object') { + for (var type in types) { + // we don't process space-separated events here for performance; + // it's a hot path since Layer uses the on(obj) syntax + this._on(type, types[type], fn); + } + + } else { + // types can be a string of space-separated words + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + this._on(types[i], fn, context); + } + } + + return this; + }, + + /* @method off(type: String, fn?: Function, context?: Object): this + * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener. + * + * @alternative + * @method off(eventMap: Object): this + * Removes a set of type/listener pairs. + * + * @alternative + * @method off: this + * Removes all listeners to all events on the object. This includes implicitly attached events. + */ + off: function (types, fn, context) { + + if (!types) { + // clear all listeners if called without arguments + delete this._events; + + } else if (typeof types === 'object') { + for (var type in types) { + this._off(type, types[type], fn); + } + + } else { + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + this._off(types[i], fn, context); + } + } + + return this; + }, + + // attach listener (without syntactic sugar now) + _on: function (type, fn, context) { + this._events = this._events || {}; + + /* get/init listeners for type */ + var typeListeners = this._events[type]; + if (!typeListeners) { + typeListeners = []; + this._events[type] = typeListeners; + } + + if (context === this) { + // Less memory footprint. + context = undefined; + } + var newListener = {fn: fn, ctx: context}, + listeners = typeListeners; + + // check if fn already there + for (var i = 0, len = listeners.length; i < len; i++) { + if (listeners[i].fn === fn && listeners[i].ctx === context) { + return; + } + } + + listeners.push(newListener); + }, + + _off: function (type, fn, context) { + var listeners, + i, + len; + + if (!this._events) { return; } + + listeners = this._events[type]; + + if (!listeners) { + return; + } + + if (!fn) { + // Set all removed listeners to noop so they are not called if remove happens in fire + for (i = 0, len = listeners.length; i < len; i++) { + listeners[i].fn = falseFn; + } + // clear all listeners for a type if function isn't specified + delete this._events[type]; + return; + } + + if (context === this) { + context = undefined; + } + + if (listeners) { + + // find fn and remove it + for (i = 0, len = listeners.length; i < len; i++) { + var l = listeners[i]; + if (l.ctx !== context) { continue; } + if (l.fn === fn) { + + // set the removed listener to noop so that's not called if remove happens in fire + l.fn = falseFn; + + if (this._firingCount) { + /* copy array in case events are being fired */ + this._events[type] = listeners = listeners.slice(); + } + listeners.splice(i, 1); + + return; + } + } + } + }, + + // @method fire(type: String, data?: Object, propagate?: Boolean): this + // Fires an event of the specified type. You can optionally provide an data + // object — the first argument of the listener function will contain its + // properties. The event can optionally be propagated to event parents. + fire: function (type, data, propagate) { + if (!this.listens(type, propagate)) { return this; } + + var event = extend({}, data, { + type: type, + target: this, + sourceTarget: data && data.sourceTarget || this + }); + + if (this._events) { + var listeners = this._events[type]; + + if (listeners) { + this._firingCount = (this._firingCount + 1) || 1; + for (var i = 0, len = listeners.length; i < len; i++) { + var l = listeners[i]; + l.fn.call(l.ctx || this, event); + } + + this._firingCount--; + } + } + + if (propagate) { + // propagate the event to parents (set with addEventParent) + this._propagateEvent(event); + } + + return this; + }, + + // @method listens(type: String): Boolean + // Returns `true` if a particular event type has any listeners attached to it. + listens: function (type, propagate) { + var listeners = this._events && this._events[type]; + if (listeners && listeners.length) { return true; } + + if (propagate) { + // also check parents for listeners if event propagates + for (var id in this._eventParents) { + if (this._eventParents[id].listens(type, propagate)) { return true; } + } + } + return false; + }, + + // @method once(…): this + // Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed. + once: function (types, fn, context) { + + if (typeof types === 'object') { + for (var type in types) { + this.once(type, types[type], fn); + } + return this; + } + + var handler = bind(function () { + this + .off(types, fn, context) + .off(types, handler, context); + }, this); + + // add a listener that's executed once and removed after that + return this + .on(types, fn, context) + .on(types, handler, context); + }, + + // @method addEventParent(obj: Evented): this + // Adds an event parent - an `Evented` that will receive propagated events + addEventParent: function (obj) { + this._eventParents = this._eventParents || {}; + this._eventParents[stamp(obj)] = obj; + return this; + }, + + // @method removeEventParent(obj: Evented): this + // Removes an event parent, so it will stop receiving propagated events + removeEventParent: function (obj) { + if (this._eventParents) { + delete this._eventParents[stamp(obj)]; + } + return this; + }, + + _propagateEvent: function (e) { + for (var id in this._eventParents) { + this._eventParents[id].fire(e.type, extend({ + layer: e.target, + propagatedFrom: e.target + }, e), true); + } + } +}; + +// aliases; we should ditch those eventually + +// @method addEventListener(…): this +// Alias to [`on(…)`](#evented-on) +Events.addEventListener = Events.on; + +// @method removeEventListener(…): this +// Alias to [`off(…)`](#evented-off) + +// @method clearAllEventListeners(…): this +// Alias to [`off()`](#evented-off) +Events.removeEventListener = Events.clearAllEventListeners = Events.off; + +// @method addOneTimeEventListener(…): this +// Alias to [`once(…)`](#evented-once) +Events.addOneTimeEventListener = Events.once; + +// @method fireEvent(…): this +// Alias to [`fire(…)`](#evented-fire) +Events.fireEvent = Events.fire; + +// @method hasEventListeners(…): Boolean +// Alias to [`listens(…)`](#evented-listens) +Events.hasEventListeners = Events.listens; + +var Evented = Class.extend(Events); + +/* + * @class Point + * @aka L.Point + * + * Represents a point with `x` and `y` coordinates in pixels. + * + * @example + * + * ```js + * var point = L.point(200, 300); + * ``` + * + * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent: + * + * ```js + * map.panBy([200, 300]); + * map.panBy(L.point(200, 300)); + * ``` + * + * Note that `Point` does not inherit from Leafet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function Point(x, y, round) { + // @property x: Number; The `x` coordinate of the point + this.x = (round ? Math.round(x) : x); + // @property y: Number; The `y` coordinate of the point + this.y = (round ? Math.round(y) : y); +} + +var trunc = Math.trunc || function (v) { + return v > 0 ? Math.floor(v) : Math.ceil(v); +}; + +Point.prototype = { + + // @method clone(): Point + // Returns a copy of the current point. + clone: function () { + return new Point(this.x, this.y); + }, + + // @method add(otherPoint: Point): Point + // Returns the result of addition of the current and the given points. + add: function (point) { + // non-destructive, returns a new point + return this.clone()._add(toPoint(point)); + }, + + _add: function (point) { + // destructive, used directly for performance in situations where it's safe to modify existing point + this.x += point.x; + this.y += point.y; + return this; + }, + + // @method subtract(otherPoint: Point): Point + // Returns the result of subtraction of the given point from the current. + subtract: function (point) { + return this.clone()._subtract(toPoint(point)); + }, + + _subtract: function (point) { + this.x -= point.x; + this.y -= point.y; + return this; + }, + + // @method divideBy(num: Number): Point + // Returns the result of division of the current point by the given number. + divideBy: function (num) { + return this.clone()._divideBy(num); + }, + + _divideBy: function (num) { + this.x /= num; + this.y /= num; + return this; + }, + + // @method multiplyBy(num: Number): Point + // Returns the result of multiplication of the current point by the given number. + multiplyBy: function (num) { + return this.clone()._multiplyBy(num); + }, + + _multiplyBy: function (num) { + this.x *= num; + this.y *= num; + return this; + }, + + // @method scaleBy(scale: Point): Point + // Multiply each coordinate of the current point by each coordinate of + // `scale`. In linear algebra terms, multiply the point by the + // [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation) + // defined by `scale`. + scaleBy: function (point) { + return new Point(this.x * point.x, this.y * point.y); + }, + + // @method unscaleBy(scale: Point): Point + // Inverse of `scaleBy`. Divide each coordinate of the current point by + // each coordinate of `scale`. + unscaleBy: function (point) { + return new Point(this.x / point.x, this.y / point.y); + }, + + // @method round(): Point + // Returns a copy of the current point with rounded coordinates. + round: function () { + return this.clone()._round(); + }, + + _round: function () { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + return this; + }, + + // @method floor(): Point + // Returns a copy of the current point with floored coordinates (rounded down). + floor: function () { + return this.clone()._floor(); + }, + + _floor: function () { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + return this; + }, + + // @method ceil(): Point + // Returns a copy of the current point with ceiled coordinates (rounded up). + ceil: function () { + return this.clone()._ceil(); + }, + + _ceil: function () { + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + return this; + }, + + // @method trunc(): Point + // Returns a copy of the current point with truncated coordinates (rounded towards zero). + trunc: function () { + return this.clone()._trunc(); + }, + + _trunc: function () { + this.x = trunc(this.x); + this.y = trunc(this.y); + return this; + }, + + // @method distanceTo(otherPoint: Point): Number + // Returns the cartesian distance between the current and the given points. + distanceTo: function (point) { + point = toPoint(point); + + var x = point.x - this.x, + y = point.y - this.y; + + return Math.sqrt(x * x + y * y); + }, + + // @method equals(otherPoint: Point): Boolean + // Returns `true` if the given point has the same coordinates. + equals: function (point) { + point = toPoint(point); + + return point.x === this.x && + point.y === this.y; + }, + + // @method contains(otherPoint: Point): Boolean + // Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values). + contains: function (point) { + point = toPoint(point); + + return Math.abs(point.x) <= Math.abs(this.x) && + Math.abs(point.y) <= Math.abs(this.y); + }, + + // @method toString(): String + // Returns a string representation of the point for debugging purposes. + toString: function () { + return 'Point(' + + formatNum(this.x) + ', ' + + formatNum(this.y) + ')'; + } +}; + +// @factory L.point(x: Number, y: Number, round?: Boolean) +// Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values. + +// @alternative +// @factory L.point(coords: Number[]) +// Expects an array of the form `[x, y]` instead. + +// @alternative +// @factory L.point(coords: Object) +// Expects a plain object of the form `{x: Number, y: Number}` instead. +function toPoint(x, y, round) { + if (x instanceof Point) { + return x; + } + if (isArray(x)) { + return new Point(x[0], x[1]); + } + if (x === undefined || x === null) { + return x; + } + if (typeof x === 'object' && 'x' in x && 'y' in x) { + return new Point(x.x, x.y); + } + return new Point(x, y, round); +} + +/* + * @class Bounds + * @aka L.Bounds + * + * Represents a rectangular area in pixel coordinates. + * + * @example + * + * ```js + * var p1 = L.point(10, 10), + * p2 = L.point(40, 60), + * bounds = L.bounds(p1, p2); + * ``` + * + * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this: + * + * ```js + * otherBounds.intersects([[10, 10], [40, 60]]); + * ``` + * + * Note that `Bounds` does not inherit from Leafet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function Bounds(a, b) { + if (!a) { return; } + + var points = b ? [a, b] : a; + + for (var i = 0, len = points.length; i < len; i++) { + this.extend(points[i]); + } +} + +Bounds.prototype = { + // @method extend(point: Point): this + // Extends the bounds to contain the given point. + extend: function (point) { // (Point) + point = toPoint(point); + + // @property min: Point + // The top left corner of the rectangle. + // @property max: Point + // The bottom right corner of the rectangle. + if (!this.min && !this.max) { + this.min = point.clone(); + this.max = point.clone(); + } else { + this.min.x = Math.min(point.x, this.min.x); + this.max.x = Math.max(point.x, this.max.x); + this.min.y = Math.min(point.y, this.min.y); + this.max.y = Math.max(point.y, this.max.y); + } + return this; + }, + + // @method getCenter(round?: Boolean): Point + // Returns the center point of the bounds. + getCenter: function (round) { + return new Point( + (this.min.x + this.max.x) / 2, + (this.min.y + this.max.y) / 2, round); + }, + + // @method getBottomLeft(): Point + // Returns the bottom-left point of the bounds. + getBottomLeft: function () { + return new Point(this.min.x, this.max.y); + }, + + // @method getTopRight(): Point + // Returns the top-right point of the bounds. + getTopRight: function () { // -> Point + return new Point(this.max.x, this.min.y); + }, + + // @method getTopLeft(): Point + // Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)). + getTopLeft: function () { + return this.min; // left, top + }, + + // @method getBottomRight(): Point + // Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)). + getBottomRight: function () { + return this.max; // right, bottom + }, + + // @method getSize(): Point + // Returns the size of the given bounds + getSize: function () { + return this.max.subtract(this.min); + }, + + // @method contains(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle contains the given one. + // @alternative + // @method contains(point: Point): Boolean + // Returns `true` if the rectangle contains the given point. + contains: function (obj) { + var min, max; + + if (typeof obj[0] === 'number' || obj instanceof Point) { + obj = toPoint(obj); + } else { + obj = toBounds(obj); + } + + if (obj instanceof Bounds) { + min = obj.min; + max = obj.max; + } else { + min = max = obj; + } + + return (min.x >= this.min.x) && + (max.x <= this.max.x) && + (min.y >= this.min.y) && + (max.y <= this.max.y); + }, + + // @method intersects(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle intersects the given bounds. Two bounds + // intersect if they have at least one point in common. + intersects: function (bounds) { // (Bounds) -> Boolean + bounds = toBounds(bounds); + + var min = this.min, + max = this.max, + min2 = bounds.min, + max2 = bounds.max, + xIntersects = (max2.x >= min.x) && (min2.x <= max.x), + yIntersects = (max2.y >= min.y) && (min2.y <= max.y); + + return xIntersects && yIntersects; + }, + + // @method overlaps(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle overlaps the given bounds. Two bounds + // overlap if their intersection is an area. + overlaps: function (bounds) { // (Bounds) -> Boolean + bounds = toBounds(bounds); + + var min = this.min, + max = this.max, + min2 = bounds.min, + max2 = bounds.max, + xOverlaps = (max2.x > min.x) && (min2.x < max.x), + yOverlaps = (max2.y > min.y) && (min2.y < max.y); + + return xOverlaps && yOverlaps; + }, + + isValid: function () { + return !!(this.min && this.max); + } +}; + + +// @factory L.bounds(corner1: Point, corner2: Point) +// Creates a Bounds object from two corners coordinate pairs. +// @alternative +// @factory L.bounds(points: Point[]) +// Creates a Bounds object from the given array of points. +function toBounds(a, b) { + if (!a || a instanceof Bounds) { + return a; + } + return new Bounds(a, b); +} + +/* + * @class LatLngBounds + * @aka L.LatLngBounds + * + * Represents a rectangular geographical area on a map. + * + * @example + * + * ```js + * var corner1 = L.latLng(40.712, -74.227), + * corner2 = L.latLng(40.774, -74.125), + * bounds = L.latLngBounds(corner1, corner2); + * ``` + * + * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this: + * + * ```js + * map.fitBounds([ + * [40.712, -74.227], + * [40.774, -74.125] + * ]); + * ``` + * + * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range. + * + * Note that `LatLngBounds` does not inherit from Leafet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[]) + if (!corner1) { return; } + + var latlngs = corner2 ? [corner1, corner2] : corner1; + + for (var i = 0, len = latlngs.length; i < len; i++) { + this.extend(latlngs[i]); + } +} + +LatLngBounds.prototype = { + + // @method extend(latlng: LatLng): this + // Extend the bounds to contain the given point + + // @alternative + // @method extend(otherBounds: LatLngBounds): this + // Extend the bounds to contain the given bounds + extend: function (obj) { + var sw = this._southWest, + ne = this._northEast, + sw2, ne2; + + if (obj instanceof LatLng) { + sw2 = obj; + ne2 = obj; + + } else if (obj instanceof LatLngBounds) { + sw2 = obj._southWest; + ne2 = obj._northEast; + + if (!sw2 || !ne2) { return this; } + + } else { + return obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this; + } + + if (!sw && !ne) { + this._southWest = new LatLng(sw2.lat, sw2.lng); + this._northEast = new LatLng(ne2.lat, ne2.lng); + } else { + sw.lat = Math.min(sw2.lat, sw.lat); + sw.lng = Math.min(sw2.lng, sw.lng); + ne.lat = Math.max(ne2.lat, ne.lat); + ne.lng = Math.max(ne2.lng, ne.lng); + } + + return this; + }, + + // @method pad(bufferRatio: Number): LatLngBounds + // Returns bounds created by extending or retracting the current bounds by a given ratio in each direction. + // For example, a ratio of 0.5 extends the bounds by 50% in each direction. + // Negative values will retract the bounds. + pad: function (bufferRatio) { + var sw = this._southWest, + ne = this._northEast, + heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio, + widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio; + + return new LatLngBounds( + new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer), + new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer)); + }, + + // @method getCenter(): LatLng + // Returns the center point of the bounds. + getCenter: function () { + return new LatLng( + (this._southWest.lat + this._northEast.lat) / 2, + (this._southWest.lng + this._northEast.lng) / 2); + }, + + // @method getSouthWest(): LatLng + // Returns the south-west point of the bounds. + getSouthWest: function () { + return this._southWest; + }, + + // @method getNorthEast(): LatLng + // Returns the north-east point of the bounds. + getNorthEast: function () { + return this._northEast; + }, + + // @method getNorthWest(): LatLng + // Returns the north-west point of the bounds. + getNorthWest: function () { + return new LatLng(this.getNorth(), this.getWest()); + }, + + // @method getSouthEast(): LatLng + // Returns the south-east point of the bounds. + getSouthEast: function () { + return new LatLng(this.getSouth(), this.getEast()); + }, + + // @method getWest(): Number + // Returns the west longitude of the bounds + getWest: function () { + return this._southWest.lng; + }, + + // @method getSouth(): Number + // Returns the south latitude of the bounds + getSouth: function () { + return this._southWest.lat; + }, + + // @method getEast(): Number + // Returns the east longitude of the bounds + getEast: function () { + return this._northEast.lng; + }, + + // @method getNorth(): Number + // Returns the north latitude of the bounds + getNorth: function () { + return this._northEast.lat; + }, + + // @method contains(otherBounds: LatLngBounds): Boolean + // Returns `true` if the rectangle contains the given one. + + // @alternative + // @method contains (latlng: LatLng): Boolean + // Returns `true` if the rectangle contains the given point. + contains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean + if (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) { + obj = toLatLng(obj); + } else { + obj = toLatLngBounds(obj); + } + + var sw = this._southWest, + ne = this._northEast, + sw2, ne2; + + if (obj instanceof LatLngBounds) { + sw2 = obj.getSouthWest(); + ne2 = obj.getNorthEast(); + } else { + sw2 = ne2 = obj; + } + + return (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) && + (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng); + }, + + // @method intersects(otherBounds: LatLngBounds): Boolean + // Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common. + intersects: function (bounds) { + bounds = toLatLngBounds(bounds); + + var sw = this._southWest, + ne = this._northEast, + sw2 = bounds.getSouthWest(), + ne2 = bounds.getNorthEast(), + + latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat), + lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng); + + return latIntersects && lngIntersects; + }, + + // @method overlaps(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area. + overlaps: function (bounds) { + bounds = toLatLngBounds(bounds); + + var sw = this._southWest, + ne = this._northEast, + sw2 = bounds.getSouthWest(), + ne2 = bounds.getNorthEast(), + + latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat), + lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng); + + return latOverlaps && lngOverlaps; + }, + + // @method toBBoxString(): String + // Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data. + toBBoxString: function () { + return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(','); + }, + + // @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean + // Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number. + equals: function (bounds, maxMargin) { + if (!bounds) { return false; } + + bounds = toLatLngBounds(bounds); + + return this._southWest.equals(bounds.getSouthWest(), maxMargin) && + this._northEast.equals(bounds.getNorthEast(), maxMargin); + }, + + // @method isValid(): Boolean + // Returns `true` if the bounds are properly initialized. + isValid: function () { + return !!(this._southWest && this._northEast); + } +}; + +// TODO International date line? + +// @factory L.latLngBounds(corner1: LatLng, corner2: LatLng) +// Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle. + +// @alternative +// @factory L.latLngBounds(latlngs: LatLng[]) +// Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds). +function toLatLngBounds(a, b) { + if (a instanceof LatLngBounds) { + return a; + } + return new LatLngBounds(a, b); +} + +/* @class LatLng + * @aka L.LatLng + * + * Represents a geographical point with a certain latitude and longitude. + * + * @example + * + * ``` + * var latlng = L.latLng(50.5, 30.5); + * ``` + * + * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent: + * + * ``` + * map.panTo([50, 30]); + * map.panTo({lon: 30, lat: 50}); + * map.panTo({lat: 50, lng: 30}); + * map.panTo(L.latLng(50, 30)); + * ``` + * + * Note that `LatLng` does not inherit from Leaflet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function LatLng(lat, lng, alt) { + if (isNaN(lat) || isNaN(lng)) { + throw new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')'); + } + + // @property lat: Number + // Latitude in degrees + this.lat = +lat; + + // @property lng: Number + // Longitude in degrees + this.lng = +lng; + + // @property alt: Number + // Altitude in meters (optional) + if (alt !== undefined) { + this.alt = +alt; + } +} + +LatLng.prototype = { + // @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean + // Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number. + equals: function (obj, maxMargin) { + if (!obj) { return false; } + + obj = toLatLng(obj); + + var margin = Math.max( + Math.abs(this.lat - obj.lat), + Math.abs(this.lng - obj.lng)); + + return margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin); + }, + + // @method toString(): String + // Returns a string representation of the point (for debugging purposes). + toString: function (precision) { + return 'LatLng(' + + formatNum(this.lat, precision) + ', ' + + formatNum(this.lng, precision) + ')'; + }, + + // @method distanceTo(otherLatLng: LatLng): Number + // Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines). + distanceTo: function (other) { + return Earth.distance(this, toLatLng(other)); + }, + + // @method wrap(): LatLng + // Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees. + wrap: function () { + return Earth.wrapLatLng(this); + }, + + // @method toBounds(sizeInMeters: Number): LatLngBounds + // Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`. + toBounds: function (sizeInMeters) { + var latAccuracy = 180 * sizeInMeters / 40075017, + lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat); + + return toLatLngBounds( + [this.lat - latAccuracy, this.lng - lngAccuracy], + [this.lat + latAccuracy, this.lng + lngAccuracy]); + }, + + clone: function () { + return new LatLng(this.lat, this.lng, this.alt); + } +}; + + + +// @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng +// Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude). + +// @alternative +// @factory L.latLng(coords: Array): LatLng +// Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead. + +// @alternative +// @factory L.latLng(coords: Object): LatLng +// Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead. + +function toLatLng(a, b, c) { + if (a instanceof LatLng) { + return a; + } + if (isArray(a) && typeof a[0] !== 'object') { + if (a.length === 3) { + return new LatLng(a[0], a[1], a[2]); + } + if (a.length === 2) { + return new LatLng(a[0], a[1]); + } + return null; + } + if (a === undefined || a === null) { + return a; + } + if (typeof a === 'object' && 'lat' in a) { + return new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt); + } + if (b === undefined) { + return null; + } + return new LatLng(a, b, c); +} + +/* + * @namespace CRS + * @crs L.CRS.Base + * Object that defines coordinate reference systems for projecting + * geographical points into pixel (screen) coordinates and back (and to + * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See + * [spatial reference system](http://en.wikipedia.org/wiki/Coordinate_reference_system). + * + * Leaflet defines the most usual CRSs by default. If you want to use a + * CRS not defined by default, take a look at the + * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin. + * + * Note that the CRS instances do not inherit from Leafet's `Class` object, + * and can't be instantiated. Also, new classes can't inherit from them, + * and methods can't be added to them with the `include` function. + */ + +var CRS = { + // @method latLngToPoint(latlng: LatLng, zoom: Number): Point + // Projects geographical coordinates into pixel coordinates for a given zoom. + latLngToPoint: function (latlng, zoom) { + var projectedPoint = this.projection.project(latlng), + scale = this.scale(zoom); + + return this.transformation._transform(projectedPoint, scale); + }, + + // @method pointToLatLng(point: Point, zoom: Number): LatLng + // The inverse of `latLngToPoint`. Projects pixel coordinates on a given + // zoom into geographical coordinates. + pointToLatLng: function (point, zoom) { + var scale = this.scale(zoom), + untransformedPoint = this.transformation.untransform(point, scale); + + return this.projection.unproject(untransformedPoint); + }, + + // @method project(latlng: LatLng): Point + // Projects geographical coordinates into coordinates in units accepted for + // this CRS (e.g. meters for EPSG:3857, for passing it to WMS services). + project: function (latlng) { + return this.projection.project(latlng); + }, + + // @method unproject(point: Point): LatLng + // Given a projected coordinate returns the corresponding LatLng. + // The inverse of `project`. + unproject: function (point) { + return this.projection.unproject(point); + }, + + // @method scale(zoom: Number): Number + // Returns the scale used when transforming projected coordinates into + // pixel coordinates for a particular zoom. For example, it returns + // `256 * 2^zoom` for Mercator-based CRS. + scale: function (zoom) { + return 256 * Math.pow(2, zoom); + }, + + // @method zoom(scale: Number): Number + // Inverse of `scale()`, returns the zoom level corresponding to a scale + // factor of `scale`. + zoom: function (scale) { + return Math.log(scale / 256) / Math.LN2; + }, + + // @method getProjectedBounds(zoom: Number): Bounds + // Returns the projection's bounds scaled and transformed for the provided `zoom`. + getProjectedBounds: function (zoom) { + if (this.infinite) { return null; } + + var b = this.projection.bounds, + s = this.scale(zoom), + min = this.transformation.transform(b.min, s), + max = this.transformation.transform(b.max, s); + + return new Bounds(min, max); + }, + + // @method distance(latlng1: LatLng, latlng2: LatLng): Number + // Returns the distance between two geographical coordinates. + + // @property code: String + // Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`) + // + // @property wrapLng: Number[] + // An array of two numbers defining whether the longitude (horizontal) coordinate + // axis wraps around a given range and how. Defaults to `[-180, 180]` in most + // geographical CRSs. If `undefined`, the longitude axis does not wrap around. + // + // @property wrapLat: Number[] + // Like `wrapLng`, but for the latitude (vertical) axis. + + // wrapLng: [min, max], + // wrapLat: [min, max], + + // @property infinite: Boolean + // If true, the coordinate space will be unbounded (infinite in both axes) + infinite: false, + + // @method wrapLatLng(latlng: LatLng): LatLng + // Returns a `LatLng` where lat and lng has been wrapped according to the + // CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds. + wrapLatLng: function (latlng) { + var lng = this.wrapLng ? wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng, + lat = this.wrapLat ? wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat, + alt = latlng.alt; + + return new LatLng(lat, lng, alt); + }, + + // @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds + // Returns a `LatLngBounds` with the same size as the given one, ensuring + // that its center is within the CRS's bounds. + // Only accepts actual `L.LatLngBounds` instances, not arrays. + wrapLatLngBounds: function (bounds) { + var center = bounds.getCenter(), + newCenter = this.wrapLatLng(center), + latShift = center.lat - newCenter.lat, + lngShift = center.lng - newCenter.lng; + + if (latShift === 0 && lngShift === 0) { + return bounds; + } + + var sw = bounds.getSouthWest(), + ne = bounds.getNorthEast(), + newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift), + newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift); + + return new LatLngBounds(newSw, newNe); + } +}; + +/* + * @namespace CRS + * @crs L.CRS.Earth + * + * Serves as the base for CRS that are global such that they cover the earth. + * Can only be used as the base for other CRS and cannot be used directly, + * since it does not have a `code`, `projection` or `transformation`. `distance()` returns + * meters. + */ + +var Earth = extend({}, CRS, { + wrapLng: [-180, 180], + + // Mean Earth Radius, as recommended for use by + // the International Union of Geodesy and Geophysics, + // see http://rosettacode.org/wiki/Haversine_formula + R: 6371000, + + // distance between two geographical points using spherical law of cosines approximation + distance: function (latlng1, latlng2) { + var rad = Math.PI / 180, + lat1 = latlng1.lat * rad, + lat2 = latlng2.lat * rad, + sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2), + sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2), + a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon, + c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return this.R * c; + } +}); + +/* + * @namespace Projection + * @projection L.Projection.SphericalMercator + * + * Spherical Mercator projection — the most common projection for online maps, + * used by almost all free and commercial tile providers. Assumes that Earth is + * a sphere. Used by the `EPSG:3857` CRS. + */ + +var earthRadius = 6378137; + +var SphericalMercator = { + + R: earthRadius, + MAX_LATITUDE: 85.0511287798, + + project: function (latlng) { + var d = Math.PI / 180, + max = this.MAX_LATITUDE, + lat = Math.max(Math.min(max, latlng.lat), -max), + sin = Math.sin(lat * d); + + return new Point( + this.R * latlng.lng * d, + this.R * Math.log((1 + sin) / (1 - sin)) / 2); + }, + + unproject: function (point) { + var d = 180 / Math.PI; + + return new LatLng( + (2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d, + point.x * d / this.R); + }, + + bounds: (function () { + var d = earthRadius * Math.PI; + return new Bounds([-d, -d], [d, d]); + })() +}; + +/* + * @class Transformation + * @aka L.Transformation + * + * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d` + * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing + * the reverse. Used by Leaflet in its projections code. + * + * @example + * + * ```js + * var transformation = L.transformation(2, 5, -1, 10), + * p = L.point(1, 2), + * p2 = transformation.transform(p), // L.point(7, 8) + * p3 = transformation.untransform(p2); // L.point(1, 2) + * ``` + */ + + +// factory new L.Transformation(a: Number, b: Number, c: Number, d: Number) +// Creates a `Transformation` object with the given coefficients. +function Transformation(a, b, c, d) { + if (isArray(a)) { + // use array properties + this._a = a[0]; + this._b = a[1]; + this._c = a[2]; + this._d = a[3]; + return; + } + this._a = a; + this._b = b; + this._c = c; + this._d = d; +} + +Transformation.prototype = { + // @method transform(point: Point, scale?: Number): Point + // Returns a transformed point, optionally multiplied by the given scale. + // Only accepts actual `L.Point` instances, not arrays. + transform: function (point, scale) { // (Point, Number) -> Point + return this._transform(point.clone(), scale); + }, + + // destructive transform (faster) + _transform: function (point, scale) { + scale = scale || 1; + point.x = scale * (this._a * point.x + this._b); + point.y = scale * (this._c * point.y + this._d); + return point; + }, + + // @method untransform(point: Point, scale?: Number): Point + // Returns the reverse transformation of the given point, optionally divided + // by the given scale. Only accepts actual `L.Point` instances, not arrays. + untransform: function (point, scale) { + scale = scale || 1; + return new Point( + (point.x / scale - this._b) / this._a, + (point.y / scale - this._d) / this._c); + } +}; + +// factory L.transformation(a: Number, b: Number, c: Number, d: Number) + +// @factory L.transformation(a: Number, b: Number, c: Number, d: Number) +// Instantiates a Transformation object with the given coefficients. + +// @alternative +// @factory L.transformation(coefficients: Array): Transformation +// Expects an coefficients array of the form +// `[a: Number, b: Number, c: Number, d: Number]`. + +function toTransformation(a, b, c, d) { + return new Transformation(a, b, c, d); +} + +/* + * @namespace CRS + * @crs L.CRS.EPSG3857 + * + * The most common CRS for online maps, used by almost all free and commercial + * tile providers. Uses Spherical Mercator projection. Set in by default in + * Map's `crs` option. + */ + +var EPSG3857 = extend({}, Earth, { + code: 'EPSG:3857', + projection: SphericalMercator, + + transformation: (function () { + var scale = 0.5 / (Math.PI * SphericalMercator.R); + return toTransformation(scale, 0.5, -scale, 0.5); + }()) +}); + +var EPSG900913 = extend({}, EPSG3857, { + code: 'EPSG:900913' +}); + +// @namespace SVG; @section +// There are several static functions which can be called without instantiating L.SVG: + +// @function create(name: String): SVGElement +// Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement), +// corresponding to the class name passed. For example, using 'line' will return +// an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement). +function svgCreate(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); +} + +// @function pointsToPath(rings: Point[], closed: Boolean): String +// Generates a SVG path string for multiple rings, with each ring turning +// into "M..L..L.." instructions +function pointsToPath(rings, closed) { + var str = '', + i, j, len, len2, points, p; + + for (i = 0, len = rings.length; i < len; i++) { + points = rings[i]; + + for (j = 0, len2 = points.length; j < len2; j++) { + p = points[j]; + str += (j ? 'L' : 'M') + p.x + ' ' + p.y; + } + + // closes the ring for polygons; "x" is VML syntax + str += closed ? (svg ? 'z' : 'x') : ''; + } + + // SVG complains about empty path strings + return str || 'M0 0'; +} + +/* + * @namespace Browser + * @aka L.Browser + * + * A namespace with static properties for browser/feature detection used by Leaflet internally. + * + * @example + * + * ```js + * if (L.Browser.ielt9) { + * alert('Upgrade your browser, dude!'); + * } + * ``` + */ + +var style$1 = document.documentElement.style; + +// @property ie: Boolean; `true` for all Internet Explorer versions (not Edge). +var ie = 'ActiveXObject' in window; + +// @property ielt9: Boolean; `true` for Internet Explorer versions less than 9. +var ielt9 = ie && !document.addEventListener; + +// @property edge: Boolean; `true` for the Edge web browser. +var edge = 'msLaunchUri' in navigator && !('documentMode' in document); + +// @property webkit: Boolean; +// `true` for webkit-based browsers like Chrome and Safari (including mobile versions). +var webkit = userAgentContains('webkit'); + +// @property android: Boolean +// `true` for any browser running on an Android platform. +var android = userAgentContains('android'); + +// @property android23: Boolean; `true` for browsers running on Android 2 or Android 3. +var android23 = userAgentContains('android 2') || userAgentContains('android 3'); + +/* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */ +var webkitVer = parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit +// @property androidStock: Boolean; `true` for the Android stock browser (i.e. not Chrome) +var androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window); + +// @property opera: Boolean; `true` for the Opera browser +var opera = !!window.opera; + +// @property chrome: Boolean; `true` for the Chrome browser. +var chrome = userAgentContains('chrome'); + +// @property gecko: Boolean; `true` for gecko-based browsers like Firefox. +var gecko = userAgentContains('gecko') && !webkit && !opera && !ie; + +// @property safari: Boolean; `true` for the Safari browser. +var safari = !chrome && userAgentContains('safari'); + +var phantom = userAgentContains('phantom'); + +// @property opera12: Boolean +// `true` for the Opera browser supporting CSS transforms (version 12 or later). +var opera12 = 'OTransition' in style$1; + +// @property win: Boolean; `true` when the browser is running in a Windows platform +var win = navigator.platform.indexOf('Win') === 0; + +// @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms. +var ie3d = ie && ('transition' in style$1); + +// @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms. +var webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23; + +// @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms. +var gecko3d = 'MozPerspective' in style$1; + +// @property any3d: Boolean +// `true` for all browsers supporting CSS transforms. +var any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom; + +// @property mobile: Boolean; `true` for all browsers running in a mobile device. +var mobile = typeof orientation !== 'undefined' || userAgentContains('mobile'); + +// @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device. +var mobileWebkit = mobile && webkit; + +// @property mobileWebkit3d: Boolean +// `true` for all webkit-based browsers in a mobile device supporting CSS transforms. +var mobileWebkit3d = mobile && webkit3d; + +// @property msPointer: Boolean +// `true` for browsers implementing the Microsoft touch events model (notably IE10). +var msPointer = !window.PointerEvent && window.MSPointerEvent; + +// @property pointer: Boolean +// `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx). +var pointer = !webkit && !!(window.PointerEvent || msPointer); + +// @property touch: Boolean +// `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events). +// This does not necessarily mean that the browser is running in a computer with +// a touchscreen, it only means that the browser is capable of understanding +// touch events. +var touch = !window.L_NO_TOUCH && (pointer || 'ontouchstart' in window || + (window.DocumentTouch && document instanceof window.DocumentTouch)); + +// @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device. +var mobileOpera = mobile && opera; + +// @property mobileGecko: Boolean +// `true` for gecko-based browsers running in a mobile device. +var mobileGecko = mobile && gecko; + +// @property retina: Boolean +// `true` for browsers on a high-resolution "retina" screen or on any screen when browser's display zoom is more than 100%. +var retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1; + +// @property passiveEvents: Boolean +// `true` for browsers that support passive events. +var passiveEvents = (function () { + var supportsPassiveOption = false; + try { + var opts = Object.defineProperty({}, 'passive', { + get: function () { + supportsPassiveOption = true; + } + }); + window.addEventListener('testPassiveEventSupport', falseFn, opts); + window.removeEventListener('testPassiveEventSupport', falseFn, opts); + } catch (e) { + // Errors can safely be ignored since this is only a browser support test. + } + return supportsPassiveOption; +}); + +// @property canvas: Boolean +// `true` when the browser supports [``](https://developer.mozilla.org/docs/Web/API/Canvas_API). +var canvas = (function () { + return !!document.createElement('canvas').getContext; +}()); + +// @property svg: Boolean +// `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG). +var svg = !!(document.createElementNS && svgCreate('svg').createSVGRect); + +// @property vml: Boolean +// `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language). +var vml = !svg && (function () { + try { + var div = document.createElement('div'); + div.innerHTML = ''; + + var shape = div.firstChild; + shape.style.behavior = 'url(#default#VML)'; + + return shape && (typeof shape.adj === 'object'); + + } catch (e) { + return false; + } +}()); + + +function userAgentContains(str) { + return navigator.userAgent.toLowerCase().indexOf(str) >= 0; +} + + +var Browser = (Object.freeze || Object)({ + ie: ie, + ielt9: ielt9, + edge: edge, + webkit: webkit, + android: android, + android23: android23, + androidStock: androidStock, + opera: opera, + chrome: chrome, + gecko: gecko, + safari: safari, + phantom: phantom, + opera12: opera12, + win: win, + ie3d: ie3d, + webkit3d: webkit3d, + gecko3d: gecko3d, + any3d: any3d, + mobile: mobile, + mobileWebkit: mobileWebkit, + mobileWebkit3d: mobileWebkit3d, + msPointer: msPointer, + pointer: pointer, + touch: touch, + mobileOpera: mobileOpera, + mobileGecko: mobileGecko, + retina: retina, + passiveEvents: passiveEvents, + canvas: canvas, + svg: svg, + vml: vml +}); + +/* + * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices. + */ + + +var POINTER_DOWN = msPointer ? 'MSPointerDown' : 'pointerdown'; +var POINTER_MOVE = msPointer ? 'MSPointerMove' : 'pointermove'; +var POINTER_UP = msPointer ? 'MSPointerUp' : 'pointerup'; +var POINTER_CANCEL = msPointer ? 'MSPointerCancel' : 'pointercancel'; +var TAG_WHITE_LIST = ['INPUT', 'SELECT', 'OPTION']; + +var _pointers = {}; +var _pointerDocListener = false; + +// DomEvent.DoubleTap needs to know about this +var _pointersCount = 0; + +// Provides a touch events wrapper for (ms)pointer events. +// ref http://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890 + +function addPointerListener(obj, type, handler, id) { + if (type === 'touchstart') { + _addPointerStart(obj, handler, id); + + } else if (type === 'touchmove') { + _addPointerMove(obj, handler, id); + + } else if (type === 'touchend') { + _addPointerEnd(obj, handler, id); + } + + return this; +} + +function removePointerListener(obj, type, id) { + var handler = obj['_leaflet_' + type + id]; + + if (type === 'touchstart') { + obj.removeEventListener(POINTER_DOWN, handler, false); + + } else if (type === 'touchmove') { + obj.removeEventListener(POINTER_MOVE, handler, false); + + } else if (type === 'touchend') { + obj.removeEventListener(POINTER_UP, handler, false); + obj.removeEventListener(POINTER_CANCEL, handler, false); + } + + return this; +} + +function _addPointerStart(obj, handler, id) { + var onDown = bind(function (e) { + if (e.pointerType !== 'mouse' && e.MSPOINTER_TYPE_MOUSE && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) { + // In IE11, some touch events needs to fire for form controls, or + // the controls will stop working. We keep a whitelist of tag names that + // need these events. For other target tags, we prevent default on the event. + if (TAG_WHITE_LIST.indexOf(e.target.tagName) < 0) { + preventDefault(e); + } else { + return; + } + } + + _handlePointer(e, handler); + }); + + obj['_leaflet_touchstart' + id] = onDown; + obj.addEventListener(POINTER_DOWN, onDown, false); + + // need to keep track of what pointers and how many are active to provide e.touches emulation + if (!_pointerDocListener) { + // we listen documentElement as any drags that end by moving the touch off the screen get fired there + document.documentElement.addEventListener(POINTER_DOWN, _globalPointerDown, true); + document.documentElement.addEventListener(POINTER_MOVE, _globalPointerMove, true); + document.documentElement.addEventListener(POINTER_UP, _globalPointerUp, true); + document.documentElement.addEventListener(POINTER_CANCEL, _globalPointerUp, true); + + _pointerDocListener = true; + } +} + +function _globalPointerDown(e) { + _pointers[e.pointerId] = e; + _pointersCount++; +} + +function _globalPointerMove(e) { + if (_pointers[e.pointerId]) { + _pointers[e.pointerId] = e; + } +} + +function _globalPointerUp(e) { + delete _pointers[e.pointerId]; + _pointersCount--; +} + +function _handlePointer(e, handler) { + e.touches = []; + for (var i in _pointers) { + e.touches.push(_pointers[i]); + } + e.changedTouches = [e]; + + handler(e); +} + +function _addPointerMove(obj, handler, id) { + var onMove = function (e) { + // don't fire touch moves when mouse isn't down + if ((e.pointerType === e.MSPOINTER_TYPE_MOUSE || e.pointerType === 'mouse') && e.buttons === 0) { return; } + + _handlePointer(e, handler); + }; + + obj['_leaflet_touchmove' + id] = onMove; + obj.addEventListener(POINTER_MOVE, onMove, false); +} + +function _addPointerEnd(obj, handler, id) { + var onUp = function (e) { + _handlePointer(e, handler); + }; + + obj['_leaflet_touchend' + id] = onUp; + obj.addEventListener(POINTER_UP, onUp, false); + obj.addEventListener(POINTER_CANCEL, onUp, false); +} + +/* + * Extends the event handling code with double tap support for mobile browsers. + */ + +var _touchstart = msPointer ? 'MSPointerDown' : pointer ? 'pointerdown' : 'touchstart'; +var _touchend = msPointer ? 'MSPointerUp' : pointer ? 'pointerup' : 'touchend'; +var _pre = '_leaflet_'; + +// inspired by Zepto touch code by Thomas Fuchs +function addDoubleTapListener(obj, handler, id) { + var last, touch$$1, + doubleTap = false, + delay = 250; + + function onTouchStart(e) { + var count; + + if (pointer) { + if ((!edge) || e.pointerType === 'mouse') { return; } + count = _pointersCount; + } else { + count = e.touches.length; + } + + if (count > 1) { return; } + + var now = Date.now(), + delta = now - (last || now); + + touch$$1 = e.touches ? e.touches[0] : e; + doubleTap = (delta > 0 && delta <= delay); + last = now; + } + + function onTouchEnd(e) { + if (doubleTap && !touch$$1.cancelBubble) { + if (pointer) { + if ((!edge) || e.pointerType === 'mouse') { return; } + // work around .type being readonly with MSPointer* events + var newTouch = {}, + prop, i; + + for (i in touch$$1) { + prop = touch$$1[i]; + newTouch[i] = prop && prop.bind ? prop.bind(touch$$1) : prop; + } + touch$$1 = newTouch; + } + touch$$1.type = 'dblclick'; + touch$$1.button = 0; + handler(touch$$1); + last = null; + } + } + + obj[_pre + _touchstart + id] = onTouchStart; + obj[_pre + _touchend + id] = onTouchEnd; + obj[_pre + 'dblclick' + id] = handler; + + obj.addEventListener(_touchstart, onTouchStart, passiveEvents ? {passive: false} : false); + obj.addEventListener(_touchend, onTouchEnd, passiveEvents ? {passive: false} : false); + + // On some platforms (notably, chrome<55 on win10 + touchscreen + mouse), + // the browser doesn't fire touchend/pointerup events but does fire + // native dblclicks. See #4127. + // Edge 14 also fires native dblclicks, but only for pointerType mouse, see #5180. + obj.addEventListener('dblclick', handler, false); + + return this; +} + +function removeDoubleTapListener(obj, id) { + var touchstart = obj[_pre + _touchstart + id], + touchend = obj[_pre + _touchend + id], + dblclick = obj[_pre + 'dblclick' + id]; + + obj.removeEventListener(_touchstart, touchstart, passiveEvents ? {passive: false} : false); + obj.removeEventListener(_touchend, touchend, passiveEvents ? {passive: false} : false); + if (!edge) { + obj.removeEventListener('dblclick', dblclick, false); + } + + return this; +} + +/* + * @namespace DomUtil + * + * Utility functions to work with the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model) + * tree, used by Leaflet internally. + * + * Most functions expecting or returning a `HTMLElement` also work for + * SVG elements. The only difference is that classes refer to CSS classes + * in HTML and SVG classes in SVG. + */ + + +// @property TRANSFORM: String +// Vendor-prefixed transform style name (e.g. `'webkitTransform'` for WebKit). +var TRANSFORM = testProp( + ['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']); + +// webkitTransition comes first because some browser versions that drop vendor prefix don't do +// the same for the transitionend event, in particular the Android 4.1 stock browser + +// @property TRANSITION: String +// Vendor-prefixed transition style name. +var TRANSITION = testProp( + ['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']); + +// @property TRANSITION_END: String +// Vendor-prefixed transitionend event name. +var TRANSITION_END = + TRANSITION === 'webkitTransition' || TRANSITION === 'OTransition' ? TRANSITION + 'End' : 'transitionend'; + + +// @function get(id: String|HTMLElement): HTMLElement +// Returns an element given its DOM id, or returns the element itself +// if it was passed directly. +function get(id) { + return typeof id === 'string' ? document.getElementById(id) : id; +} + +// @function getStyle(el: HTMLElement, styleAttrib: String): String +// Returns the value for a certain style attribute on an element, +// including computed values or values set through CSS. +function getStyle(el, style) { + var value = el.style[style] || (el.currentStyle && el.currentStyle[style]); + + if ((!value || value === 'auto') && document.defaultView) { + var css = document.defaultView.getComputedStyle(el, null); + value = css ? css[style] : null; + } + return value === 'auto' ? null : value; +} + +// @function create(tagName: String, className?: String, container?: HTMLElement): HTMLElement +// Creates an HTML element with `tagName`, sets its class to `className`, and optionally appends it to `container` element. +function create$1(tagName, className, container) { + var el = document.createElement(tagName); + el.className = className || ''; + + if (container) { + container.appendChild(el); + } + return el; +} + +// @function remove(el: HTMLElement) +// Removes `el` from its parent element +function remove(el) { + var parent = el.parentNode; + if (parent) { + parent.removeChild(el); + } +} + +// @function empty(el: HTMLElement) +// Removes all of `el`'s children elements from `el` +function empty(el) { + while (el.firstChild) { + el.removeChild(el.firstChild); + } +} + +// @function toFront(el: HTMLElement) +// Makes `el` the last child of its parent, so it renders in front of the other children. +function toFront(el) { + var parent = el.parentNode; + if (parent && parent.lastChild !== el) { + parent.appendChild(el); + } +} + +// @function toBack(el: HTMLElement) +// Makes `el` the first child of its parent, so it renders behind the other children. +function toBack(el) { + var parent = el.parentNode; + if (parent && parent.firstChild !== el) { + parent.insertBefore(el, parent.firstChild); + } +} + +// @function hasClass(el: HTMLElement, name: String): Boolean +// Returns `true` if the element's class attribute contains `name`. +function hasClass(el, name) { + if (el.classList !== undefined) { + return el.classList.contains(name); + } + var className = getClass(el); + return className.length > 0 && new RegExp('(^|\\s)' + name + '(\\s|$)').test(className); +} + +// @function addClass(el: HTMLElement, name: String) +// Adds `name` to the element's class attribute. +function addClass(el, name) { + if (el.classList !== undefined) { + var classes = splitWords(name); + for (var i = 0, len = classes.length; i < len; i++) { + el.classList.add(classes[i]); + } + } else if (!hasClass(el, name)) { + var className = getClass(el); + setClass(el, (className ? className + ' ' : '') + name); + } +} + +// @function removeClass(el: HTMLElement, name: String) +// Removes `name` from the element's class attribute. +function removeClass(el, name) { + if (el.classList !== undefined) { + el.classList.remove(name); + } else { + setClass(el, trim((' ' + getClass(el) + ' ').replace(' ' + name + ' ', ' '))); + } +} + +// @function setClass(el: HTMLElement, name: String) +// Sets the element's class. +function setClass(el, name) { + if (el.className.baseVal === undefined) { + el.className = name; + } else { + // in case of SVG element + el.className.baseVal = name; + } +} + +// @function getClass(el: HTMLElement): String +// Returns the element's class. +function getClass(el) { + // Check if the element is an SVGElementInstance and use the correspondingElement instead + // (Required for linked SVG elements in IE11.) + if (el.correspondingElement) { + el = el.correspondingElement; + } + return el.className.baseVal === undefined ? el.className : el.className.baseVal; +} + +// @function setOpacity(el: HTMLElement, opacity: Number) +// Set the opacity of an element (including old IE support). +// `opacity` must be a number from `0` to `1`. +function setOpacity(el, value) { + if ('opacity' in el.style) { + el.style.opacity = value; + } else if ('filter' in el.style) { + _setOpacityIE(el, value); + } +} + +function _setOpacityIE(el, value) { + var filter = false, + filterName = 'DXImageTransform.Microsoft.Alpha'; + + // filters collection throws an error if we try to retrieve a filter that doesn't exist + try { + filter = el.filters.item(filterName); + } catch (e) { + // don't set opacity to 1 if we haven't already set an opacity, + // it isn't needed and breaks transparent pngs. + if (value === 1) { return; } + } + + value = Math.round(value * 100); + + if (filter) { + filter.Enabled = (value !== 100); + filter.Opacity = value; + } else { + el.style.filter += ' progid:' + filterName + '(opacity=' + value + ')'; + } +} + +// @function testProp(props: String[]): String|false +// Goes through the array of style names and returns the first name +// that is a valid style name for an element. If no such name is found, +// it returns false. Useful for vendor-prefixed styles like `transform`. +function testProp(props) { + var style = document.documentElement.style; + + for (var i = 0; i < props.length; i++) { + if (props[i] in style) { + return props[i]; + } + } + return false; +} + +// @function setTransform(el: HTMLElement, offset: Point, scale?: Number) +// Resets the 3D CSS transform of `el` so it is translated by `offset` pixels +// and optionally scaled by `scale`. Does not have an effect if the +// browser doesn't support 3D CSS transforms. +function setTransform(el, offset, scale) { + var pos = offset || new Point(0, 0); + + el.style[TRANSFORM] = + (ie3d ? + 'translate(' + pos.x + 'px,' + pos.y + 'px)' : + 'translate3d(' + pos.x + 'px,' + pos.y + 'px,0)') + + (scale ? ' scale(' + scale + ')' : ''); +} + +// @function setPosition(el: HTMLElement, position: Point) +// Sets the position of `el` to coordinates specified by `position`, +// using CSS translate or top/left positioning depending on the browser +// (used by Leaflet internally to position its layers). +function setPosition(el, point) { + + /*eslint-disable */ + el._leaflet_pos = point; + /* eslint-enable */ + + if (any3d) { + setTransform(el, point); + } else { + el.style.left = point.x + 'px'; + el.style.top = point.y + 'px'; + } +} + +// @function getPosition(el: HTMLElement): Point +// Returns the coordinates of an element previously positioned with setPosition. +function getPosition(el) { + // this method is only used for elements previously positioned using setPosition, + // so it's safe to cache the position for performance + + return el._leaflet_pos || new Point(0, 0); +} + +// @function disableTextSelection() +// Prevents the user from generating `selectstart` DOM events, usually generated +// when the user drags the mouse through a page with text. Used internally +// by Leaflet to override the behaviour of any click-and-drag interaction on +// the map. Affects drag interactions on the whole document. + +// @function enableTextSelection() +// Cancels the effects of a previous [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection). +var disableTextSelection; +var enableTextSelection; +var _userSelect; +if ('onselectstart' in document) { + disableTextSelection = function () { + on(window, 'selectstart', preventDefault); + }; + enableTextSelection = function () { + off(window, 'selectstart', preventDefault); + }; +} else { + var userSelectProperty = testProp( + ['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']); + + disableTextSelection = function () { + if (userSelectProperty) { + var style = document.documentElement.style; + _userSelect = style[userSelectProperty]; + style[userSelectProperty] = 'none'; + } + }; + enableTextSelection = function () { + if (userSelectProperty) { + document.documentElement.style[userSelectProperty] = _userSelect; + _userSelect = undefined; + } + }; +} + +// @function disableImageDrag() +// As [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection), but +// for `dragstart` DOM events, usually generated when the user drags an image. +function disableImageDrag() { + on(window, 'dragstart', preventDefault); +} + +// @function enableImageDrag() +// Cancels the effects of a previous [`L.DomUtil.disableImageDrag`](#domutil-disabletextselection). +function enableImageDrag() { + off(window, 'dragstart', preventDefault); +} + +var _outlineElement; +var _outlineStyle; +// @function preventOutline(el: HTMLElement) +// Makes the [outline](https://developer.mozilla.org/docs/Web/CSS/outline) +// of the element `el` invisible. Used internally by Leaflet to prevent +// focusable elements from displaying an outline when the user performs a +// drag interaction on them. +function preventOutline(element) { + while (element.tabIndex === -1) { + element = element.parentNode; + } + if (!element.style) { return; } + restoreOutline(); + _outlineElement = element; + _outlineStyle = element.style.outline; + element.style.outline = 'none'; + on(window, 'keydown', restoreOutline); +} + +// @function restoreOutline() +// Cancels the effects of a previous [`L.DomUtil.preventOutline`](). +function restoreOutline() { + if (!_outlineElement) { return; } + _outlineElement.style.outline = _outlineStyle; + _outlineElement = undefined; + _outlineStyle = undefined; + off(window, 'keydown', restoreOutline); +} + +// @function getSizedParentNode(el: HTMLElement): HTMLElement +// Finds the closest parent node which size (width and height) is not null. +function getSizedParentNode(element) { + do { + element = element.parentNode; + } while ((!element.offsetWidth || !element.offsetHeight) && element !== document.body); + return element; +} + +// @function getScale(el: HTMLElement): Object +// Computes the CSS scale currently applied on the element. +// Returns an object with `x` and `y` members as horizontal and vertical scales respectively, +// and `boundingClientRect` as the result of [`getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). +function getScale(element) { + var rect = element.getBoundingClientRect(); // Read-only in old browsers. + + return { + x: rect.width / element.offsetWidth || 1, + y: rect.height / element.offsetHeight || 1, + boundingClientRect: rect + }; +} + + +var DomUtil = (Object.freeze || Object)({ + TRANSFORM: TRANSFORM, + TRANSITION: TRANSITION, + TRANSITION_END: TRANSITION_END, + get: get, + getStyle: getStyle, + create: create$1, + remove: remove, + empty: empty, + toFront: toFront, + toBack: toBack, + hasClass: hasClass, + addClass: addClass, + removeClass: removeClass, + setClass: setClass, + getClass: getClass, + setOpacity: setOpacity, + testProp: testProp, + setTransform: setTransform, + setPosition: setPosition, + getPosition: getPosition, + disableTextSelection: disableTextSelection, + enableTextSelection: enableTextSelection, + disableImageDrag: disableImageDrag, + enableImageDrag: enableImageDrag, + preventOutline: preventOutline, + restoreOutline: restoreOutline, + getSizedParentNode: getSizedParentNode, + getScale: getScale +}); + +/* + * @namespace DomEvent + * Utility functions to work with the [DOM events](https://developer.mozilla.org/docs/Web/API/Event), used by Leaflet internally. + */ + +// Inspired by John Resig, Dean Edwards and YUI addEvent implementations. + +// @function on(el: HTMLElement, types: String, fn: Function, context?: Object): this +// Adds a listener function (`fn`) to a particular DOM event type of the +// element `el`. You can optionally specify the context of the listener +// (object the `this` keyword will point to). You can also pass several +// space-separated types (e.g. `'click dblclick'`). + +// @alternative +// @function on(el: HTMLElement, eventMap: Object, context?: Object): this +// Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` +function on(obj, types, fn, context) { + + if (typeof types === 'object') { + for (var type in types) { + addOne(obj, type, types[type], fn); + } + } else { + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + addOne(obj, types[i], fn, context); + } + } + + return this; +} + +var eventsKey = '_leaflet_events'; + +// @function off(el: HTMLElement, types: String, fn: Function, context?: Object): this +// Removes a previously added listener function. +// Note that if you passed a custom context to on, you must pass the same +// context to `off` in order to remove the listener. + +// @alternative +// @function off(el: HTMLElement, eventMap: Object, context?: Object): this +// Removes a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` +function off(obj, types, fn, context) { + + if (typeof types === 'object') { + for (var type in types) { + removeOne(obj, type, types[type], fn); + } + } else if (types) { + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + removeOne(obj, types[i], fn, context); + } + } else { + for (var j in obj[eventsKey]) { + removeOne(obj, j, obj[eventsKey][j]); + } + delete obj[eventsKey]; + } + + return this; +} + +function addOne(obj, type, fn, context) { + var id = type + stamp(fn) + (context ? '_' + stamp(context) : ''); + + if (obj[eventsKey] && obj[eventsKey][id]) { return this; } + + var handler = function (e) { + return fn.call(context || obj, e || window.event); + }; + + var originalHandler = handler; + + if (pointer && type.indexOf('touch') === 0) { + // Needs DomEvent.Pointer.js + addPointerListener(obj, type, handler, id); + + } else if (touch && (type === 'dblclick') && addDoubleTapListener && + !(pointer && chrome)) { + // Chrome >55 does not need the synthetic dblclicks from addDoubleTapListener + // See #5180 + addDoubleTapListener(obj, handler, id); + + } else if ('addEventListener' in obj) { + + if (type === 'mousewheel') { + obj.addEventListener('onwheel' in obj ? 'wheel' : 'mousewheel', handler, passiveEvents ? {passive: false} : false); + + } else if ((type === 'mouseenter') || (type === 'mouseleave')) { + handler = function (e) { + e = e || window.event; + if (isExternalTarget(obj, e)) { + originalHandler(e); + } + }; + obj.addEventListener(type === 'mouseenter' ? 'mouseover' : 'mouseout', handler, false); + + } else { + if (type === 'click' && android) { + handler = function (e) { + filterClick(e, originalHandler); + }; + } + obj.addEventListener(type, handler, false); + } + + } else if ('attachEvent' in obj) { + obj.attachEvent('on' + type, handler); + } + + obj[eventsKey] = obj[eventsKey] || {}; + obj[eventsKey][id] = handler; +} + +function removeOne(obj, type, fn, context) { + + var id = type + stamp(fn) + (context ? '_' + stamp(context) : ''), + handler = obj[eventsKey] && obj[eventsKey][id]; + + if (!handler) { return this; } + + if (pointer && type.indexOf('touch') === 0) { + removePointerListener(obj, type, id); + + } else if (touch && (type === 'dblclick') && removeDoubleTapListener && + !(pointer && chrome)) { + removeDoubleTapListener(obj, id); + + } else if ('removeEventListener' in obj) { + + if (type === 'mousewheel') { + obj.removeEventListener('onwheel' in obj ? 'wheel' : 'mousewheel', handler, passiveEvents ? {passive: false} : false); + + } else { + obj.removeEventListener( + type === 'mouseenter' ? 'mouseover' : + type === 'mouseleave' ? 'mouseout' : type, handler, false); + } + + } else if ('detachEvent' in obj) { + obj.detachEvent('on' + type, handler); + } + + obj[eventsKey][id] = null; +} + +// @function stopPropagation(ev: DOMEvent): this +// Stop the given event from propagation to parent elements. Used inside the listener functions: +// ```js +// L.DomEvent.on(div, 'click', function (ev) { +// L.DomEvent.stopPropagation(ev); +// }); +// ``` +function stopPropagation(e) { + + if (e.stopPropagation) { + e.stopPropagation(); + } else if (e.originalEvent) { // In case of Leaflet event. + e.originalEvent._stopped = true; + } else { + e.cancelBubble = true; + } + skipped(e); + + return this; +} + +// @function disableScrollPropagation(el: HTMLElement): this +// Adds `stopPropagation` to the element's `'mousewheel'` events (plus browser variants). +function disableScrollPropagation(el) { + addOne(el, 'mousewheel', stopPropagation); + return this; +} + +// @function disableClickPropagation(el: HTMLElement): this +// Adds `stopPropagation` to the element's `'click'`, `'doubleclick'`, +// `'mousedown'` and `'touchstart'` events (plus browser variants). +function disableClickPropagation(el) { + on(el, 'mousedown touchstart dblclick', stopPropagation); + addOne(el, 'click', fakeStop); + return this; +} + +// @function preventDefault(ev: DOMEvent): this +// Prevents the default action of the DOM Event `ev` from happening (such as +// following a link in the href of the a element, or doing a POST request +// with page reload when a `
    ` is submitted). +// Use it inside listener functions. +function preventDefault(e) { + if (e.preventDefault) { + e.preventDefault(); + } else { + e.returnValue = false; + } + return this; +} + +// @function stop(ev: DOMEvent): this +// Does `stopPropagation` and `preventDefault` at the same time. +function stop(e) { + preventDefault(e); + stopPropagation(e); + return this; +} + +// @function getMousePosition(ev: DOMEvent, container?: HTMLElement): Point +// Gets normalized mouse position from a DOM event relative to the +// `container` (border excluded) or to the whole page if not specified. +function getMousePosition(e, container) { + if (!container) { + return new Point(e.clientX, e.clientY); + } + + var scale = getScale(container), + offset = scale.boundingClientRect; // left and top values are in page scale (like the event clientX/Y) + + return new Point( + // offset.left/top values are in page scale (like clientX/Y), + // whereas clientLeft/Top (border width) values are the original values (before CSS scale applies). + (e.clientX - offset.left) / scale.x - container.clientLeft, + (e.clientY - offset.top) / scale.y - container.clientTop + ); +} + +// Chrome on Win scrolls double the pixels as in other platforms (see #4538), +// and Firefox scrolls device pixels, not CSS pixels +var wheelPxFactor = + (win && chrome) ? 2 * window.devicePixelRatio : + gecko ? window.devicePixelRatio : 1; + +// @function getWheelDelta(ev: DOMEvent): Number +// Gets normalized wheel delta from a mousewheel DOM event, in vertical +// pixels scrolled (negative if scrolling down). +// Events from pointing devices without precise scrolling are mapped to +// a best guess of 60 pixels. +function getWheelDelta(e) { + return (edge) ? e.wheelDeltaY / 2 : // Don't trust window-geometry-based delta + (e.deltaY && e.deltaMode === 0) ? -e.deltaY / wheelPxFactor : // Pixels + (e.deltaY && e.deltaMode === 1) ? -e.deltaY * 20 : // Lines + (e.deltaY && e.deltaMode === 2) ? -e.deltaY * 60 : // Pages + (e.deltaX || e.deltaZ) ? 0 : // Skip horizontal/depth wheel events + e.wheelDelta ? (e.wheelDeltaY || e.wheelDelta) / 2 : // Legacy IE pixels + (e.detail && Math.abs(e.detail) < 32765) ? -e.detail * 20 : // Legacy Moz lines + e.detail ? e.detail / -32765 * 60 : // Legacy Moz pages + 0; +} + +var skipEvents = {}; + +function fakeStop(e) { + // fakes stopPropagation by setting a special event flag, checked/reset with skipped(e) + skipEvents[e.type] = true; +} + +function skipped(e) { + var events = skipEvents[e.type]; + // reset when checking, as it's only used in map container and propagates outside of the map + skipEvents[e.type] = false; + return events; +} + +// check if element really left/entered the event target (for mouseenter/mouseleave) +function isExternalTarget(el, e) { + + var related = e.relatedTarget; + + if (!related) { return true; } + + try { + while (related && (related !== el)) { + related = related.parentNode; + } + } catch (err) { + return false; + } + return (related !== el); +} + +var lastClick; + +// this is a horrible workaround for a bug in Android where a single touch triggers two click events +function filterClick(e, handler) { + var timeStamp = (e.timeStamp || (e.originalEvent && e.originalEvent.timeStamp)), + elapsed = lastClick && (timeStamp - lastClick); + + // are they closer together than 500ms yet more than 100ms? + // Android typically triggers them ~300ms apart while multiple listeners + // on the same event should be triggered far faster; + // or check if click is simulated on the element, and if it is, reject any non-simulated events + + if ((elapsed && elapsed > 100 && elapsed < 500) || (e.target._simulatedClick && !e._simulated)) { + stop(e); + return; + } + lastClick = timeStamp; + + handler(e); +} + + + + +var DomEvent = (Object.freeze || Object)({ + on: on, + off: off, + stopPropagation: stopPropagation, + disableScrollPropagation: disableScrollPropagation, + disableClickPropagation: disableClickPropagation, + preventDefault: preventDefault, + stop: stop, + getMousePosition: getMousePosition, + getWheelDelta: getWheelDelta, + fakeStop: fakeStop, + skipped: skipped, + isExternalTarget: isExternalTarget, + addListener: on, + removeListener: off +}); + +/* + * @class PosAnimation + * @aka L.PosAnimation + * @inherits Evented + * Used internally for panning animations, utilizing CSS3 Transitions for modern browsers and a timer fallback for IE6-9. + * + * @example + * ```js + * var fx = new L.PosAnimation(); + * fx.run(el, [300, 500], 0.5); + * ``` + * + * @constructor L.PosAnimation() + * Creates a `PosAnimation` object. + * + */ + +var PosAnimation = Evented.extend({ + + // @method run(el: HTMLElement, newPos: Point, duration?: Number, easeLinearity?: Number) + // Run an animation of a given element to a new position, optionally setting + // duration in seconds (`0.25` by default) and easing linearity factor (3rd + // argument of the [cubic bezier curve](http://cubic-bezier.com/#0,0,.5,1), + // `0.5` by default). + run: function (el, newPos, duration, easeLinearity) { + this.stop(); + + this._el = el; + this._inProgress = true; + this._duration = duration || 0.25; + this._easeOutPower = 1 / Math.max(easeLinearity || 0.5, 0.2); + + this._startPos = getPosition(el); + this._offset = newPos.subtract(this._startPos); + this._startTime = +new Date(); + + // @event start: Event + // Fired when the animation starts + this.fire('start'); + + this._animate(); + }, + + // @method stop() + // Stops the animation (if currently running). + stop: function () { + if (!this._inProgress) { return; } + + this._step(true); + this._complete(); + }, + + _animate: function () { + // animation loop + this._animId = requestAnimFrame(this._animate, this); + this._step(); + }, + + _step: function (round) { + var elapsed = (+new Date()) - this._startTime, + duration = this._duration * 1000; + + if (elapsed < duration) { + this._runFrame(this._easeOut(elapsed / duration), round); + } else { + this._runFrame(1); + this._complete(); + } + }, + + _runFrame: function (progress, round) { + var pos = this._startPos.add(this._offset.multiplyBy(progress)); + if (round) { + pos._round(); + } + setPosition(this._el, pos); + + // @event step: Event + // Fired continuously during the animation. + this.fire('step'); + }, + + _complete: function () { + cancelAnimFrame(this._animId); + + this._inProgress = false; + // @event end: Event + // Fired when the animation ends. + this.fire('end'); + }, + + _easeOut: function (t) { + return 1 - Math.pow(1 - t, this._easeOutPower); + } +}); + +/* + * @class Map + * @aka L.Map + * @inherits Evented + * + * The central class of the API — it is used to create a map on a page and manipulate it. + * + * @example + * + * ```js + * // initialize the map on the "map" div with a given center and zoom + * var map = L.map('map', { + * center: [51.505, -0.09], + * zoom: 13 + * }); + * ``` + * + */ + +var Map = Evented.extend({ + + options: { + // @section Map State Options + // @option crs: CRS = L.CRS.EPSG3857 + // The [Coordinate Reference System](#crs) to use. Don't change this if you're not + // sure what it means. + crs: EPSG3857, + + // @option center: LatLng = undefined + // Initial geographic center of the map + center: undefined, + + // @option zoom: Number = undefined + // Initial map zoom level + zoom: undefined, + + // @option minZoom: Number = * + // Minimum zoom level of the map. + // If not specified and at least one `GridLayer` or `TileLayer` is in the map, + // the lowest of their `minZoom` options will be used instead. + minZoom: undefined, + + // @option maxZoom: Number = * + // Maximum zoom level of the map. + // If not specified and at least one `GridLayer` or `TileLayer` is in the map, + // the highest of their `maxZoom` options will be used instead. + maxZoom: undefined, + + // @option layers: Layer[] = [] + // Array of layers that will be added to the map initially + layers: [], + + // @option maxBounds: LatLngBounds = null + // When this option is set, the map restricts the view to the given + // geographical bounds, bouncing the user back if the user tries to pan + // outside the view. To set the restriction dynamically, use + // [`setMaxBounds`](#map-setmaxbounds) method. + maxBounds: undefined, + + // @option renderer: Renderer = * + // The default method for drawing vector layers on the map. `L.SVG` + // or `L.Canvas` by default depending on browser support. + renderer: undefined, + + + // @section Animation Options + // @option zoomAnimation: Boolean = true + // Whether the map zoom animation is enabled. By default it's enabled + // in all browsers that support CSS3 Transitions except Android. + zoomAnimation: true, + + // @option zoomAnimationThreshold: Number = 4 + // Won't animate zoom if the zoom difference exceeds this value. + zoomAnimationThreshold: 4, + + // @option fadeAnimation: Boolean = true + // Whether the tile fade animation is enabled. By default it's enabled + // in all browsers that support CSS3 Transitions except Android. + fadeAnimation: true, + + // @option markerZoomAnimation: Boolean = true + // Whether markers animate their zoom with the zoom animation, if disabled + // they will disappear for the length of the animation. By default it's + // enabled in all browsers that support CSS3 Transitions except Android. + markerZoomAnimation: true, + + // @option transform3DLimit: Number = 2^23 + // Defines the maximum size of a CSS translation transform. The default + // value should not be changed unless a web browser positions layers in + // the wrong place after doing a large `panBy`. + transform3DLimit: 8388608, // Precision limit of a 32-bit float + + // @section Interaction Options + // @option zoomSnap: Number = 1 + // Forces the map's zoom level to always be a multiple of this, particularly + // right after a [`fitBounds()`](#map-fitbounds) or a pinch-zoom. + // By default, the zoom level snaps to the nearest integer; lower values + // (e.g. `0.5` or `0.1`) allow for greater granularity. A value of `0` + // means the zoom level will not be snapped after `fitBounds` or a pinch-zoom. + zoomSnap: 1, + + // @option zoomDelta: Number = 1 + // Controls how much the map's zoom level will change after a + // [`zoomIn()`](#map-zoomin), [`zoomOut()`](#map-zoomout), pressing `+` + // or `-` on the keyboard, or using the [zoom controls](#control-zoom). + // Values smaller than `1` (e.g. `0.5`) allow for greater granularity. + zoomDelta: 1, + + // @option trackResize: Boolean = true + // Whether the map automatically handles browser window resize to update itself. + trackResize: true + }, + + initialize: function (id, options) { // (HTMLElement or String, Object) + options = setOptions(this, options); + + // Make sure to assign internal flags at the beginning, + // to avoid inconsistent state in some edge cases. + this._handlers = []; + this._layers = {}; + this._zoomBoundLayers = {}; + this._sizeChanged = true; + + this._initContainer(id); + this._initLayout(); + + // hack for https://github.com/Leaflet/Leaflet/issues/1980 + this._onResize = bind(this._onResize, this); + + this._initEvents(); + + if (options.maxBounds) { + this.setMaxBounds(options.maxBounds); + } + + if (options.zoom !== undefined) { + this._zoom = this._limitZoom(options.zoom); + } + + if (options.center && options.zoom !== undefined) { + this.setView(toLatLng(options.center), options.zoom, {reset: true}); + } + + this.callInitHooks(); + + // don't animate on browsers without hardware-accelerated transitions or old Android/Opera + this._zoomAnimated = TRANSITION && any3d && !mobileOpera && + this.options.zoomAnimation; + + // zoom transitions run with the same duration for all layers, so if one of transitionend events + // happens after starting zoom animation (propagating to the map pane), we know that it ended globally + if (this._zoomAnimated) { + this._createAnimProxy(); + on(this._proxy, TRANSITION_END, this._catchTransitionEnd, this); + } + + this._addLayers(this.options.layers); + }, + + + // @section Methods for modifying map state + + // @method setView(center: LatLng, zoom: Number, options?: Zoom/pan options): this + // Sets the view of the map (geographical center and zoom) with the given + // animation options. + setView: function (center, zoom, options) { + + zoom = zoom === undefined ? this._zoom : this._limitZoom(zoom); + center = this._limitCenter(toLatLng(center), zoom, this.options.maxBounds); + options = options || {}; + + this._stop(); + + if (this._loaded && !options.reset && options !== true) { + + if (options.animate !== undefined) { + options.zoom = extend({animate: options.animate}, options.zoom); + options.pan = extend({animate: options.animate, duration: options.duration}, options.pan); + } + + // try animating pan or zoom + var moved = (this._zoom !== zoom) ? + this._tryAnimatedZoom && this._tryAnimatedZoom(center, zoom, options.zoom) : + this._tryAnimatedPan(center, options.pan); + + if (moved) { + // prevent resize handler call, the view will refresh after animation anyway + clearTimeout(this._sizeTimer); + return this; + } + } + + // animation didn't start, just reset the map view + this._resetView(center, zoom); + + return this; + }, + + // @method setZoom(zoom: Number, options?: Zoom/pan options): this + // Sets the zoom of the map. + setZoom: function (zoom, options) { + if (!this._loaded) { + this._zoom = zoom; + return this; + } + return this.setView(this.getCenter(), zoom, {zoom: options}); + }, + + // @method zoomIn(delta?: Number, options?: Zoom options): this + // Increases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default). + zoomIn: function (delta, options) { + delta = delta || (any3d ? this.options.zoomDelta : 1); + return this.setZoom(this._zoom + delta, options); + }, + + // @method zoomOut(delta?: Number, options?: Zoom options): this + // Decreases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default). + zoomOut: function (delta, options) { + delta = delta || (any3d ? this.options.zoomDelta : 1); + return this.setZoom(this._zoom - delta, options); + }, + + // @method setZoomAround(latlng: LatLng, zoom: Number, options: Zoom options): this + // Zooms the map while keeping a specified geographical point on the map + // stationary (e.g. used internally for scroll zoom and double-click zoom). + // @alternative + // @method setZoomAround(offset: Point, zoom: Number, options: Zoom options): this + // Zooms the map while keeping a specified pixel on the map (relative to the top-left corner) stationary. + setZoomAround: function (latlng, zoom, options) { + var scale = this.getZoomScale(zoom), + viewHalf = this.getSize().divideBy(2), + containerPoint = latlng instanceof Point ? latlng : this.latLngToContainerPoint(latlng), + + centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale), + newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset)); + + return this.setView(newCenter, zoom, {zoom: options}); + }, + + _getBoundsCenterZoom: function (bounds, options) { + + options = options || {}; + bounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds); + + var paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]), + paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]), + + zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR)); + + zoom = (typeof options.maxZoom === 'number') ? Math.min(options.maxZoom, zoom) : zoom; + + if (zoom === Infinity) { + return { + center: bounds.getCenter(), + zoom: zoom + }; + } + + var paddingOffset = paddingBR.subtract(paddingTL).divideBy(2), + + swPoint = this.project(bounds.getSouthWest(), zoom), + nePoint = this.project(bounds.getNorthEast(), zoom), + center = this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset), zoom); + + return { + center: center, + zoom: zoom + }; + }, + + // @method fitBounds(bounds: LatLngBounds, options?: fitBounds options): this + // Sets a map view that contains the given geographical bounds with the + // maximum zoom level possible. + fitBounds: function (bounds, options) { + + bounds = toLatLngBounds(bounds); + + if (!bounds.isValid()) { + throw new Error('Bounds are not valid.'); + } + + var target = this._getBoundsCenterZoom(bounds, options); + return this.setView(target.center, target.zoom, options); + }, + + // @method fitWorld(options?: fitBounds options): this + // Sets a map view that mostly contains the whole world with the maximum + // zoom level possible. + fitWorld: function (options) { + return this.fitBounds([[-90, -180], [90, 180]], options); + }, + + // @method panTo(latlng: LatLng, options?: Pan options): this + // Pans the map to a given center. + panTo: function (center, options) { // (LatLng) + return this.setView(center, this._zoom, {pan: options}); + }, + + // @method panBy(offset: Point, options?: Pan options): this + // Pans the map by a given number of pixels (animated). + panBy: function (offset, options) { + offset = toPoint(offset).round(); + options = options || {}; + + if (!offset.x && !offset.y) { + return this.fire('moveend'); + } + // If we pan too far, Chrome gets issues with tiles + // and makes them disappear or appear in the wrong place (slightly offset) #2602 + if (options.animate !== true && !this.getSize().contains(offset)) { + this._resetView(this.unproject(this.project(this.getCenter()).add(offset)), this.getZoom()); + return this; + } + + if (!this._panAnim) { + this._panAnim = new PosAnimation(); + + this._panAnim.on({ + 'step': this._onPanTransitionStep, + 'end': this._onPanTransitionEnd + }, this); + } + + // don't fire movestart if animating inertia + if (!options.noMoveStart) { + this.fire('movestart'); + } + + // animate pan unless animate: false specified + if (options.animate !== false) { + addClass(this._mapPane, 'leaflet-pan-anim'); + + var newPos = this._getMapPanePos().subtract(offset).round(); + this._panAnim.run(this._mapPane, newPos, options.duration || 0.25, options.easeLinearity); + } else { + this._rawPanBy(offset); + this.fire('move').fire('moveend'); + } + + return this; + }, + + // @method flyTo(latlng: LatLng, zoom?: Number, options?: Zoom/pan options): this + // Sets the view of the map (geographical center and zoom) performing a smooth + // pan-zoom animation. + flyTo: function (targetCenter, targetZoom, options) { + + options = options || {}; + if (options.animate === false || !any3d) { + return this.setView(targetCenter, targetZoom, options); + } + + this._stop(); + + var from = this.project(this.getCenter()), + to = this.project(targetCenter), + size = this.getSize(), + startZoom = this._zoom; + + targetCenter = toLatLng(targetCenter); + targetZoom = targetZoom === undefined ? startZoom : targetZoom; + + var w0 = Math.max(size.x, size.y), + w1 = w0 * this.getZoomScale(startZoom, targetZoom), + u1 = (to.distanceTo(from)) || 1, + rho = 1.42, + rho2 = rho * rho; + + function r(i) { + var s1 = i ? -1 : 1, + s2 = i ? w1 : w0, + t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1, + b1 = 2 * s2 * rho2 * u1, + b = t1 / b1, + sq = Math.sqrt(b * b + 1) - b; + + // workaround for floating point precision bug when sq = 0, log = -Infinite, + // thus triggering an infinite loop in flyTo + var log = sq < 0.000000001 ? -18 : Math.log(sq); + + return log; + } + + function sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; } + function cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; } + function tanh(n) { return sinh(n) / cosh(n); } + + var r0 = r(0); + + function w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); } + function u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; } + + function easeOut(t) { return 1 - Math.pow(1 - t, 1.5); } + + var start = Date.now(), + S = (r(1) - r0) / rho, + duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8; + + function frame() { + var t = (Date.now() - start) / duration, + s = easeOut(t) * S; + + if (t <= 1) { + this._flyToFrame = requestAnimFrame(frame, this); + + this._move( + this.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom), + this.getScaleZoom(w0 / w(s), startZoom), + {flyTo: true}); + + } else { + this + ._move(targetCenter, targetZoom) + ._moveEnd(true); + } + } + + this._moveStart(true, options.noMoveStart); + + frame.call(this); + return this; + }, + + // @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this + // Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto), + // but takes a bounds parameter like [`fitBounds`](#map-fitbounds). + flyToBounds: function (bounds, options) { + var target = this._getBoundsCenterZoom(bounds, options); + return this.flyTo(target.center, target.zoom, options); + }, + + // @method setMaxBounds(bounds: Bounds): this + // Restricts the map view to the given bounds (see the [maxBounds](#map-maxbounds) option). + setMaxBounds: function (bounds) { + bounds = toLatLngBounds(bounds); + + if (!bounds.isValid()) { + this.options.maxBounds = null; + return this.off('moveend', this._panInsideMaxBounds); + } else if (this.options.maxBounds) { + this.off('moveend', this._panInsideMaxBounds); + } + + this.options.maxBounds = bounds; + + if (this._loaded) { + this._panInsideMaxBounds(); + } + + return this.on('moveend', this._panInsideMaxBounds); + }, + + // @method setMinZoom(zoom: Number): this + // Sets the lower limit for the available zoom levels (see the [minZoom](#map-minzoom) option). + setMinZoom: function (zoom) { + var oldZoom = this.options.minZoom; + this.options.minZoom = zoom; + + if (this._loaded && oldZoom !== zoom) { + this.fire('zoomlevelschange'); + + if (this.getZoom() < this.options.minZoom) { + return this.setZoom(zoom); + } + } + + return this; + }, + + // @method setMaxZoom(zoom: Number): this + // Sets the upper limit for the available zoom levels (see the [maxZoom](#map-maxzoom) option). + setMaxZoom: function (zoom) { + var oldZoom = this.options.maxZoom; + this.options.maxZoom = zoom; + + if (this._loaded && oldZoom !== zoom) { + this.fire('zoomlevelschange'); + + if (this.getZoom() > this.options.maxZoom) { + return this.setZoom(zoom); + } + } + + return this; + }, + + // @method panInsideBounds(bounds: LatLngBounds, options?: Pan options): this + // Pans the map to the closest view that would lie inside the given bounds (if it's not already), controlling the animation using the options specific, if any. + panInsideBounds: function (bounds, options) { + this._enforcingBounds = true; + var center = this.getCenter(), + newCenter = this._limitCenter(center, this._zoom, toLatLngBounds(bounds)); + + if (!center.equals(newCenter)) { + this.panTo(newCenter, options); + } + + this._enforcingBounds = false; + return this; + }, + + // @method panInside(latlng: LatLng, options?: options): this + // Pans the map the minimum amount to make the `latlng` visible. Use + // `padding`, `paddingTopLeft` and `paddingTopRight` options to fit + // the display to more restricted bounds, like [`fitBounds`](#map-fitbounds). + // If `latlng` is already within the (optionally padded) display bounds, + // the map will not be panned. + panInside: function (latlng, options) { + options = options || {}; + + var paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]), + paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]), + center = this.getCenter(), + pixelCenter = this.project(center), + pixelPoint = this.project(latlng), + pixelBounds = this.getPixelBounds(), + halfPixelBounds = pixelBounds.getSize().divideBy(2), + paddedBounds = toBounds([pixelBounds.min.add(paddingTL), pixelBounds.max.subtract(paddingBR)]); + + if (!paddedBounds.contains(pixelPoint)) { + this._enforcingBounds = true; + var diff = pixelCenter.subtract(pixelPoint), + newCenter = toPoint(pixelPoint.x + diff.x, pixelPoint.y + diff.y); + + if (pixelPoint.x < paddedBounds.min.x || pixelPoint.x > paddedBounds.max.x) { + newCenter.x = pixelCenter.x - diff.x; + if (diff.x > 0) { + newCenter.x += halfPixelBounds.x - paddingTL.x; + } else { + newCenter.x -= halfPixelBounds.x - paddingBR.x; + } + } + if (pixelPoint.y < paddedBounds.min.y || pixelPoint.y > paddedBounds.max.y) { + newCenter.y = pixelCenter.y - diff.y; + if (diff.y > 0) { + newCenter.y += halfPixelBounds.y - paddingTL.y; + } else { + newCenter.y -= halfPixelBounds.y - paddingBR.y; + } + } + this.panTo(this.unproject(newCenter), options); + this._enforcingBounds = false; + } + return this; + }, + + // @method invalidateSize(options: Zoom/pan options): this + // Checks if the map container size changed and updates the map if so — + // call it after you've changed the map size dynamically, also animating + // pan by default. If `options.pan` is `false`, panning will not occur. + // If `options.debounceMoveend` is `true`, it will delay `moveend` event so + // that it doesn't happen often even if the method is called many + // times in a row. + + // @alternative + // @method invalidateSize(animate: Boolean): this + // Checks if the map container size changed and updates the map if so — + // call it after you've changed the map size dynamically, also animating + // pan by default. + invalidateSize: function (options) { + if (!this._loaded) { return this; } + + options = extend({ + animate: false, + pan: true + }, options === true ? {animate: true} : options); + + var oldSize = this.getSize(); + this._sizeChanged = true; + this._lastCenter = null; + + var newSize = this.getSize(), + oldCenter = oldSize.divideBy(2).round(), + newCenter = newSize.divideBy(2).round(), + offset = oldCenter.subtract(newCenter); + + if (!offset.x && !offset.y) { return this; } + + if (options.animate && options.pan) { + this.panBy(offset); + + } else { + if (options.pan) { + this._rawPanBy(offset); + } + + this.fire('move'); + + if (options.debounceMoveend) { + clearTimeout(this._sizeTimer); + this._sizeTimer = setTimeout(bind(this.fire, this, 'moveend'), 200); + } else { + this.fire('moveend'); + } + } + + // @section Map state change events + // @event resize: ResizeEvent + // Fired when the map is resized. + return this.fire('resize', { + oldSize: oldSize, + newSize: newSize + }); + }, + + // @section Methods for modifying map state + // @method stop(): this + // Stops the currently running `panTo` or `flyTo` animation, if any. + stop: function () { + this.setZoom(this._limitZoom(this._zoom)); + if (!this.options.zoomSnap) { + this.fire('viewreset'); + } + return this._stop(); + }, + + // @section Geolocation methods + // @method locate(options?: Locate options): this + // Tries to locate the user using the Geolocation API, firing a [`locationfound`](#map-locationfound) + // event with location data on success or a [`locationerror`](#map-locationerror) event on failure, + // and optionally sets the map view to the user's location with respect to + // detection accuracy (or to the world view if geolocation failed). + // Note that, if your page doesn't use HTTPS, this method will fail in + // modern browsers ([Chrome 50 and newer](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins)) + // See `Locate options` for more details. + locate: function (options) { + + options = this._locateOptions = extend({ + timeout: 10000, + watch: false + // setView: false + // maxZoom: + // maximumAge: 0 + // enableHighAccuracy: false + }, options); + + if (!('geolocation' in navigator)) { + this._handleGeolocationError({ + code: 0, + message: 'Geolocation not supported.' + }); + return this; + } + + var onResponse = bind(this._handleGeolocationResponse, this), + onError = bind(this._handleGeolocationError, this); + + if (options.watch) { + this._locationWatchId = + navigator.geolocation.watchPosition(onResponse, onError, options); + } else { + navigator.geolocation.getCurrentPosition(onResponse, onError, options); + } + return this; + }, + + // @method stopLocate(): this + // Stops watching location previously initiated by `map.locate({watch: true})` + // and aborts resetting the map view if map.locate was called with + // `{setView: true}`. + stopLocate: function () { + if (navigator.geolocation && navigator.geolocation.clearWatch) { + navigator.geolocation.clearWatch(this._locationWatchId); + } + if (this._locateOptions) { + this._locateOptions.setView = false; + } + return this; + }, + + _handleGeolocationError: function (error) { + var c = error.code, + message = error.message || + (c === 1 ? 'permission denied' : + (c === 2 ? 'position unavailable' : 'timeout')); + + if (this._locateOptions.setView && !this._loaded) { + this.fitWorld(); + } + + // @section Location events + // @event locationerror: ErrorEvent + // Fired when geolocation (using the [`locate`](#map-locate) method) failed. + this.fire('locationerror', { + code: c, + message: 'Geolocation error: ' + message + '.' + }); + }, + + _handleGeolocationResponse: function (pos) { + var lat = pos.coords.latitude, + lng = pos.coords.longitude, + latlng = new LatLng(lat, lng), + bounds = latlng.toBounds(pos.coords.accuracy * 2), + options = this._locateOptions; + + if (options.setView) { + var zoom = this.getBoundsZoom(bounds); + this.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : zoom); + } + + var data = { + latlng: latlng, + bounds: bounds, + timestamp: pos.timestamp + }; + + for (var i in pos.coords) { + if (typeof pos.coords[i] === 'number') { + data[i] = pos.coords[i]; + } + } + + // @event locationfound: LocationEvent + // Fired when geolocation (using the [`locate`](#map-locate) method) + // went successfully. + this.fire('locationfound', data); + }, + + // TODO Appropriate docs section? + // @section Other Methods + // @method addHandler(name: String, HandlerClass: Function): this + // Adds a new `Handler` to the map, given its name and constructor function. + addHandler: function (name, HandlerClass) { + if (!HandlerClass) { return this; } + + var handler = this[name] = new HandlerClass(this); + + this._handlers.push(handler); + + if (this.options[name]) { + handler.enable(); + } + + return this; + }, + + // @method remove(): this + // Destroys the map and clears all related event listeners. + remove: function () { + + this._initEvents(true); + + if (this._containerId !== this._container._leaflet_id) { + throw new Error('Map container is being reused by another instance'); + } + + try { + // throws error in IE6-8 + delete this._container._leaflet_id; + delete this._containerId; + } catch (e) { + /*eslint-disable */ + this._container._leaflet_id = undefined; + /* eslint-enable */ + this._containerId = undefined; + } + + if (this._locationWatchId !== undefined) { + this.stopLocate(); + } + + this._stop(); + + remove(this._mapPane); + + if (this._clearControlPos) { + this._clearControlPos(); + } + if (this._resizeRequest) { + cancelAnimFrame(this._resizeRequest); + this._resizeRequest = null; + } + + this._clearHandlers(); + + if (this._loaded) { + // @section Map state change events + // @event unload: Event + // Fired when the map is destroyed with [remove](#map-remove) method. + this.fire('unload'); + } + + var i; + for (i in this._layers) { + this._layers[i].remove(); + } + for (i in this._panes) { + remove(this._panes[i]); + } + + this._layers = []; + this._panes = []; + delete this._mapPane; + delete this._renderer; + + return this; + }, + + // @section Other Methods + // @method createPane(name: String, container?: HTMLElement): HTMLElement + // Creates a new [map pane](#map-pane) with the given name if it doesn't exist already, + // then returns it. The pane is created as a child of `container`, or + // as a child of the main map pane if not set. + createPane: function (name, container) { + var className = 'leaflet-pane' + (name ? ' leaflet-' + name.replace('Pane', '') + '-pane' : ''), + pane = create$1('div', className, container || this._mapPane); + + if (name) { + this._panes[name] = pane; + } + return pane; + }, + + // @section Methods for Getting Map State + + // @method getCenter(): LatLng + // Returns the geographical center of the map view + getCenter: function () { + this._checkIfLoaded(); + + if (this._lastCenter && !this._moved()) { + return this._lastCenter; + } + return this.layerPointToLatLng(this._getCenterLayerPoint()); + }, + + // @method getZoom(): Number + // Returns the current zoom level of the map view + getZoom: function () { + return this._zoom; + }, + + // @method getBounds(): LatLngBounds + // Returns the geographical bounds visible in the current map view + getBounds: function () { + var bounds = this.getPixelBounds(), + sw = this.unproject(bounds.getBottomLeft()), + ne = this.unproject(bounds.getTopRight()); + + return new LatLngBounds(sw, ne); + }, + + // @method getMinZoom(): Number + // Returns the minimum zoom level of the map (if set in the `minZoom` option of the map or of any layers), or `0` by default. + getMinZoom: function () { + return this.options.minZoom === undefined ? this._layersMinZoom || 0 : this.options.minZoom; + }, + + // @method getMaxZoom(): Number + // Returns the maximum zoom level of the map (if set in the `maxZoom` option of the map or of any layers). + getMaxZoom: function () { + return this.options.maxZoom === undefined ? + (this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom) : + this.options.maxZoom; + }, + + // @method getBoundsZoom(bounds: LatLngBounds, inside?: Boolean, padding?: Point): Number + // Returns the maximum zoom level on which the given bounds fit to the map + // view in its entirety. If `inside` (optional) is set to `true`, the method + // instead returns the minimum zoom level on which the map view fits into + // the given bounds in its entirety. + getBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number + bounds = toLatLngBounds(bounds); + padding = toPoint(padding || [0, 0]); + + var zoom = this.getZoom() || 0, + min = this.getMinZoom(), + max = this.getMaxZoom(), + nw = bounds.getNorthWest(), + se = bounds.getSouthEast(), + size = this.getSize().subtract(padding), + boundsSize = toBounds(this.project(se, zoom), this.project(nw, zoom)).getSize(), + snap = any3d ? this.options.zoomSnap : 1, + scalex = size.x / boundsSize.x, + scaley = size.y / boundsSize.y, + scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley); + + zoom = this.getScaleZoom(scale, zoom); + + if (snap) { + zoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level + zoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap; + } + + return Math.max(min, Math.min(max, zoom)); + }, + + // @method getSize(): Point + // Returns the current size of the map container (in pixels). + getSize: function () { + if (!this._size || this._sizeChanged) { + this._size = new Point( + this._container.clientWidth || 0, + this._container.clientHeight || 0); + + this._sizeChanged = false; + } + return this._size.clone(); + }, + + // @method getPixelBounds(): Bounds + // Returns the bounds of the current map view in projected pixel + // coordinates (sometimes useful in layer and overlay implementations). + getPixelBounds: function (center, zoom) { + var topLeftPoint = this._getTopLeftPoint(center, zoom); + return new Bounds(topLeftPoint, topLeftPoint.add(this.getSize())); + }, + + // TODO: Check semantics - isn't the pixel origin the 0,0 coord relative to + // the map pane? "left point of the map layer" can be confusing, specially + // since there can be negative offsets. + // @method getPixelOrigin(): Point + // Returns the projected pixel coordinates of the top left point of + // the map layer (useful in custom layer and overlay implementations). + getPixelOrigin: function () { + this._checkIfLoaded(); + return this._pixelOrigin; + }, + + // @method getPixelWorldBounds(zoom?: Number): Bounds + // Returns the world's bounds in pixel coordinates for zoom level `zoom`. + // If `zoom` is omitted, the map's current zoom level is used. + getPixelWorldBounds: function (zoom) { + return this.options.crs.getProjectedBounds(zoom === undefined ? this.getZoom() : zoom); + }, + + // @section Other Methods + + // @method getPane(pane: String|HTMLElement): HTMLElement + // Returns a [map pane](#map-pane), given its name or its HTML element (its identity). + getPane: function (pane) { + return typeof pane === 'string' ? this._panes[pane] : pane; + }, + + // @method getPanes(): Object + // Returns a plain object containing the names of all [panes](#map-pane) as keys and + // the panes as values. + getPanes: function () { + return this._panes; + }, + + // @method getContainer: HTMLElement + // Returns the HTML element that contains the map. + getContainer: function () { + return this._container; + }, + + + // @section Conversion Methods + + // @method getZoomScale(toZoom: Number, fromZoom: Number): Number + // Returns the scale factor to be applied to a map transition from zoom level + // `fromZoom` to `toZoom`. Used internally to help with zoom animations. + getZoomScale: function (toZoom, fromZoom) { + // TODO replace with universal implementation after refactoring projections + var crs = this.options.crs; + fromZoom = fromZoom === undefined ? this._zoom : fromZoom; + return crs.scale(toZoom) / crs.scale(fromZoom); + }, + + // @method getScaleZoom(scale: Number, fromZoom: Number): Number + // Returns the zoom level that the map would end up at, if it is at `fromZoom` + // level and everything is scaled by a factor of `scale`. Inverse of + // [`getZoomScale`](#map-getZoomScale). + getScaleZoom: function (scale, fromZoom) { + var crs = this.options.crs; + fromZoom = fromZoom === undefined ? this._zoom : fromZoom; + var zoom = crs.zoom(scale * crs.scale(fromZoom)); + return isNaN(zoom) ? Infinity : zoom; + }, + + // @method project(latlng: LatLng, zoom: Number): Point + // Projects a geographical coordinate `LatLng` according to the projection + // of the map's CRS, then scales it according to `zoom` and the CRS's + // `Transformation`. The result is pixel coordinate relative to + // the CRS origin. + project: function (latlng, zoom) { + zoom = zoom === undefined ? this._zoom : zoom; + return this.options.crs.latLngToPoint(toLatLng(latlng), zoom); + }, + + // @method unproject(point: Point, zoom: Number): LatLng + // Inverse of [`project`](#map-project). + unproject: function (point, zoom) { + zoom = zoom === undefined ? this._zoom : zoom; + return this.options.crs.pointToLatLng(toPoint(point), zoom); + }, + + // @method layerPointToLatLng(point: Point): LatLng + // Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin), + // returns the corresponding geographical coordinate (for the current zoom level). + layerPointToLatLng: function (point) { + var projectedPoint = toPoint(point).add(this.getPixelOrigin()); + return this.unproject(projectedPoint); + }, + + // @method latLngToLayerPoint(latlng: LatLng): Point + // Given a geographical coordinate, returns the corresponding pixel coordinate + // relative to the [origin pixel](#map-getpixelorigin). + latLngToLayerPoint: function (latlng) { + var projectedPoint = this.project(toLatLng(latlng))._round(); + return projectedPoint._subtract(this.getPixelOrigin()); + }, + + // @method wrapLatLng(latlng: LatLng): LatLng + // Returns a `LatLng` where `lat` and `lng` has been wrapped according to the + // map's CRS's `wrapLat` and `wrapLng` properties, if they are outside the + // CRS's bounds. + // By default this means longitude is wrapped around the dateline so its + // value is between -180 and +180 degrees. + wrapLatLng: function (latlng) { + return this.options.crs.wrapLatLng(toLatLng(latlng)); + }, + + // @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds + // Returns a `LatLngBounds` with the same size as the given one, ensuring that + // its center is within the CRS's bounds. + // By default this means the center longitude is wrapped around the dateline so its + // value is between -180 and +180 degrees, and the majority of the bounds + // overlaps the CRS's bounds. + wrapLatLngBounds: function (latlng) { + return this.options.crs.wrapLatLngBounds(toLatLngBounds(latlng)); + }, + + // @method distance(latlng1: LatLng, latlng2: LatLng): Number + // Returns the distance between two geographical coordinates according to + // the map's CRS. By default this measures distance in meters. + distance: function (latlng1, latlng2) { + return this.options.crs.distance(toLatLng(latlng1), toLatLng(latlng2)); + }, + + // @method containerPointToLayerPoint(point: Point): Point + // Given a pixel coordinate relative to the map container, returns the corresponding + // pixel coordinate relative to the [origin pixel](#map-getpixelorigin). + containerPointToLayerPoint: function (point) { // (Point) + return toPoint(point).subtract(this._getMapPanePos()); + }, + + // @method layerPointToContainerPoint(point: Point): Point + // Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin), + // returns the corresponding pixel coordinate relative to the map container. + layerPointToContainerPoint: function (point) { // (Point) + return toPoint(point).add(this._getMapPanePos()); + }, + + // @method containerPointToLatLng(point: Point): LatLng + // Given a pixel coordinate relative to the map container, returns + // the corresponding geographical coordinate (for the current zoom level). + containerPointToLatLng: function (point) { + var layerPoint = this.containerPointToLayerPoint(toPoint(point)); + return this.layerPointToLatLng(layerPoint); + }, + + // @method latLngToContainerPoint(latlng: LatLng): Point + // Given a geographical coordinate, returns the corresponding pixel coordinate + // relative to the map container. + latLngToContainerPoint: function (latlng) { + return this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng))); + }, + + // @method mouseEventToContainerPoint(ev: MouseEvent): Point + // Given a MouseEvent object, returns the pixel coordinate relative to the + // map container where the event took place. + mouseEventToContainerPoint: function (e) { + return getMousePosition(e, this._container); + }, + + // @method mouseEventToLayerPoint(ev: MouseEvent): Point + // Given a MouseEvent object, returns the pixel coordinate relative to + // the [origin pixel](#map-getpixelorigin) where the event took place. + mouseEventToLayerPoint: function (e) { + return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e)); + }, + + // @method mouseEventToLatLng(ev: MouseEvent): LatLng + // Given a MouseEvent object, returns geographical coordinate where the + // event took place. + mouseEventToLatLng: function (e) { // (MouseEvent) + return this.layerPointToLatLng(this.mouseEventToLayerPoint(e)); + }, + + + // map initialization methods + + _initContainer: function (id) { + var container = this._container = get(id); + + if (!container) { + throw new Error('Map container not found.'); + } else if (container._leaflet_id) { + throw new Error('Map container is already initialized.'); + } + + on(container, 'scroll', this._onScroll, this); + this._containerId = stamp(container); + }, + + _initLayout: function () { + var container = this._container; + + this._fadeAnimated = this.options.fadeAnimation && any3d; + + addClass(container, 'leaflet-container' + + (touch ? ' leaflet-touch' : '') + + (retina ? ' leaflet-retina' : '') + + (ielt9 ? ' leaflet-oldie' : '') + + (safari ? ' leaflet-safari' : '') + + (this._fadeAnimated ? ' leaflet-fade-anim' : '')); + + var position = getStyle(container, 'position'); + + if (position !== 'absolute' && position !== 'relative' && position !== 'fixed') { + container.style.position = 'relative'; + } + + this._initPanes(); + + if (this._initControlPos) { + this._initControlPos(); + } + }, + + _initPanes: function () { + var panes = this._panes = {}; + this._paneRenderers = {}; + + // @section + // + // Panes are DOM elements used to control the ordering of layers on the map. You + // can access panes with [`map.getPane`](#map-getpane) or + // [`map.getPanes`](#map-getpanes) methods. New panes can be created with the + // [`map.createPane`](#map-createpane) method. + // + // Every map has the following default panes that differ only in zIndex. + // + // @pane mapPane: HTMLElement = 'auto' + // Pane that contains all other map panes + + this._mapPane = this.createPane('mapPane', this._container); + setPosition(this._mapPane, new Point(0, 0)); + + // @pane tilePane: HTMLElement = 200 + // Pane for `GridLayer`s and `TileLayer`s + this.createPane('tilePane'); + // @pane overlayPane: HTMLElement = 400 + // Pane for vectors (`Path`s, like `Polyline`s and `Polygon`s), `ImageOverlay`s and `VideoOverlay`s + this.createPane('shadowPane'); + // @pane shadowPane: HTMLElement = 500 + // Pane for overlay shadows (e.g. `Marker` shadows) + this.createPane('overlayPane'); + // @pane markerPane: HTMLElement = 600 + // Pane for `Icon`s of `Marker`s + this.createPane('markerPane'); + // @pane tooltipPane: HTMLElement = 650 + // Pane for `Tooltip`s. + this.createPane('tooltipPane'); + // @pane popupPane: HTMLElement = 700 + // Pane for `Popup`s. + this.createPane('popupPane'); + + if (!this.options.markerZoomAnimation) { + addClass(panes.markerPane, 'leaflet-zoom-hide'); + addClass(panes.shadowPane, 'leaflet-zoom-hide'); + } + }, + + + // private methods that modify map state + + // @section Map state change events + _resetView: function (center, zoom) { + setPosition(this._mapPane, new Point(0, 0)); + + var loading = !this._loaded; + this._loaded = true; + zoom = this._limitZoom(zoom); + + this.fire('viewprereset'); + + var zoomChanged = this._zoom !== zoom; + this + ._moveStart(zoomChanged, false) + ._move(center, zoom) + ._moveEnd(zoomChanged); + + // @event viewreset: Event + // Fired when the map needs to redraw its content (this usually happens + // on map zoom or load). Very useful for creating custom overlays. + this.fire('viewreset'); + + // @event load: Event + // Fired when the map is initialized (when its center and zoom are set + // for the first time). + if (loading) { + this.fire('load'); + } + }, + + _moveStart: function (zoomChanged, noMoveStart) { + // @event zoomstart: Event + // Fired when the map zoom is about to change (e.g. before zoom animation). + // @event movestart: Event + // Fired when the view of the map starts changing (e.g. user starts dragging the map). + if (zoomChanged) { + this.fire('zoomstart'); + } + if (!noMoveStart) { + this.fire('movestart'); + } + return this; + }, + + _move: function (center, zoom, data) { + if (zoom === undefined) { + zoom = this._zoom; + } + var zoomChanged = this._zoom !== zoom; + + this._zoom = zoom; + this._lastCenter = center; + this._pixelOrigin = this._getNewPixelOrigin(center); + + // @event zoom: Event + // Fired repeatedly during any change in zoom level, including zoom + // and fly animations. + if (zoomChanged || (data && data.pinch)) { // Always fire 'zoom' if pinching because #3530 + this.fire('zoom', data); + } + + // @event move: Event + // Fired repeatedly during any movement of the map, including pan and + // fly animations. + return this.fire('move', data); + }, + + _moveEnd: function (zoomChanged) { + // @event zoomend: Event + // Fired when the map has changed, after any animations. + if (zoomChanged) { + this.fire('zoomend'); + } + + // @event moveend: Event + // Fired when the center of the map stops changing (e.g. user stopped + // dragging the map). + return this.fire('moveend'); + }, + + _stop: function () { + cancelAnimFrame(this._flyToFrame); + if (this._panAnim) { + this._panAnim.stop(); + } + return this; + }, + + _rawPanBy: function (offset) { + setPosition(this._mapPane, this._getMapPanePos().subtract(offset)); + }, + + _getZoomSpan: function () { + return this.getMaxZoom() - this.getMinZoom(); + }, + + _panInsideMaxBounds: function () { + if (!this._enforcingBounds) { + this.panInsideBounds(this.options.maxBounds); + } + }, + + _checkIfLoaded: function () { + if (!this._loaded) { + throw new Error('Set map center and zoom first.'); + } + }, + + // DOM event handling + + // @section Interaction events + _initEvents: function (remove$$1) { + this._targets = {}; + this._targets[stamp(this._container)] = this; + + var onOff = remove$$1 ? off : on; + + // @event click: MouseEvent + // Fired when the user clicks (or taps) the map. + // @event dblclick: MouseEvent + // Fired when the user double-clicks (or double-taps) the map. + // @event mousedown: MouseEvent + // Fired when the user pushes the mouse button on the map. + // @event mouseup: MouseEvent + // Fired when the user releases the mouse button on the map. + // @event mouseover: MouseEvent + // Fired when the mouse enters the map. + // @event mouseout: MouseEvent + // Fired when the mouse leaves the map. + // @event mousemove: MouseEvent + // Fired while the mouse moves over the map. + // @event contextmenu: MouseEvent + // Fired when the user pushes the right mouse button on the map, prevents + // default browser context menu from showing if there are listeners on + // this event. Also fired on mobile when the user holds a single touch + // for a second (also called long press). + // @event keypress: KeyboardEvent + // Fired when the user presses a key from the keyboard that produces a character value while the map is focused. + // @event keydown: KeyboardEvent + // Fired when the user presses a key from the keyboard while the map is focused. Unlike the `keypress` event, + // the `keydown` event is fired for keys that produce a character value and for keys + // that do not produce a character value. + // @event keyup: KeyboardEvent + // Fired when the user releases a key from the keyboard while the map is focused. + onOff(this._container, 'click dblclick mousedown mouseup ' + + 'mouseover mouseout mousemove contextmenu keypress keydown keyup', this._handleDOMEvent, this); + + if (this.options.trackResize) { + onOff(window, 'resize', this._onResize, this); + } + + if (any3d && this.options.transform3DLimit) { + (remove$$1 ? this.off : this.on).call(this, 'moveend', this._onMoveEnd); + } + }, + + _onResize: function () { + cancelAnimFrame(this._resizeRequest); + this._resizeRequest = requestAnimFrame( + function () { this.invalidateSize({debounceMoveend: true}); }, this); + }, + + _onScroll: function () { + this._container.scrollTop = 0; + this._container.scrollLeft = 0; + }, + + _onMoveEnd: function () { + var pos = this._getMapPanePos(); + if (Math.max(Math.abs(pos.x), Math.abs(pos.y)) >= this.options.transform3DLimit) { + // https://bugzilla.mozilla.org/show_bug.cgi?id=1203873 but Webkit also have + // a pixel offset on very high values, see: http://jsfiddle.net/dg6r5hhb/ + this._resetView(this.getCenter(), this.getZoom()); + } + }, + + _findEventTargets: function (e, type) { + var targets = [], + target, + isHover = type === 'mouseout' || type === 'mouseover', + src = e.target || e.srcElement, + dragging = false; + + while (src) { + target = this._targets[stamp(src)]; + if (target && (type === 'click' || type === 'preclick') && !e._simulated && this._draggableMoved(target)) { + // Prevent firing click after you just dragged an object. + dragging = true; + break; + } + if (target && target.listens(type, true)) { + if (isHover && !isExternalTarget(src, e)) { break; } + targets.push(target); + if (isHover) { break; } + } + if (src === this._container) { break; } + src = src.parentNode; + } + if (!targets.length && !dragging && !isHover && isExternalTarget(src, e)) { + targets = [this]; + } + return targets; + }, + + _handleDOMEvent: function (e) { + if (!this._loaded || skipped(e)) { return; } + + var type = e.type; + + if (type === 'mousedown' || type === 'keypress' || type === 'keyup' || type === 'keydown') { + // prevents outline when clicking on keyboard-focusable element + preventOutline(e.target || e.srcElement); + } + + this._fireDOMEvent(e, type); + }, + + _mouseEvents: ['click', 'dblclick', 'mouseover', 'mouseout', 'contextmenu'], + + _fireDOMEvent: function (e, type, targets) { + + if (e.type === 'click') { + // Fire a synthetic 'preclick' event which propagates up (mainly for closing popups). + // @event preclick: MouseEvent + // Fired before mouse click on the map (sometimes useful when you + // want something to happen on click before any existing click + // handlers start running). + var synth = extend({}, e); + synth.type = 'preclick'; + this._fireDOMEvent(synth, synth.type, targets); + } + + if (e._stopped) { return; } + + // Find the layer the event is propagating from and its parents. + targets = (targets || []).concat(this._findEventTargets(e, type)); + + if (!targets.length) { return; } + + var target = targets[0]; + if (type === 'contextmenu' && target.listens(type, true)) { + preventDefault(e); + } + + var data = { + originalEvent: e + }; + + if (e.type !== 'keypress' && e.type !== 'keydown' && e.type !== 'keyup') { + var isMarker = target.getLatLng && (!target._radius || target._radius <= 10); + data.containerPoint = isMarker ? + this.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e); + data.layerPoint = this.containerPointToLayerPoint(data.containerPoint); + data.latlng = isMarker ? target.getLatLng() : this.layerPointToLatLng(data.layerPoint); + } + + for (var i = 0; i < targets.length; i++) { + targets[i].fire(type, data, true); + if (data.originalEvent._stopped || + (targets[i].options.bubblingMouseEvents === false && indexOf(this._mouseEvents, type) !== -1)) { return; } + } + }, + + _draggableMoved: function (obj) { + obj = obj.dragging && obj.dragging.enabled() ? obj : this; + return (obj.dragging && obj.dragging.moved()) || (this.boxZoom && this.boxZoom.moved()); + }, + + _clearHandlers: function () { + for (var i = 0, len = this._handlers.length; i < len; i++) { + this._handlers[i].disable(); + } + }, + + // @section Other Methods + + // @method whenReady(fn: Function, context?: Object): this + // Runs the given function `fn` when the map gets initialized with + // a view (center and zoom) and at least one layer, or immediately + // if it's already initialized, optionally passing a function context. + whenReady: function (callback, context) { + if (this._loaded) { + callback.call(context || this, {target: this}); + } else { + this.on('load', callback, context); + } + return this; + }, + + + // private methods for getting map state + + _getMapPanePos: function () { + return getPosition(this._mapPane) || new Point(0, 0); + }, + + _moved: function () { + var pos = this._getMapPanePos(); + return pos && !pos.equals([0, 0]); + }, + + _getTopLeftPoint: function (center, zoom) { + var pixelOrigin = center && zoom !== undefined ? + this._getNewPixelOrigin(center, zoom) : + this.getPixelOrigin(); + return pixelOrigin.subtract(this._getMapPanePos()); + }, + + _getNewPixelOrigin: function (center, zoom) { + var viewHalf = this.getSize()._divideBy(2); + return this.project(center, zoom)._subtract(viewHalf)._add(this._getMapPanePos())._round(); + }, + + _latLngToNewLayerPoint: function (latlng, zoom, center) { + var topLeft = this._getNewPixelOrigin(center, zoom); + return this.project(latlng, zoom)._subtract(topLeft); + }, + + _latLngBoundsToNewLayerBounds: function (latLngBounds, zoom, center) { + var topLeft = this._getNewPixelOrigin(center, zoom); + return toBounds([ + this.project(latLngBounds.getSouthWest(), zoom)._subtract(topLeft), + this.project(latLngBounds.getNorthWest(), zoom)._subtract(topLeft), + this.project(latLngBounds.getSouthEast(), zoom)._subtract(topLeft), + this.project(latLngBounds.getNorthEast(), zoom)._subtract(topLeft) + ]); + }, + + // layer point of the current center + _getCenterLayerPoint: function () { + return this.containerPointToLayerPoint(this.getSize()._divideBy(2)); + }, + + // offset of the specified place to the current center in pixels + _getCenterOffset: function (latlng) { + return this.latLngToLayerPoint(latlng).subtract(this._getCenterLayerPoint()); + }, + + // adjust center for view to get inside bounds + _limitCenter: function (center, zoom, bounds) { + + if (!bounds) { return center; } + + var centerPoint = this.project(center, zoom), + viewHalf = this.getSize().divideBy(2), + viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)), + offset = this._getBoundsOffset(viewBounds, bounds, zoom); + + // If offset is less than a pixel, ignore. + // This prevents unstable projections from getting into + // an infinite loop of tiny offsets. + if (offset.round().equals([0, 0])) { + return center; + } + + return this.unproject(centerPoint.add(offset), zoom); + }, + + // adjust offset for view to get inside bounds + _limitOffset: function (offset, bounds) { + if (!bounds) { return offset; } + + var viewBounds = this.getPixelBounds(), + newBounds = new Bounds(viewBounds.min.add(offset), viewBounds.max.add(offset)); + + return offset.add(this._getBoundsOffset(newBounds, bounds)); + }, + + // returns offset needed for pxBounds to get inside maxBounds at a specified zoom + _getBoundsOffset: function (pxBounds, maxBounds, zoom) { + var projectedMaxBounds = toBounds( + this.project(maxBounds.getNorthEast(), zoom), + this.project(maxBounds.getSouthWest(), zoom) + ), + minOffset = projectedMaxBounds.min.subtract(pxBounds.min), + maxOffset = projectedMaxBounds.max.subtract(pxBounds.max), + + dx = this._rebound(minOffset.x, -maxOffset.x), + dy = this._rebound(minOffset.y, -maxOffset.y); + + return new Point(dx, dy); + }, + + _rebound: function (left, right) { + return left + right > 0 ? + Math.round(left - right) / 2 : + Math.max(0, Math.ceil(left)) - Math.max(0, Math.floor(right)); + }, + + _limitZoom: function (zoom) { + var min = this.getMinZoom(), + max = this.getMaxZoom(), + snap = any3d ? this.options.zoomSnap : 1; + if (snap) { + zoom = Math.round(zoom / snap) * snap; + } + return Math.max(min, Math.min(max, zoom)); + }, + + _onPanTransitionStep: function () { + this.fire('move'); + }, + + _onPanTransitionEnd: function () { + removeClass(this._mapPane, 'leaflet-pan-anim'); + this.fire('moveend'); + }, + + _tryAnimatedPan: function (center, options) { + // difference between the new and current centers in pixels + var offset = this._getCenterOffset(center)._trunc(); + + // don't animate too far unless animate: true specified in options + if ((options && options.animate) !== true && !this.getSize().contains(offset)) { return false; } + + this.panBy(offset, options); + + return true; + }, + + _createAnimProxy: function () { + + var proxy = this._proxy = create$1('div', 'leaflet-proxy leaflet-zoom-animated'); + this._panes.mapPane.appendChild(proxy); + + this.on('zoomanim', function (e) { + var prop = TRANSFORM, + transform = this._proxy.style[prop]; + + setTransform(this._proxy, this.project(e.center, e.zoom), this.getZoomScale(e.zoom, 1)); + + // workaround for case when transform is the same and so transitionend event is not fired + if (transform === this._proxy.style[prop] && this._animatingZoom) { + this._onZoomTransitionEnd(); + } + }, this); + + this.on('load moveend', this._animMoveEnd, this); + + this._on('unload', this._destroyAnimProxy, this); + }, + + _destroyAnimProxy: function () { + remove(this._proxy); + this.off('load moveend', this._animMoveEnd, this); + delete this._proxy; + }, + + _animMoveEnd: function () { + var c = this.getCenter(), + z = this.getZoom(); + setTransform(this._proxy, this.project(c, z), this.getZoomScale(z, 1)); + }, + + _catchTransitionEnd: function (e) { + if (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) { + this._onZoomTransitionEnd(); + } + }, + + _nothingToAnimate: function () { + return !this._container.getElementsByClassName('leaflet-zoom-animated').length; + }, + + _tryAnimatedZoom: function (center, zoom, options) { + + if (this._animatingZoom) { return true; } + + options = options || {}; + + // don't animate if disabled, not supported or zoom difference is too large + if (!this._zoomAnimated || options.animate === false || this._nothingToAnimate() || + Math.abs(zoom - this._zoom) > this.options.zoomAnimationThreshold) { return false; } + + // offset is the pixel coords of the zoom origin relative to the current center + var scale = this.getZoomScale(zoom), + offset = this._getCenterOffset(center)._divideBy(1 - 1 / scale); + + // don't animate if the zoom origin isn't within one screen from the current center, unless forced + if (options.animate !== true && !this.getSize().contains(offset)) { return false; } + + requestAnimFrame(function () { + this + ._moveStart(true, false) + ._animateZoom(center, zoom, true); + }, this); + + return true; + }, + + _animateZoom: function (center, zoom, startAnim, noUpdate) { + if (!this._mapPane) { return; } + + if (startAnim) { + this._animatingZoom = true; + + // remember what center/zoom to set after animation + this._animateToCenter = center; + this._animateToZoom = zoom; + + addClass(this._mapPane, 'leaflet-zoom-anim'); + } + + // @section Other Events + // @event zoomanim: ZoomAnimEvent + // Fired at least once per zoom animation. For continuous zoom, like pinch zooming, fired once per frame during zoom. + this.fire('zoomanim', { + center: center, + zoom: zoom, + noUpdate: noUpdate + }); + + // Work around webkit not firing 'transitionend', see https://github.com/Leaflet/Leaflet/issues/3689, 2693 + setTimeout(bind(this._onZoomTransitionEnd, this), 250); + }, + + _onZoomTransitionEnd: function () { + if (!this._animatingZoom) { return; } + + if (this._mapPane) { + removeClass(this._mapPane, 'leaflet-zoom-anim'); + } + + this._animatingZoom = false; + + this._move(this._animateToCenter, this._animateToZoom); + + // This anim frame should prevent an obscure iOS webkit tile loading race condition. + requestAnimFrame(function () { + this._moveEnd(true); + }, this); + } +}); + +// @section + +// @factory L.map(id: String, options?: Map options) +// Instantiates a map object given the DOM ID of a `
    ` element +// and optionally an object literal with `Map options`. +// +// @alternative +// @factory L.map(el: HTMLElement, options?: Map options) +// Instantiates a map object given an instance of a `
    ` HTML element +// and optionally an object literal with `Map options`. +function createMap(id, options) { + return new Map(id, options); +} + +/* + * @class Control + * @aka L.Control + * @inherits Class + * + * L.Control is a base class for implementing map controls. Handles positioning. + * All other controls extend from this class. + */ + +var Control = Class.extend({ + // @section + // @aka Control options + options: { + // @option position: String = 'topright' + // The position of the control (one of the map corners). Possible values are `'topleft'`, + // `'topright'`, `'bottomleft'` or `'bottomright'` + position: 'topright' + }, + + initialize: function (options) { + setOptions(this, options); + }, + + /* @section + * Classes extending L.Control will inherit the following methods: + * + * @method getPosition: string + * Returns the position of the control. + */ + getPosition: function () { + return this.options.position; + }, + + // @method setPosition(position: string): this + // Sets the position of the control. + setPosition: function (position) { + var map = this._map; + + if (map) { + map.removeControl(this); + } + + this.options.position = position; + + if (map) { + map.addControl(this); + } + + return this; + }, + + // @method getContainer: HTMLElement + // Returns the HTMLElement that contains the control. + getContainer: function () { + return this._container; + }, + + // @method addTo(map: Map): this + // Adds the control to the given map. + addTo: function (map) { + this.remove(); + this._map = map; + + var container = this._container = this.onAdd(map), + pos = this.getPosition(), + corner = map._controlCorners[pos]; + + addClass(container, 'leaflet-control'); + + if (pos.indexOf('bottom') !== -1) { + corner.insertBefore(container, corner.firstChild); + } else { + corner.appendChild(container); + } + + this._map.on('unload', this.remove, this); + + return this; + }, + + // @method remove: this + // Removes the control from the map it is currently active on. + remove: function () { + if (!this._map) { + return this; + } + + remove(this._container); + + if (this.onRemove) { + this.onRemove(this._map); + } + + this._map.off('unload', this.remove, this); + this._map = null; + + return this; + }, + + _refocusOnMap: function (e) { + // if map exists and event is not a keyboard event + if (this._map && e && e.screenX > 0 && e.screenY > 0) { + this._map.getContainer().focus(); + } + } +}); + +var control = function (options) { + return new Control(options); +}; + +/* @section Extension methods + * @uninheritable + * + * Every control should extend from `L.Control` and (re-)implement the following methods. + * + * @method onAdd(map: Map): HTMLElement + * Should return the container DOM element for the control and add listeners on relevant map events. Called on [`control.addTo(map)`](#control-addTo). + * + * @method onRemove(map: Map) + * Optional method. Should contain all clean up code that removes the listeners previously added in [`onAdd`](#control-onadd). Called on [`control.remove()`](#control-remove). + */ + +/* @namespace Map + * @section Methods for Layers and Controls + */ +Map.include({ + // @method addControl(control: Control): this + // Adds the given control to the map + addControl: function (control) { + control.addTo(this); + return this; + }, + + // @method removeControl(control: Control): this + // Removes the given control from the map + removeControl: function (control) { + control.remove(); + return this; + }, + + _initControlPos: function () { + var corners = this._controlCorners = {}, + l = 'leaflet-', + container = this._controlContainer = + create$1('div', l + 'control-container', this._container); + + function createCorner(vSide, hSide) { + var className = l + vSide + ' ' + l + hSide; + + corners[vSide + hSide] = create$1('div', className, container); + } + + createCorner('top', 'left'); + createCorner('top', 'right'); + createCorner('bottom', 'left'); + createCorner('bottom', 'right'); + }, + + _clearControlPos: function () { + for (var i in this._controlCorners) { + remove(this._controlCorners[i]); + } + remove(this._controlContainer); + delete this._controlCorners; + delete this._controlContainer; + } +}); + +/* + * @class Control.Layers + * @aka L.Control.Layers + * @inherits Control + * + * The layers control gives users the ability to switch between different base layers and switch overlays on/off (check out the [detailed example](http://leafletjs.com/examples/layers-control/)). Extends `Control`. + * + * @example + * + * ```js + * var baseLayers = { + * "Mapbox": mapbox, + * "OpenStreetMap": osm + * }; + * + * var overlays = { + * "Marker": marker, + * "Roads": roadsLayer + * }; + * + * L.control.layers(baseLayers, overlays).addTo(map); + * ``` + * + * The `baseLayers` and `overlays` parameters are object literals with layer names as keys and `Layer` objects as values: + * + * ```js + * { + * "": layer1, + * "": layer2 + * } + * ``` + * + * The layer names can contain HTML, which allows you to add additional styling to the items: + * + * ```js + * {" My Layer": myLayer} + * ``` + */ + +var Layers = Control.extend({ + // @section + // @aka Control.Layers options + options: { + // @option collapsed: Boolean = true + // If `true`, the control will be collapsed into an icon and expanded on mouse hover or touch. + collapsed: true, + position: 'topright', + + // @option autoZIndex: Boolean = true + // If `true`, the control will assign zIndexes in increasing order to all of its layers so that the order is preserved when switching them on/off. + autoZIndex: true, + + // @option hideSingleBase: Boolean = false + // If `true`, the base layers in the control will be hidden when there is only one. + hideSingleBase: false, + + // @option sortLayers: Boolean = false + // Whether to sort the layers. When `false`, layers will keep the order + // in which they were added to the control. + sortLayers: false, + + // @option sortFunction: Function = * + // A [compare function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) + // that will be used for sorting the layers, when `sortLayers` is `true`. + // The function receives both the `L.Layer` instances and their names, as in + // `sortFunction(layerA, layerB, nameA, nameB)`. + // By default, it sorts layers alphabetically by their name. + sortFunction: function (layerA, layerB, nameA, nameB) { + return nameA < nameB ? -1 : (nameB < nameA ? 1 : 0); + } + }, + + initialize: function (baseLayers, overlays, options) { + setOptions(this, options); + + this._layerControlInputs = []; + this._layers = []; + this._lastZIndex = 0; + this._handlingClick = false; + + for (var i in baseLayers) { + this._addLayer(baseLayers[i], i); + } + + for (i in overlays) { + this._addLayer(overlays[i], i, true); + } + }, + + onAdd: function (map) { + this._initLayout(); + this._update(); + + this._map = map; + map.on('zoomend', this._checkDisabledLayers, this); + + for (var i = 0; i < this._layers.length; i++) { + this._layers[i].layer.on('add remove', this._onLayerChange, this); + } + + return this._container; + }, + + addTo: function (map) { + Control.prototype.addTo.call(this, map); + // Trigger expand after Layers Control has been inserted into DOM so that is now has an actual height. + return this._expandIfNotCollapsed(); + }, + + onRemove: function () { + this._map.off('zoomend', this._checkDisabledLayers, this); + + for (var i = 0; i < this._layers.length; i++) { + this._layers[i].layer.off('add remove', this._onLayerChange, this); + } + }, + + // @method addBaseLayer(layer: Layer, name: String): this + // Adds a base layer (radio button entry) with the given name to the control. + addBaseLayer: function (layer, name) { + this._addLayer(layer, name); + return (this._map) ? this._update() : this; + }, + + // @method addOverlay(layer: Layer, name: String): this + // Adds an overlay (checkbox entry) with the given name to the control. + addOverlay: function (layer, name) { + this._addLayer(layer, name, true); + return (this._map) ? this._update() : this; + }, + + // @method removeLayer(layer: Layer): this + // Remove the given layer from the control. + removeLayer: function (layer) { + layer.off('add remove', this._onLayerChange, this); + + var obj = this._getLayer(stamp(layer)); + if (obj) { + this._layers.splice(this._layers.indexOf(obj), 1); + } + return (this._map) ? this._update() : this; + }, + + // @method expand(): this + // Expand the control container if collapsed. + expand: function () { + addClass(this._container, 'leaflet-control-layers-expanded'); + this._section.style.height = null; + var acceptableHeight = this._map.getSize().y - (this._container.offsetTop + 50); + if (acceptableHeight < this._section.clientHeight) { + addClass(this._section, 'leaflet-control-layers-scrollbar'); + this._section.style.height = acceptableHeight + 'px'; + } else { + removeClass(this._section, 'leaflet-control-layers-scrollbar'); + } + this._checkDisabledLayers(); + return this; + }, + + // @method collapse(): this + // Collapse the control container if expanded. + collapse: function () { + removeClass(this._container, 'leaflet-control-layers-expanded'); + return this; + }, + + _initLayout: function () { + var className = 'leaflet-control-layers', + container = this._container = create$1('div', className), + collapsed = this.options.collapsed; + + // makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released + container.setAttribute('aria-haspopup', true); + + disableClickPropagation(container); + disableScrollPropagation(container); + + var section = this._section = create$1('section', className + '-list'); + + if (collapsed) { + this._map.on('click', this.collapse, this); + + if (!android) { + on(container, { + mouseenter: this.expand, + mouseleave: this.collapse + }, this); + } + } + + var link = this._layersLink = create$1('a', className + '-toggle', container); + link.href = '#'; + link.title = 'Layers'; + + if (touch) { + on(link, 'click', stop); + on(link, 'click', this.expand, this); + } else { + on(link, 'focus', this.expand, this); + } + + if (!collapsed) { + this.expand(); + } + + this._baseLayersList = create$1('div', className + '-base', section); + this._separator = create$1('div', className + '-separator', section); + this._overlaysList = create$1('div', className + '-overlays', section); + + container.appendChild(section); + }, + + _getLayer: function (id) { + for (var i = 0; i < this._layers.length; i++) { + + if (this._layers[i] && stamp(this._layers[i].layer) === id) { + return this._layers[i]; + } + } + }, + + _addLayer: function (layer, name, overlay) { + if (this._map) { + layer.on('add remove', this._onLayerChange, this); + } + + this._layers.push({ + layer: layer, + name: name, + overlay: overlay + }); + + if (this.options.sortLayers) { + this._layers.sort(bind(function (a, b) { + return this.options.sortFunction(a.layer, b.layer, a.name, b.name); + }, this)); + } + + if (this.options.autoZIndex && layer.setZIndex) { + this._lastZIndex++; + layer.setZIndex(this._lastZIndex); + } + + this._expandIfNotCollapsed(); + }, + + _update: function () { + if (!this._container) { return this; } + + empty(this._baseLayersList); + empty(this._overlaysList); + + this._layerControlInputs = []; + var baseLayersPresent, overlaysPresent, i, obj, baseLayersCount = 0; + + for (i = 0; i < this._layers.length; i++) { + obj = this._layers[i]; + this._addItem(obj); + overlaysPresent = overlaysPresent || obj.overlay; + baseLayersPresent = baseLayersPresent || !obj.overlay; + baseLayersCount += !obj.overlay ? 1 : 0; + } + + // Hide base layers section if there's only one layer. + if (this.options.hideSingleBase) { + baseLayersPresent = baseLayersPresent && baseLayersCount > 1; + this._baseLayersList.style.display = baseLayersPresent ? '' : 'none'; + } + + this._separator.style.display = overlaysPresent && baseLayersPresent ? '' : 'none'; + + return this; + }, + + _onLayerChange: function (e) { + if (!this._handlingClick) { + this._update(); + } + + var obj = this._getLayer(stamp(e.target)); + + // @namespace Map + // @section Layer events + // @event baselayerchange: LayersControlEvent + // Fired when the base layer is changed through the [layer control](#control-layers). + // @event overlayadd: LayersControlEvent + // Fired when an overlay is selected through the [layer control](#control-layers). + // @event overlayremove: LayersControlEvent + // Fired when an overlay is deselected through the [layer control](#control-layers). + // @namespace Control.Layers + var type = obj.overlay ? + (e.type === 'add' ? 'overlayadd' : 'overlayremove') : + (e.type === 'add' ? 'baselayerchange' : null); + + if (type) { + this._map.fire(type, obj); + } + }, + + // IE7 bugs out if you create a radio dynamically, so you have to do it this hacky way (see http://bit.ly/PqYLBe) + _createRadioElement: function (name, checked) { + + var radioHtml = ''; + + var radioFragment = document.createElement('div'); + radioFragment.innerHTML = radioHtml; + + return radioFragment.firstChild; + }, + + _addItem: function (obj) { + var label = document.createElement('label'), + checked = this._map.hasLayer(obj.layer), + input; + + if (obj.overlay) { + input = document.createElement('input'); + input.type = 'checkbox'; + input.className = 'leaflet-control-layers-selector'; + input.defaultChecked = checked; + } else { + input = this._createRadioElement('leaflet-base-layers_' + stamp(this), checked); + } + + this._layerControlInputs.push(input); + input.layerId = stamp(obj.layer); + + on(input, 'click', this._onInputClick, this); + + var name = document.createElement('span'); + name.innerHTML = ' ' + obj.name; + + // Helps from preventing layer control flicker when checkboxes are disabled + // https://github.com/Leaflet/Leaflet/issues/2771 + var holder = document.createElement('div'); + + label.appendChild(holder); + holder.appendChild(input); + holder.appendChild(name); + + var container = obj.overlay ? this._overlaysList : this._baseLayersList; + container.appendChild(label); + + this._checkDisabledLayers(); + return label; + }, + + _onInputClick: function () { + var inputs = this._layerControlInputs, + input, layer; + var addedLayers = [], + removedLayers = []; + + this._handlingClick = true; + + for (var i = inputs.length - 1; i >= 0; i--) { + input = inputs[i]; + layer = this._getLayer(input.layerId).layer; + + if (input.checked) { + addedLayers.push(layer); + } else if (!input.checked) { + removedLayers.push(layer); + } + } + + // Bugfix issue 2318: Should remove all old layers before readding new ones + for (i = 0; i < removedLayers.length; i++) { + if (this._map.hasLayer(removedLayers[i])) { + this._map.removeLayer(removedLayers[i]); + } + } + for (i = 0; i < addedLayers.length; i++) { + if (!this._map.hasLayer(addedLayers[i])) { + this._map.addLayer(addedLayers[i]); + } + } + + this._handlingClick = false; + + this._refocusOnMap(); + }, + + _checkDisabledLayers: function () { + var inputs = this._layerControlInputs, + input, + layer, + zoom = this._map.getZoom(); + + for (var i = inputs.length - 1; i >= 0; i--) { + input = inputs[i]; + layer = this._getLayer(input.layerId).layer; + input.disabled = (layer.options.minZoom !== undefined && zoom < layer.options.minZoom) || + (layer.options.maxZoom !== undefined && zoom > layer.options.maxZoom); + + } + }, + + _expandIfNotCollapsed: function () { + if (this._map && !this.options.collapsed) { + this.expand(); + } + return this; + }, + + _expand: function () { + // Backward compatibility, remove me in 1.1. + return this.expand(); + }, + + _collapse: function () { + // Backward compatibility, remove me in 1.1. + return this.collapse(); + } + +}); + + +// @factory L.control.layers(baselayers?: Object, overlays?: Object, options?: Control.Layers options) +// Creates a layers control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation. +var layers = function (baseLayers, overlays, options) { + return new Layers(baseLayers, overlays, options); +}; + +/* + * @class Control.Zoom + * @aka L.Control.Zoom + * @inherits Control + * + * A basic zoom control with two buttons (zoom in and zoom out). It is put on the map by default unless you set its [`zoomControl` option](#map-zoomcontrol) to `false`. Extends `Control`. + */ + +var Zoom = Control.extend({ + // @section + // @aka Control.Zoom options + options: { + position: 'topleft', + + // @option zoomInText: String = '+' + // The text set on the 'zoom in' button. + zoomInText: '+', + + // @option zoomInTitle: String = 'Zoom in' + // The title set on the 'zoom in' button. + zoomInTitle: 'Zoom in', + + // @option zoomOutText: String = '−' + // The text set on the 'zoom out' button. + zoomOutText: '−', + + // @option zoomOutTitle: String = 'Zoom out' + // The title set on the 'zoom out' button. + zoomOutTitle: 'Zoom out' + }, + + onAdd: function (map) { + var zoomName = 'leaflet-control-zoom', + container = create$1('div', zoomName + ' leaflet-bar'), + options = this.options; + + this._zoomInButton = this._createButton(options.zoomInText, options.zoomInTitle, + zoomName + '-in', container, this._zoomIn); + this._zoomOutButton = this._createButton(options.zoomOutText, options.zoomOutTitle, + zoomName + '-out', container, this._zoomOut); + + this._updateDisabled(); + map.on('zoomend zoomlevelschange', this._updateDisabled, this); + + return container; + }, + + onRemove: function (map) { + map.off('zoomend zoomlevelschange', this._updateDisabled, this); + }, + + disable: function () { + this._disabled = true; + this._updateDisabled(); + return this; + }, + + enable: function () { + this._disabled = false; + this._updateDisabled(); + return this; + }, + + _zoomIn: function (e) { + if (!this._disabled && this._map._zoom < this._map.getMaxZoom()) { + this._map.zoomIn(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1)); + } + }, + + _zoomOut: function (e) { + if (!this._disabled && this._map._zoom > this._map.getMinZoom()) { + this._map.zoomOut(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1)); + } + }, + + _createButton: function (html, title, className, container, fn) { + var link = create$1('a', className, container); + link.innerHTML = html; + link.href = '#'; + link.title = title; + + /* + * Will force screen readers like VoiceOver to read this as "Zoom in - button" + */ + link.setAttribute('role', 'button'); + link.setAttribute('aria-label', title); + + disableClickPropagation(link); + on(link, 'click', stop); + on(link, 'click', fn, this); + on(link, 'click', this._refocusOnMap, this); + + return link; + }, + + _updateDisabled: function () { + var map = this._map, + className = 'leaflet-disabled'; + + removeClass(this._zoomInButton, className); + removeClass(this._zoomOutButton, className); + + if (this._disabled || map._zoom === map.getMinZoom()) { + addClass(this._zoomOutButton, className); + } + if (this._disabled || map._zoom === map.getMaxZoom()) { + addClass(this._zoomInButton, className); + } + } +}); + +// @namespace Map +// @section Control options +// @option zoomControl: Boolean = true +// Whether a [zoom control](#control-zoom) is added to the map by default. +Map.mergeOptions({ + zoomControl: true +}); + +Map.addInitHook(function () { + if (this.options.zoomControl) { + // @section Controls + // @property zoomControl: Control.Zoom + // The default zoom control (only available if the + // [`zoomControl` option](#map-zoomcontrol) was `true` when creating the map). + this.zoomControl = new Zoom(); + this.addControl(this.zoomControl); + } +}); + +// @namespace Control.Zoom +// @factory L.control.zoom(options: Control.Zoom options) +// Creates a zoom control +var zoom = function (options) { + return new Zoom(options); +}; + +/* + * @class Control.Scale + * @aka L.Control.Scale + * @inherits Control + * + * A simple scale control that shows the scale of the current center of screen in metric (m/km) and imperial (mi/ft) systems. Extends `Control`. + * + * @example + * + * ```js + * L.control.scale().addTo(map); + * ``` + */ + +var Scale = Control.extend({ + // @section + // @aka Control.Scale options + options: { + position: 'bottomleft', + + // @option maxWidth: Number = 100 + // Maximum width of the control in pixels. The width is set dynamically to show round values (e.g. 100, 200, 500). + maxWidth: 100, + + // @option metric: Boolean = True + // Whether to show the metric scale line (m/km). + metric: true, + + // @option imperial: Boolean = True + // Whether to show the imperial scale line (mi/ft). + imperial: true + + // @option updateWhenIdle: Boolean = false + // If `true`, the control is updated on [`moveend`](#map-moveend), otherwise it's always up-to-date (updated on [`move`](#map-move)). + }, + + onAdd: function (map) { + var className = 'leaflet-control-scale', + container = create$1('div', className), + options = this.options; + + this._addScales(options, className + '-line', container); + + map.on(options.updateWhenIdle ? 'moveend' : 'move', this._update, this); + map.whenReady(this._update, this); + + return container; + }, + + onRemove: function (map) { + map.off(this.options.updateWhenIdle ? 'moveend' : 'move', this._update, this); + }, + + _addScales: function (options, className, container) { + if (options.metric) { + this._mScale = create$1('div', className, container); + } + if (options.imperial) { + this._iScale = create$1('div', className, container); + } + }, + + _update: function () { + var map = this._map, + y = map.getSize().y / 2; + + var maxMeters = map.distance( + map.containerPointToLatLng([0, y]), + map.containerPointToLatLng([this.options.maxWidth, y])); + + this._updateScales(maxMeters); + }, + + _updateScales: function (maxMeters) { + if (this.options.metric && maxMeters) { + this._updateMetric(maxMeters); + } + if (this.options.imperial && maxMeters) { + this._updateImperial(maxMeters); + } + }, + + _updateMetric: function (maxMeters) { + var meters = this._getRoundNum(maxMeters), + label = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km'; + + this._updateScale(this._mScale, label, meters / maxMeters); + }, + + _updateImperial: function (maxMeters) { + var maxFeet = maxMeters * 3.2808399, + maxMiles, miles, feet; + + if (maxFeet > 5280) { + maxMiles = maxFeet / 5280; + miles = this._getRoundNum(maxMiles); + this._updateScale(this._iScale, miles + ' mi', miles / maxMiles); + + } else { + feet = this._getRoundNum(maxFeet); + this._updateScale(this._iScale, feet + ' ft', feet / maxFeet); + } + }, + + _updateScale: function (scale, text, ratio) { + scale.style.width = Math.round(this.options.maxWidth * ratio) + 'px'; + scale.innerHTML = text; + }, + + _getRoundNum: function (num) { + var pow10 = Math.pow(10, (Math.floor(num) + '').length - 1), + d = num / pow10; + + d = d >= 10 ? 10 : + d >= 5 ? 5 : + d >= 3 ? 3 : + d >= 2 ? 2 : 1; + + return pow10 * d; + } +}); + + +// @factory L.control.scale(options?: Control.Scale options) +// Creates an scale control with the given options. +var scale = function (options) { + return new Scale(options); +}; + +/* + * @class Control.Attribution + * @aka L.Control.Attribution + * @inherits Control + * + * The attribution control allows you to display attribution data in a small text box on a map. It is put on the map by default unless you set its [`attributionControl` option](#map-attributioncontrol) to `false`, and it fetches attribution texts from layers with the [`getAttribution` method](#layer-getattribution) automatically. Extends Control. + */ + +var Attribution = Control.extend({ + // @section + // @aka Control.Attribution options + options: { + position: 'bottomright', + + // @option prefix: String = 'Leaflet' + // The HTML text shown before the attributions. Pass `false` to disable. + prefix: 'Leaflet' + }, + + initialize: function (options) { + setOptions(this, options); + + this._attributions = {}; + }, + + onAdd: function (map) { + map.attributionControl = this; + this._container = create$1('div', 'leaflet-control-attribution'); + disableClickPropagation(this._container); + + // TODO ugly, refactor + for (var i in map._layers) { + if (map._layers[i].getAttribution) { + this.addAttribution(map._layers[i].getAttribution()); + } + } + + this._update(); + + return this._container; + }, + + // @method setPrefix(prefix: String): this + // Sets the text before the attributions. + setPrefix: function (prefix) { + this.options.prefix = prefix; + this._update(); + return this; + }, + + // @method addAttribution(text: String): this + // Adds an attribution text (e.g. `'Vector data © Mapbox'`). + addAttribution: function (text) { + if (!text) { return this; } + + if (!this._attributions[text]) { + this._attributions[text] = 0; + } + this._attributions[text]++; + + this._update(); + + return this; + }, + + // @method removeAttribution(text: String): this + // Removes an attribution text. + removeAttribution: function (text) { + if (!text) { return this; } + + if (this._attributions[text]) { + this._attributions[text]--; + this._update(); + } + + return this; + }, + + _update: function () { + if (!this._map) { return; } + + var attribs = []; + + for (var i in this._attributions) { + if (this._attributions[i]) { + attribs.push(i); + } + } + + var prefixAndAttribs = []; + + if (this.options.prefix) { + prefixAndAttribs.push(this.options.prefix); + } + if (attribs.length) { + prefixAndAttribs.push(attribs.join(', ')); + } + + this._container.innerHTML = prefixAndAttribs.join(' | '); + } +}); + +// @namespace Map +// @section Control options +// @option attributionControl: Boolean = true +// Whether a [attribution control](#control-attribution) is added to the map by default. +Map.mergeOptions({ + attributionControl: true +}); + +Map.addInitHook(function () { + if (this.options.attributionControl) { + new Attribution().addTo(this); + } +}); + +// @namespace Control.Attribution +// @factory L.control.attribution(options: Control.Attribution options) +// Creates an attribution control. +var attribution = function (options) { + return new Attribution(options); +}; + +Control.Layers = Layers; +Control.Zoom = Zoom; +Control.Scale = Scale; +Control.Attribution = Attribution; + +control.layers = layers; +control.zoom = zoom; +control.scale = scale; +control.attribution = attribution; + +/* + L.Handler is a base class for handler classes that are used internally to inject + interaction features like dragging to classes like Map and Marker. +*/ + +// @class Handler +// @aka L.Handler +// Abstract class for map interaction handlers + +var Handler = Class.extend({ + initialize: function (map) { + this._map = map; + }, + + // @method enable(): this + // Enables the handler + enable: function () { + if (this._enabled) { return this; } + + this._enabled = true; + this.addHooks(); + return this; + }, + + // @method disable(): this + // Disables the handler + disable: function () { + if (!this._enabled) { return this; } + + this._enabled = false; + this.removeHooks(); + return this; + }, + + // @method enabled(): Boolean + // Returns `true` if the handler is enabled + enabled: function () { + return !!this._enabled; + } + + // @section Extension methods + // Classes inheriting from `Handler` must implement the two following methods: + // @method addHooks() + // Called when the handler is enabled, should add event hooks. + // @method removeHooks() + // Called when the handler is disabled, should remove the event hooks added previously. +}); + +// @section There is static function which can be called without instantiating L.Handler: +// @function addTo(map: Map, name: String): this +// Adds a new Handler to the given map with the given name. +Handler.addTo = function (map, name) { + map.addHandler(name, this); + return this; +}; + +var Mixin = {Events: Events}; + +/* + * @class Draggable + * @aka L.Draggable + * @inherits Evented + * + * A class for making DOM elements draggable (including touch support). + * Used internally for map and marker dragging. Only works for elements + * that were positioned with [`L.DomUtil.setPosition`](#domutil-setposition). + * + * @example + * ```js + * var draggable = new L.Draggable(elementToDrag); + * draggable.enable(); + * ``` + */ + +var START = touch ? 'touchstart mousedown' : 'mousedown'; +var END = { + mousedown: 'mouseup', + touchstart: 'touchend', + pointerdown: 'touchend', + MSPointerDown: 'touchend' +}; +var MOVE = { + mousedown: 'mousemove', + touchstart: 'touchmove', + pointerdown: 'touchmove', + MSPointerDown: 'touchmove' +}; + + +var Draggable = Evented.extend({ + + options: { + // @section + // @aka Draggable options + // @option clickTolerance: Number = 3 + // The max number of pixels a user can shift the mouse pointer during a click + // for it to be considered a valid click (as opposed to a mouse drag). + clickTolerance: 3 + }, + + // @constructor L.Draggable(el: HTMLElement, dragHandle?: HTMLElement, preventOutline?: Boolean, options?: Draggable options) + // Creates a `Draggable` object for moving `el` when you start dragging the `dragHandle` element (equals `el` itself by default). + initialize: function (element, dragStartTarget, preventOutline$$1, options) { + setOptions(this, options); + + this._element = element; + this._dragStartTarget = dragStartTarget || element; + this._preventOutline = preventOutline$$1; + }, + + // @method enable() + // Enables the dragging ability + enable: function () { + if (this._enabled) { return; } + + on(this._dragStartTarget, START, this._onDown, this); + + this._enabled = true; + }, + + // @method disable() + // Disables the dragging ability + disable: function () { + if (!this._enabled) { return; } + + // If we're currently dragging this draggable, + // disabling it counts as first ending the drag. + if (Draggable._dragging === this) { + this.finishDrag(); + } + + off(this._dragStartTarget, START, this._onDown, this); + + this._enabled = false; + this._moved = false; + }, + + _onDown: function (e) { + // Ignore simulated events, since we handle both touch and + // mouse explicitly; otherwise we risk getting duplicates of + // touch events, see #4315. + // Also ignore the event if disabled; this happens in IE11 + // under some circumstances, see #3666. + if (e._simulated || !this._enabled) { return; } + + this._moved = false; + + if (hasClass(this._element, 'leaflet-zoom-anim')) { return; } + + if (Draggable._dragging || e.shiftKey || ((e.which !== 1) && (e.button !== 1) && !e.touches)) { return; } + Draggable._dragging = this; // Prevent dragging multiple objects at once. + + if (this._preventOutline) { + preventOutline(this._element); + } + + disableImageDrag(); + disableTextSelection(); + + if (this._moving) { return; } + + // @event down: Event + // Fired when a drag is about to start. + this.fire('down'); + + var first = e.touches ? e.touches[0] : e, + sizedParent = getSizedParentNode(this._element); + + this._startPoint = new Point(first.clientX, first.clientY); + + // Cache the scale, so that we can continuously compensate for it during drag (_onMove). + this._parentScale = getScale(sizedParent); + + on(document, MOVE[e.type], this._onMove, this); + on(document, END[e.type], this._onUp, this); + }, + + _onMove: function (e) { + // Ignore simulated events, since we handle both touch and + // mouse explicitly; otherwise we risk getting duplicates of + // touch events, see #4315. + // Also ignore the event if disabled; this happens in IE11 + // under some circumstances, see #3666. + if (e._simulated || !this._enabled) { return; } + + if (e.touches && e.touches.length > 1) { + this._moved = true; + return; + } + + var first = (e.touches && e.touches.length === 1 ? e.touches[0] : e), + offset = new Point(first.clientX, first.clientY)._subtract(this._startPoint); + + if (!offset.x && !offset.y) { return; } + if (Math.abs(offset.x) + Math.abs(offset.y) < this.options.clickTolerance) { return; } + + // We assume that the parent container's position, border and scale do not change for the duration of the drag. + // Therefore there is no need to account for the position and border (they are eliminated by the subtraction) + // and we can use the cached value for the scale. + offset.x /= this._parentScale.x; + offset.y /= this._parentScale.y; + + preventDefault(e); + + if (!this._moved) { + // @event dragstart: Event + // Fired when a drag starts + this.fire('dragstart'); + + this._moved = true; + this._startPos = getPosition(this._element).subtract(offset); + + addClass(document.body, 'leaflet-dragging'); + + this._lastTarget = e.target || e.srcElement; + // IE and Edge do not give the element, so fetch it + // if necessary + if ((window.SVGElementInstance) && (this._lastTarget instanceof SVGElementInstance)) { + this._lastTarget = this._lastTarget.correspondingUseElement; + } + addClass(this._lastTarget, 'leaflet-drag-target'); + } + + this._newPos = this._startPos.add(offset); + this._moving = true; + + cancelAnimFrame(this._animRequest); + this._lastEvent = e; + this._animRequest = requestAnimFrame(this._updatePosition, this, true); + }, + + _updatePosition: function () { + var e = {originalEvent: this._lastEvent}; + + // @event predrag: Event + // Fired continuously during dragging *before* each corresponding + // update of the element's position. + this.fire('predrag', e); + setPosition(this._element, this._newPos); + + // @event drag: Event + // Fired continuously during dragging. + this.fire('drag', e); + }, + + _onUp: function (e) { + // Ignore simulated events, since we handle both touch and + // mouse explicitly; otherwise we risk getting duplicates of + // touch events, see #4315. + // Also ignore the event if disabled; this happens in IE11 + // under some circumstances, see #3666. + if (e._simulated || !this._enabled) { return; } + this.finishDrag(); + }, + + finishDrag: function () { + removeClass(document.body, 'leaflet-dragging'); + + if (this._lastTarget) { + removeClass(this._lastTarget, 'leaflet-drag-target'); + this._lastTarget = null; + } + + for (var i in MOVE) { + off(document, MOVE[i], this._onMove, this); + off(document, END[i], this._onUp, this); + } + + enableImageDrag(); + enableTextSelection(); + + if (this._moved && this._moving) { + // ensure drag is not fired after dragend + cancelAnimFrame(this._animRequest); + + // @event dragend: DragEndEvent + // Fired when the drag ends. + this.fire('dragend', { + distance: this._newPos.distanceTo(this._startPos) + }); + } + + this._moving = false; + Draggable._dragging = false; + } + +}); + +/* + * @namespace LineUtil + * + * Various utility functions for polyline points processing, used by Leaflet internally to make polylines lightning-fast. + */ + +// Simplify polyline with vertex reduction and Douglas-Peucker simplification. +// Improves rendering performance dramatically by lessening the number of points to draw. + +// @function simplify(points: Point[], tolerance: Number): Point[] +// Dramatically reduces the number of points in a polyline while retaining +// its shape and returns a new array of simplified points, using the +// [Douglas-Peucker algorithm](http://en.wikipedia.org/wiki/Douglas-Peucker_algorithm). +// Used for a huge performance boost when processing/displaying Leaflet polylines for +// each zoom level and also reducing visual noise. tolerance affects the amount of +// simplification (lesser value means higher quality but slower and with more points). +// Also released as a separated micro-library [Simplify.js](http://mourner.github.com/simplify-js/). +function simplify(points, tolerance) { + if (!tolerance || !points.length) { + return points.slice(); + } + + var sqTolerance = tolerance * tolerance; + + // stage 1: vertex reduction + points = _reducePoints(points, sqTolerance); + + // stage 2: Douglas-Peucker simplification + points = _simplifyDP(points, sqTolerance); + + return points; +} + +// @function pointToSegmentDistance(p: Point, p1: Point, p2: Point): Number +// Returns the distance between point `p` and segment `p1` to `p2`. +function pointToSegmentDistance(p, p1, p2) { + return Math.sqrt(_sqClosestPointOnSegment(p, p1, p2, true)); +} + +// @function closestPointOnSegment(p: Point, p1: Point, p2: Point): Number +// Returns the closest point from a point `p` on a segment `p1` to `p2`. +function closestPointOnSegment(p, p1, p2) { + return _sqClosestPointOnSegment(p, p1, p2); +} + +// Douglas-Peucker simplification, see http://en.wikipedia.org/wiki/Douglas-Peucker_algorithm +function _simplifyDP(points, sqTolerance) { + + var len = points.length, + ArrayConstructor = typeof Uint8Array !== undefined + '' ? Uint8Array : Array, + markers = new ArrayConstructor(len); + + markers[0] = markers[len - 1] = 1; + + _simplifyDPStep(points, markers, sqTolerance, 0, len - 1); + + var i, + newPoints = []; + + for (i = 0; i < len; i++) { + if (markers[i]) { + newPoints.push(points[i]); + } + } + + return newPoints; +} + +function _simplifyDPStep(points, markers, sqTolerance, first, last) { + + var maxSqDist = 0, + index, i, sqDist; + + for (i = first + 1; i <= last - 1; i++) { + sqDist = _sqClosestPointOnSegment(points[i], points[first], points[last], true); + + if (sqDist > maxSqDist) { + index = i; + maxSqDist = sqDist; + } + } + + if (maxSqDist > sqTolerance) { + markers[index] = 1; + + _simplifyDPStep(points, markers, sqTolerance, first, index); + _simplifyDPStep(points, markers, sqTolerance, index, last); + } +} + +// reduce points that are too close to each other to a single point +function _reducePoints(points, sqTolerance) { + var reducedPoints = [points[0]]; + + for (var i = 1, prev = 0, len = points.length; i < len; i++) { + if (_sqDist(points[i], points[prev]) > sqTolerance) { + reducedPoints.push(points[i]); + prev = i; + } + } + if (prev < len - 1) { + reducedPoints.push(points[len - 1]); + } + return reducedPoints; +} + +var _lastCode; + +// @function clipSegment(a: Point, b: Point, bounds: Bounds, useLastCode?: Boolean, round?: Boolean): Point[]|Boolean +// Clips the segment a to b by rectangular bounds with the +// [Cohen-Sutherland algorithm](https://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland_algorithm) +// (modifying the segment points directly!). Used by Leaflet to only show polyline +// points that are on the screen or near, increasing performance. +function clipSegment(a, b, bounds, useLastCode, round) { + var codeA = useLastCode ? _lastCode : _getBitCode(a, bounds), + codeB = _getBitCode(b, bounds), + + codeOut, p, newCode; + + // save 2nd code to avoid calculating it on the next segment + _lastCode = codeB; + + while (true) { + // if a,b is inside the clip window (trivial accept) + if (!(codeA | codeB)) { + return [a, b]; + } + + // if a,b is outside the clip window (trivial reject) + if (codeA & codeB) { + return false; + } + + // other cases + codeOut = codeA || codeB; + p = _getEdgeIntersection(a, b, codeOut, bounds, round); + newCode = _getBitCode(p, bounds); + + if (codeOut === codeA) { + a = p; + codeA = newCode; + } else { + b = p; + codeB = newCode; + } + } +} + +function _getEdgeIntersection(a, b, code, bounds, round) { + var dx = b.x - a.x, + dy = b.y - a.y, + min = bounds.min, + max = bounds.max, + x, y; + + if (code & 8) { // top + x = a.x + dx * (max.y - a.y) / dy; + y = max.y; + + } else if (code & 4) { // bottom + x = a.x + dx * (min.y - a.y) / dy; + y = min.y; + + } else if (code & 2) { // right + x = max.x; + y = a.y + dy * (max.x - a.x) / dx; + + } else if (code & 1) { // left + x = min.x; + y = a.y + dy * (min.x - a.x) / dx; + } + + return new Point(x, y, round); +} + +function _getBitCode(p, bounds) { + var code = 0; + + if (p.x < bounds.min.x) { // left + code |= 1; + } else if (p.x > bounds.max.x) { // right + code |= 2; + } + + if (p.y < bounds.min.y) { // bottom + code |= 4; + } else if (p.y > bounds.max.y) { // top + code |= 8; + } + + return code; +} + +// square distance (to avoid unnecessary Math.sqrt calls) +function _sqDist(p1, p2) { + var dx = p2.x - p1.x, + dy = p2.y - p1.y; + return dx * dx + dy * dy; +} + +// return closest point on segment or distance to that point +function _sqClosestPointOnSegment(p, p1, p2, sqDist) { + var x = p1.x, + y = p1.y, + dx = p2.x - x, + dy = p2.y - y, + dot = dx * dx + dy * dy, + t; + + if (dot > 0) { + t = ((p.x - x) * dx + (p.y - y) * dy) / dot; + + if (t > 1) { + x = p2.x; + y = p2.y; + } else if (t > 0) { + x += dx * t; + y += dy * t; + } + } + + dx = p.x - x; + dy = p.y - y; + + return sqDist ? dx * dx + dy * dy : new Point(x, y); +} + + +// @function isFlat(latlngs: LatLng[]): Boolean +// Returns true if `latlngs` is a flat array, false is nested. +function isFlat(latlngs) { + return !isArray(latlngs[0]) || (typeof latlngs[0][0] !== 'object' && typeof latlngs[0][0] !== 'undefined'); +} + +function _flat(latlngs) { + console.warn('Deprecated use of _flat, please use L.LineUtil.isFlat instead.'); + return isFlat(latlngs); +} + + +var LineUtil = (Object.freeze || Object)({ + simplify: simplify, + pointToSegmentDistance: pointToSegmentDistance, + closestPointOnSegment: closestPointOnSegment, + clipSegment: clipSegment, + _getEdgeIntersection: _getEdgeIntersection, + _getBitCode: _getBitCode, + _sqClosestPointOnSegment: _sqClosestPointOnSegment, + isFlat: isFlat, + _flat: _flat +}); + +/* + * @namespace PolyUtil + * Various utility functions for polygon geometries. + */ + +/* @function clipPolygon(points: Point[], bounds: Bounds, round?: Boolean): Point[] + * Clips the polygon geometry defined by the given `points` by the given bounds (using the [Sutherland-Hodgman algorithm](https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm)). + * Used by Leaflet to only show polygon points that are on the screen or near, increasing + * performance. Note that polygon points needs different algorithm for clipping + * than polyline, so there's a separate method for it. + */ +function clipPolygon(points, bounds, round) { + var clippedPoints, + edges = [1, 4, 2, 8], + i, j, k, + a, b, + len, edge, p; + + for (i = 0, len = points.length; i < len; i++) { + points[i]._code = _getBitCode(points[i], bounds); + } + + // for each edge (left, bottom, right, top) + for (k = 0; k < 4; k++) { + edge = edges[k]; + clippedPoints = []; + + for (i = 0, len = points.length, j = len - 1; i < len; j = i++) { + a = points[i]; + b = points[j]; + + // if a is inside the clip window + if (!(a._code & edge)) { + // if b is outside the clip window (a->b goes out of screen) + if (b._code & edge) { + p = _getEdgeIntersection(b, a, edge, bounds, round); + p._code = _getBitCode(p, bounds); + clippedPoints.push(p); + } + clippedPoints.push(a); + + // else if b is inside the clip window (a->b enters the screen) + } else if (!(b._code & edge)) { + p = _getEdgeIntersection(b, a, edge, bounds, round); + p._code = _getBitCode(p, bounds); + clippedPoints.push(p); + } + } + points = clippedPoints; + } + + return points; +} + + +var PolyUtil = (Object.freeze || Object)({ + clipPolygon: clipPolygon +}); + +/* + * @namespace Projection + * @section + * Leaflet comes with a set of already defined Projections out of the box: + * + * @projection L.Projection.LonLat + * + * Equirectangular, or Plate Carree projection — the most simple projection, + * mostly used by GIS enthusiasts. Directly maps `x` as longitude, and `y` as + * latitude. Also suitable for flat worlds, e.g. game maps. Used by the + * `EPSG:4326` and `Simple` CRS. + */ + +var LonLat = { + project: function (latlng) { + return new Point(latlng.lng, latlng.lat); + }, + + unproject: function (point) { + return new LatLng(point.y, point.x); + }, + + bounds: new Bounds([-180, -90], [180, 90]) +}; + +/* + * @namespace Projection + * @projection L.Projection.Mercator + * + * Elliptical Mercator projection — more complex than Spherical Mercator. Assumes that Earth is an ellipsoid. Used by the EPSG:3395 CRS. + */ + +var Mercator = { + R: 6378137, + R_MINOR: 6356752.314245179, + + bounds: new Bounds([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]), + + project: function (latlng) { + var d = Math.PI / 180, + r = this.R, + y = latlng.lat * d, + tmp = this.R_MINOR / r, + e = Math.sqrt(1 - tmp * tmp), + con = e * Math.sin(y); + + var ts = Math.tan(Math.PI / 4 - y / 2) / Math.pow((1 - con) / (1 + con), e / 2); + y = -r * Math.log(Math.max(ts, 1E-10)); + + return new Point(latlng.lng * d * r, y); + }, + + unproject: function (point) { + var d = 180 / Math.PI, + r = this.R, + tmp = this.R_MINOR / r, + e = Math.sqrt(1 - tmp * tmp), + ts = Math.exp(-point.y / r), + phi = Math.PI / 2 - 2 * Math.atan(ts); + + for (var i = 0, dphi = 0.1, con; i < 15 && Math.abs(dphi) > 1e-7; i++) { + con = e * Math.sin(phi); + con = Math.pow((1 - con) / (1 + con), e / 2); + dphi = Math.PI / 2 - 2 * Math.atan(ts * con) - phi; + phi += dphi; + } + + return new LatLng(phi * d, point.x * d / r); + } +}; + +/* + * @class Projection + + * An object with methods for projecting geographical coordinates of the world onto + * a flat surface (and back). See [Map projection](http://en.wikipedia.org/wiki/Map_projection). + + * @property bounds: Bounds + * The bounds (specified in CRS units) where the projection is valid + + * @method project(latlng: LatLng): Point + * Projects geographical coordinates into a 2D point. + * Only accepts actual `L.LatLng` instances, not arrays. + + * @method unproject(point: Point): LatLng + * The inverse of `project`. Projects a 2D point into a geographical location. + * Only accepts actual `L.Point` instances, not arrays. + + * Note that the projection instances do not inherit from Leafet's `Class` object, + * and can't be instantiated. Also, new classes can't inherit from them, + * and methods can't be added to them with the `include` function. + + */ + + + + +var index = (Object.freeze || Object)({ + LonLat: LonLat, + Mercator: Mercator, + SphericalMercator: SphericalMercator +}); + +/* + * @namespace CRS + * @crs L.CRS.EPSG3395 + * + * Rarely used by some commercial tile providers. Uses Elliptical Mercator projection. + */ +var EPSG3395 = extend({}, Earth, { + code: 'EPSG:3395', + projection: Mercator, + + transformation: (function () { + var scale = 0.5 / (Math.PI * Mercator.R); + return toTransformation(scale, 0.5, -scale, 0.5); + }()) +}); + +/* + * @namespace CRS + * @crs L.CRS.EPSG4326 + * + * A common CRS among GIS enthusiasts. Uses simple Equirectangular projection. + * + * Leaflet 1.0.x complies with the [TMS coordinate scheme for EPSG:4326](https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification#global-geodetic), + * which is a breaking change from 0.7.x behaviour. If you are using a `TileLayer` + * with this CRS, ensure that there are two 256x256 pixel tiles covering the + * whole earth at zoom level zero, and that the tile coordinate origin is (-180,+90), + * or (-180,-90) for `TileLayer`s with [the `tms` option](#tilelayer-tms) set. + */ + +var EPSG4326 = extend({}, Earth, { + code: 'EPSG:4326', + projection: LonLat, + transformation: toTransformation(1 / 180, 1, -1 / 180, 0.5) +}); + +/* + * @namespace CRS + * @crs L.CRS.Simple + * + * A simple CRS that maps longitude and latitude into `x` and `y` directly. + * May be used for maps of flat surfaces (e.g. game maps). Note that the `y` + * axis should still be inverted (going from bottom to top). `distance()` returns + * simple euclidean distance. + */ + +var Simple = extend({}, CRS, { + projection: LonLat, + transformation: toTransformation(1, 0, -1, 0), + + scale: function (zoom) { + return Math.pow(2, zoom); + }, + + zoom: function (scale) { + return Math.log(scale) / Math.LN2; + }, + + distance: function (latlng1, latlng2) { + var dx = latlng2.lng - latlng1.lng, + dy = latlng2.lat - latlng1.lat; + + return Math.sqrt(dx * dx + dy * dy); + }, + + infinite: true +}); + +CRS.Earth = Earth; +CRS.EPSG3395 = EPSG3395; +CRS.EPSG3857 = EPSG3857; +CRS.EPSG900913 = EPSG900913; +CRS.EPSG4326 = EPSG4326; +CRS.Simple = Simple; + +/* + * @class Layer + * @inherits Evented + * @aka L.Layer + * @aka ILayer + * + * A set of methods from the Layer base class that all Leaflet layers use. + * Inherits all methods, options and events from `L.Evented`. + * + * @example + * + * ```js + * var layer = L.marker(latlng).addTo(map); + * layer.addTo(map); + * layer.remove(); + * ``` + * + * @event add: Event + * Fired after the layer is added to a map + * + * @event remove: Event + * Fired after the layer is removed from a map + */ + + +var Layer = Evented.extend({ + + // Classes extending `L.Layer` will inherit the following options: + options: { + // @option pane: String = 'overlayPane' + // By default the layer will be added to the map's [overlay pane](#map-overlaypane). Overriding this option will cause the layer to be placed on another pane by default. + pane: 'overlayPane', + + // @option attribution: String = null + // String to be shown in the attribution control, e.g. "© OpenStreetMap contributors". It describes the layer data and is often a legal obligation towards copyright holders and tile providers. + attribution: null, + + bubblingMouseEvents: true + }, + + /* @section + * Classes extending `L.Layer` will inherit the following methods: + * + * @method addTo(map: Map|LayerGroup): this + * Adds the layer to the given map or layer group. + */ + addTo: function (map) { + map.addLayer(this); + return this; + }, + + // @method remove: this + // Removes the layer from the map it is currently active on. + remove: function () { + return this.removeFrom(this._map || this._mapToAdd); + }, + + // @method removeFrom(map: Map): this + // Removes the layer from the given map + removeFrom: function (obj) { + if (obj) { + obj.removeLayer(this); + } + return this; + }, + + // @method getPane(name? : String): HTMLElement + // Returns the `HTMLElement` representing the named pane on the map. If `name` is omitted, returns the pane for this layer. + getPane: function (name) { + return this._map.getPane(name ? (this.options[name] || name) : this.options.pane); + }, + + addInteractiveTarget: function (targetEl) { + this._map._targets[stamp(targetEl)] = this; + return this; + }, + + removeInteractiveTarget: function (targetEl) { + delete this._map._targets[stamp(targetEl)]; + return this; + }, + + // @method getAttribution: String + // Used by the `attribution control`, returns the [attribution option](#gridlayer-attribution). + getAttribution: function () { + return this.options.attribution; + }, + + _layerAdd: function (e) { + var map = e.target; + + // check in case layer gets added and then removed before the map is ready + if (!map.hasLayer(this)) { return; } + + this._map = map; + this._zoomAnimated = map._zoomAnimated; + + if (this.getEvents) { + var events = this.getEvents(); + map.on(events, this); + this.once('remove', function () { + map.off(events, this); + }, this); + } + + this.onAdd(map); + + if (this.getAttribution && map.attributionControl) { + map.attributionControl.addAttribution(this.getAttribution()); + } + + this.fire('add'); + map.fire('layeradd', {layer: this}); + } +}); + +/* @section Extension methods + * @uninheritable + * + * Every layer should extend from `L.Layer` and (re-)implement the following methods. + * + * @method onAdd(map: Map): this + * Should contain code that creates DOM elements for the layer, adds them to `map panes` where they should belong and puts listeners on relevant map events. Called on [`map.addLayer(layer)`](#map-addlayer). + * + * @method onRemove(map: Map): this + * Should contain all clean up code that removes the layer's elements from the DOM and removes listeners previously added in [`onAdd`](#layer-onadd). Called on [`map.removeLayer(layer)`](#map-removelayer). + * + * @method getEvents(): Object + * This optional method should return an object like `{ viewreset: this._reset }` for [`addEventListener`](#evented-addeventlistener). The event handlers in this object will be automatically added and removed from the map with your layer. + * + * @method getAttribution(): String + * This optional method should return a string containing HTML to be shown on the `Attribution control` whenever the layer is visible. + * + * @method beforeAdd(map: Map): this + * Optional method. Called on [`map.addLayer(layer)`](#map-addlayer), before the layer is added to the map, before events are initialized, without waiting until the map is in a usable state. Use for early initialization only. + */ + + +/* @namespace Map + * @section Layer events + * + * @event layeradd: LayerEvent + * Fired when a new layer is added to the map. + * + * @event layerremove: LayerEvent + * Fired when some layer is removed from the map + * + * @section Methods for Layers and Controls + */ +Map.include({ + // @method addLayer(layer: Layer): this + // Adds the given layer to the map + addLayer: function (layer) { + if (!layer._layerAdd) { + throw new Error('The provided object is not a Layer.'); + } + + var id = stamp(layer); + if (this._layers[id]) { return this; } + this._layers[id] = layer; + + layer._mapToAdd = this; + + if (layer.beforeAdd) { + layer.beforeAdd(this); + } + + this.whenReady(layer._layerAdd, layer); + + return this; + }, + + // @method removeLayer(layer: Layer): this + // Removes the given layer from the map. + removeLayer: function (layer) { + var id = stamp(layer); + + if (!this._layers[id]) { return this; } + + if (this._loaded) { + layer.onRemove(this); + } + + if (layer.getAttribution && this.attributionControl) { + this.attributionControl.removeAttribution(layer.getAttribution()); + } + + delete this._layers[id]; + + if (this._loaded) { + this.fire('layerremove', {layer: layer}); + layer.fire('remove'); + } + + layer._map = layer._mapToAdd = null; + + return this; + }, + + // @method hasLayer(layer: Layer): Boolean + // Returns `true` if the given layer is currently added to the map + hasLayer: function (layer) { + return !!layer && (stamp(layer) in this._layers); + }, + + /* @method eachLayer(fn: Function, context?: Object): this + * Iterates over the layers of the map, optionally specifying context of the iterator function. + * ``` + * map.eachLayer(function(layer){ + * layer.bindPopup('Hello'); + * }); + * ``` + */ + eachLayer: function (method, context) { + for (var i in this._layers) { + method.call(context, this._layers[i]); + } + return this; + }, + + _addLayers: function (layers) { + layers = layers ? (isArray(layers) ? layers : [layers]) : []; + + for (var i = 0, len = layers.length; i < len; i++) { + this.addLayer(layers[i]); + } + }, + + _addZoomLimit: function (layer) { + if (isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom)) { + this._zoomBoundLayers[stamp(layer)] = layer; + this._updateZoomLevels(); + } + }, + + _removeZoomLimit: function (layer) { + var id = stamp(layer); + + if (this._zoomBoundLayers[id]) { + delete this._zoomBoundLayers[id]; + this._updateZoomLevels(); + } + }, + + _updateZoomLevels: function () { + var minZoom = Infinity, + maxZoom = -Infinity, + oldZoomSpan = this._getZoomSpan(); + + for (var i in this._zoomBoundLayers) { + var options = this._zoomBoundLayers[i].options; + + minZoom = options.minZoom === undefined ? minZoom : Math.min(minZoom, options.minZoom); + maxZoom = options.maxZoom === undefined ? maxZoom : Math.max(maxZoom, options.maxZoom); + } + + this._layersMaxZoom = maxZoom === -Infinity ? undefined : maxZoom; + this._layersMinZoom = minZoom === Infinity ? undefined : minZoom; + + // @section Map state change events + // @event zoomlevelschange: Event + // Fired when the number of zoomlevels on the map is changed due + // to adding or removing a layer. + if (oldZoomSpan !== this._getZoomSpan()) { + this.fire('zoomlevelschange'); + } + + if (this.options.maxZoom === undefined && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom) { + this.setZoom(this._layersMaxZoom); + } + if (this.options.minZoom === undefined && this._layersMinZoom && this.getZoom() < this._layersMinZoom) { + this.setZoom(this._layersMinZoom); + } + } +}); + +/* + * @class LayerGroup + * @aka L.LayerGroup + * @inherits Layer + * + * Used to group several layers and handle them as one. If you add it to the map, + * any layers added or removed from the group will be added/removed on the map as + * well. Extends `Layer`. + * + * @example + * + * ```js + * L.layerGroup([marker1, marker2]) + * .addLayer(polyline) + * .addTo(map); + * ``` + */ + +var LayerGroup = Layer.extend({ + + initialize: function (layers, options) { + setOptions(this, options); + + this._layers = {}; + + var i, len; + + if (layers) { + for (i = 0, len = layers.length; i < len; i++) { + this.addLayer(layers[i]); + } + } + }, + + // @method addLayer(layer: Layer): this + // Adds the given layer to the group. + addLayer: function (layer) { + var id = this.getLayerId(layer); + + this._layers[id] = layer; + + if (this._map) { + this._map.addLayer(layer); + } + + return this; + }, + + // @method removeLayer(layer: Layer): this + // Removes the given layer from the group. + // @alternative + // @method removeLayer(id: Number): this + // Removes the layer with the given internal ID from the group. + removeLayer: function (layer) { + var id = layer in this._layers ? layer : this.getLayerId(layer); + + if (this._map && this._layers[id]) { + this._map.removeLayer(this._layers[id]); + } + + delete this._layers[id]; + + return this; + }, + + // @method hasLayer(layer: Layer): Boolean + // Returns `true` if the given layer is currently added to the group. + // @alternative + // @method hasLayer(id: Number): Boolean + // Returns `true` if the given internal ID is currently added to the group. + hasLayer: function (layer) { + return !!layer && (layer in this._layers || this.getLayerId(layer) in this._layers); + }, + + // @method clearLayers(): this + // Removes all the layers from the group. + clearLayers: function () { + return this.eachLayer(this.removeLayer, this); + }, + + // @method invoke(methodName: String, …): this + // Calls `methodName` on every layer contained in this group, passing any + // additional parameters. Has no effect if the layers contained do not + // implement `methodName`. + invoke: function (methodName) { + var args = Array.prototype.slice.call(arguments, 1), + i, layer; + + for (i in this._layers) { + layer = this._layers[i]; + + if (layer[methodName]) { + layer[methodName].apply(layer, args); + } + } + + return this; + }, + + onAdd: function (map) { + this.eachLayer(map.addLayer, map); + }, + + onRemove: function (map) { + this.eachLayer(map.removeLayer, map); + }, + + // @method eachLayer(fn: Function, context?: Object): this + // Iterates over the layers of the group, optionally specifying context of the iterator function. + // ```js + // group.eachLayer(function (layer) { + // layer.bindPopup('Hello'); + // }); + // ``` + eachLayer: function (method, context) { + for (var i in this._layers) { + method.call(context, this._layers[i]); + } + return this; + }, + + // @method getLayer(id: Number): Layer + // Returns the layer with the given internal ID. + getLayer: function (id) { + return this._layers[id]; + }, + + // @method getLayers(): Layer[] + // Returns an array of all the layers added to the group. + getLayers: function () { + var layers = []; + this.eachLayer(layers.push, layers); + return layers; + }, + + // @method setZIndex(zIndex: Number): this + // Calls `setZIndex` on every layer contained in this group, passing the z-index. + setZIndex: function (zIndex) { + return this.invoke('setZIndex', zIndex); + }, + + // @method getLayerId(layer: Layer): Number + // Returns the internal ID for a layer + getLayerId: function (layer) { + return stamp(layer); + } +}); + + +// @factory L.layerGroup(layers?: Layer[], options?: Object) +// Create a layer group, optionally given an initial set of layers and an `options` object. +var layerGroup = function (layers, options) { + return new LayerGroup(layers, options); +}; + +/* + * @class FeatureGroup + * @aka L.FeatureGroup + * @inherits LayerGroup + * + * Extended `LayerGroup` that makes it easier to do the same thing to all its member layers: + * * [`bindPopup`](#layer-bindpopup) binds a popup to all of the layers at once (likewise with [`bindTooltip`](#layer-bindtooltip)) + * * Events are propagated to the `FeatureGroup`, so if the group has an event + * handler, it will handle events from any of the layers. This includes mouse events + * and custom events. + * * Has `layeradd` and `layerremove` events + * + * @example + * + * ```js + * L.featureGroup([marker1, marker2, polyline]) + * .bindPopup('Hello world!') + * .on('click', function() { alert('Clicked on a member of the group!'); }) + * .addTo(map); + * ``` + */ + +var FeatureGroup = LayerGroup.extend({ + + addLayer: function (layer) { + if (this.hasLayer(layer)) { + return this; + } + + layer.addEventParent(this); + + LayerGroup.prototype.addLayer.call(this, layer); + + // @event layeradd: LayerEvent + // Fired when a layer is added to this `FeatureGroup` + return this.fire('layeradd', {layer: layer}); + }, + + removeLayer: function (layer) { + if (!this.hasLayer(layer)) { + return this; + } + if (layer in this._layers) { + layer = this._layers[layer]; + } + + layer.removeEventParent(this); + + LayerGroup.prototype.removeLayer.call(this, layer); + + // @event layerremove: LayerEvent + // Fired when a layer is removed from this `FeatureGroup` + return this.fire('layerremove', {layer: layer}); + }, + + // @method setStyle(style: Path options): this + // Sets the given path options to each layer of the group that has a `setStyle` method. + setStyle: function (style) { + return this.invoke('setStyle', style); + }, + + // @method bringToFront(): this + // Brings the layer group to the top of all other layers + bringToFront: function () { + return this.invoke('bringToFront'); + }, + + // @method bringToBack(): this + // Brings the layer group to the back of all other layers + bringToBack: function () { + return this.invoke('bringToBack'); + }, + + // @method getBounds(): LatLngBounds + // Returns the LatLngBounds of the Feature Group (created from bounds and coordinates of its children). + getBounds: function () { + var bounds = new LatLngBounds(); + + for (var id in this._layers) { + var layer = this._layers[id]; + bounds.extend(layer.getBounds ? layer.getBounds() : layer.getLatLng()); + } + return bounds; + } +}); + +// @factory L.featureGroup(layers: Layer[]) +// Create a feature group, optionally given an initial set of layers. +var featureGroup = function (layers) { + return new FeatureGroup(layers); +}; + +/* + * @class Icon + * @aka L.Icon + * + * Represents an icon to provide when creating a marker. + * + * @example + * + * ```js + * var myIcon = L.icon({ + * iconUrl: 'my-icon.png', + * iconRetinaUrl: 'my-icon@2x.png', + * iconSize: [38, 95], + * iconAnchor: [22, 94], + * popupAnchor: [-3, -76], + * shadowUrl: 'my-icon-shadow.png', + * shadowRetinaUrl: 'my-icon-shadow@2x.png', + * shadowSize: [68, 95], + * shadowAnchor: [22, 94] + * }); + * + * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map); + * ``` + * + * `L.Icon.Default` extends `L.Icon` and is the blue icon Leaflet uses for markers by default. + * + */ + +var Icon = Class.extend({ + + /* @section + * @aka Icon options + * + * @option iconUrl: String = null + * **(required)** The URL to the icon image (absolute or relative to your script path). + * + * @option iconRetinaUrl: String = null + * The URL to a retina sized version of the icon image (absolute or relative to your + * script path). Used for Retina screen devices. + * + * @option iconSize: Point = null + * Size of the icon image in pixels. + * + * @option iconAnchor: Point = null + * The coordinates of the "tip" of the icon (relative to its top left corner). The icon + * will be aligned so that this point is at the marker's geographical location. Centered + * by default if size is specified, also can be set in CSS with negative margins. + * + * @option popupAnchor: Point = [0, 0] + * The coordinates of the point from which popups will "open", relative to the icon anchor. + * + * @option tooltipAnchor: Point = [0, 0] + * The coordinates of the point from which tooltips will "open", relative to the icon anchor. + * + * @option shadowUrl: String = null + * The URL to the icon shadow image. If not specified, no shadow image will be created. + * + * @option shadowRetinaUrl: String = null + * + * @option shadowSize: Point = null + * Size of the shadow image in pixels. + * + * @option shadowAnchor: Point = null + * The coordinates of the "tip" of the shadow (relative to its top left corner) (the same + * as iconAnchor if not specified). + * + * @option className: String = '' + * A custom class name to assign to both icon and shadow images. Empty by default. + */ + + options: { + popupAnchor: [0, 0], + tooltipAnchor: [0, 0] + }, + + initialize: function (options) { + setOptions(this, options); + }, + + // @method createIcon(oldIcon?: HTMLElement): HTMLElement + // Called internally when the icon has to be shown, returns a `` HTML element + // styled according to the options. + createIcon: function (oldIcon) { + return this._createIcon('icon', oldIcon); + }, + + // @method createShadow(oldIcon?: HTMLElement): HTMLElement + // As `createIcon`, but for the shadow beneath it. + createShadow: function (oldIcon) { + return this._createIcon('shadow', oldIcon); + }, + + _createIcon: function (name, oldIcon) { + var src = this._getIconUrl(name); + + if (!src) { + if (name === 'icon') { + throw new Error('iconUrl not set in Icon options (see the docs).'); + } + return null; + } + + var img = this._createImg(src, oldIcon && oldIcon.tagName === 'IMG' ? oldIcon : null); + this._setIconStyles(img, name); + + return img; + }, + + _setIconStyles: function (img, name) { + var options = this.options; + var sizeOption = options[name + 'Size']; + + if (typeof sizeOption === 'number') { + sizeOption = [sizeOption, sizeOption]; + } + + var size = toPoint(sizeOption), + anchor = toPoint(name === 'shadow' && options.shadowAnchor || options.iconAnchor || + size && size.divideBy(2, true)); + + img.className = 'leaflet-marker-' + name + ' ' + (options.className || ''); + + if (anchor) { + img.style.marginLeft = (-anchor.x) + 'px'; + img.style.marginTop = (-anchor.y) + 'px'; + } + + if (size) { + img.style.width = size.x + 'px'; + img.style.height = size.y + 'px'; + } + }, + + _createImg: function (src, el) { + el = el || document.createElement('img'); + el.src = src; + return el; + }, + + _getIconUrl: function (name) { + return retina && this.options[name + 'RetinaUrl'] || this.options[name + 'Url']; + } +}); + + +// @factory L.icon(options: Icon options) +// Creates an icon instance with the given options. +function icon(options) { + return new Icon(options); +} + +/* + * @miniclass Icon.Default (Icon) + * @aka L.Icon.Default + * @section + * + * A trivial subclass of `Icon`, represents the icon to use in `Marker`s when + * no icon is specified. Points to the blue marker image distributed with Leaflet + * releases. + * + * In order to customize the default icon, just change the properties of `L.Icon.Default.prototype.options` + * (which is a set of `Icon options`). + * + * If you want to _completely_ replace the default icon, override the + * `L.Marker.prototype.options.icon` with your own icon instead. + */ + +var IconDefault = Icon.extend({ + + options: { + iconUrl: 'marker-icon.png', + iconRetinaUrl: 'marker-icon-2x.png', + shadowUrl: 'marker-shadow.png', + iconSize: [25, 41], + iconAnchor: [12, 41], + popupAnchor: [1, -34], + tooltipAnchor: [16, -28], + shadowSize: [41, 41] + }, + + _getIconUrl: function (name) { + if (!IconDefault.imagePath) { // Deprecated, backwards-compatibility only + IconDefault.imagePath = this._detectIconPath(); + } + + // @option imagePath: String + // `Icon.Default` will try to auto-detect the location of the + // blue icon images. If you are placing these images in a non-standard + // way, set this option to point to the right path. + return (this.options.imagePath || IconDefault.imagePath) + Icon.prototype._getIconUrl.call(this, name); + }, + + _detectIconPath: function () { + var el = create$1('div', 'leaflet-default-icon-path', document.body); + var path = getStyle(el, 'background-image') || + getStyle(el, 'backgroundImage'); // IE8 + + document.body.removeChild(el); + + if (path === null || path.indexOf('url') !== 0) { + path = ''; + } else { + path = path.replace(/^url\(["']?/, '').replace(/marker-icon\.png["']?\)$/, ''); + } + + return path; + } +}); + +/* + * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable. + */ + + +/* @namespace Marker + * @section Interaction handlers + * + * Interaction handlers are properties of a marker instance that allow you to control interaction behavior in runtime, enabling or disabling certain features such as dragging (see `Handler` methods). Example: + * + * ```js + * marker.dragging.disable(); + * ``` + * + * @property dragging: Handler + * Marker dragging handler (by both mouse and touch). Only valid when the marker is on the map (Otherwise set [`marker.options.draggable`](#marker-draggable)). + */ + +var MarkerDrag = Handler.extend({ + initialize: function (marker) { + this._marker = marker; + }, + + addHooks: function () { + var icon = this._marker._icon; + + if (!this._draggable) { + this._draggable = new Draggable(icon, icon, true); + } + + this._draggable.on({ + dragstart: this._onDragStart, + predrag: this._onPreDrag, + drag: this._onDrag, + dragend: this._onDragEnd + }, this).enable(); + + addClass(icon, 'leaflet-marker-draggable'); + }, + + removeHooks: function () { + this._draggable.off({ + dragstart: this._onDragStart, + predrag: this._onPreDrag, + drag: this._onDrag, + dragend: this._onDragEnd + }, this).disable(); + + if (this._marker._icon) { + removeClass(this._marker._icon, 'leaflet-marker-draggable'); + } + }, + + moved: function () { + return this._draggable && this._draggable._moved; + }, + + _adjustPan: function (e) { + var marker = this._marker, + map = marker._map, + speed = this._marker.options.autoPanSpeed, + padding = this._marker.options.autoPanPadding, + iconPos = getPosition(marker._icon), + bounds = map.getPixelBounds(), + origin = map.getPixelOrigin(); + + var panBounds = toBounds( + bounds.min._subtract(origin).add(padding), + bounds.max._subtract(origin).subtract(padding) + ); + + if (!panBounds.contains(iconPos)) { + // Compute incremental movement + var movement = toPoint( + (Math.max(panBounds.max.x, iconPos.x) - panBounds.max.x) / (bounds.max.x - panBounds.max.x) - + (Math.min(panBounds.min.x, iconPos.x) - panBounds.min.x) / (bounds.min.x - panBounds.min.x), + + (Math.max(panBounds.max.y, iconPos.y) - panBounds.max.y) / (bounds.max.y - panBounds.max.y) - + (Math.min(panBounds.min.y, iconPos.y) - panBounds.min.y) / (bounds.min.y - panBounds.min.y) + ).multiplyBy(speed); + + map.panBy(movement, {animate: false}); + + this._draggable._newPos._add(movement); + this._draggable._startPos._add(movement); + + setPosition(marker._icon, this._draggable._newPos); + this._onDrag(e); + + this._panRequest = requestAnimFrame(this._adjustPan.bind(this, e)); + } + }, + + _onDragStart: function () { + // @section Dragging events + // @event dragstart: Event + // Fired when the user starts dragging the marker. + + // @event movestart: Event + // Fired when the marker starts moving (because of dragging). + + this._oldLatLng = this._marker.getLatLng(); + this._marker + .closePopup() + .fire('movestart') + .fire('dragstart'); + }, + + _onPreDrag: function (e) { + if (this._marker.options.autoPan) { + cancelAnimFrame(this._panRequest); + this._panRequest = requestAnimFrame(this._adjustPan.bind(this, e)); + } + }, + + _onDrag: function (e) { + var marker = this._marker, + shadow = marker._shadow, + iconPos = getPosition(marker._icon), + latlng = marker._map.layerPointToLatLng(iconPos); + + // update shadow position + if (shadow) { + setPosition(shadow, iconPos); + } + + marker._latlng = latlng; + e.latlng = latlng; + e.oldLatLng = this._oldLatLng; + + // @event drag: Event + // Fired repeatedly while the user drags the marker. + marker + .fire('move', e) + .fire('drag', e); + }, + + _onDragEnd: function (e) { + // @event dragend: DragEndEvent + // Fired when the user stops dragging the marker. + + cancelAnimFrame(this._panRequest); + + // @event moveend: Event + // Fired when the marker stops moving (because of dragging). + delete this._oldLatLng; + this._marker + .fire('moveend') + .fire('dragend', e); + } +}); + +/* + * @class Marker + * @inherits Interactive layer + * @aka L.Marker + * L.Marker is used to display clickable/draggable icons on the map. Extends `Layer`. + * + * @example + * + * ```js + * L.marker([50.5, 30.5]).addTo(map); + * ``` + */ + +var Marker = Layer.extend({ + + // @section + // @aka Marker options + options: { + // @option icon: Icon = * + // Icon instance to use for rendering the marker. + // See [Icon documentation](#L.Icon) for details on how to customize the marker icon. + // If not specified, a common instance of `L.Icon.Default` is used. + icon: new IconDefault(), + + // Option inherited from "Interactive layer" abstract class + interactive: true, + + // @option keyboard: Boolean = true + // Whether the marker can be tabbed to with a keyboard and clicked by pressing enter. + keyboard: true, + + // @option title: String = '' + // Text for the browser tooltip that appear on marker hover (no tooltip by default). + title: '', + + // @option alt: String = '' + // Text for the `alt` attribute of the icon image (useful for accessibility). + alt: '', + + // @option zIndexOffset: Number = 0 + // By default, marker images zIndex is set automatically based on its latitude. Use this option if you want to put the marker on top of all others (or below), specifying a high value like `1000` (or high negative value, respectively). + zIndexOffset: 0, + + // @option opacity: Number = 1.0 + // The opacity of the marker. + opacity: 1, + + // @option riseOnHover: Boolean = false + // If `true`, the marker will get on top of others when you hover the mouse over it. + riseOnHover: false, + + // @option riseOffset: Number = 250 + // The z-index offset used for the `riseOnHover` feature. + riseOffset: 250, + + // @option pane: String = 'markerPane' + // `Map pane` where the markers icon will be added. + pane: 'markerPane', + + // @option pane: String = 'shadowPane' + // `Map pane` where the markers shadow will be added. + shadowPane: 'shadowPane', + + // @option bubblingMouseEvents: Boolean = false + // When `true`, a mouse event on this marker will trigger the same event on the map + // (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used). + bubblingMouseEvents: false, + + // @section Draggable marker options + // @option draggable: Boolean = false + // Whether the marker is draggable with mouse/touch or not. + draggable: false, + + // @option autoPan: Boolean = false + // Whether to pan the map when dragging this marker near its edge or not. + autoPan: false, + + // @option autoPanPadding: Point = Point(50, 50) + // Distance (in pixels to the left/right and to the top/bottom) of the + // map edge to start panning the map. + autoPanPadding: [50, 50], + + // @option autoPanSpeed: Number = 10 + // Number of pixels the map should pan by. + autoPanSpeed: 10 + }, + + /* @section + * + * In addition to [shared layer methods](#Layer) like `addTo()` and `remove()` and [popup methods](#Popup) like bindPopup() you can also use the following methods: + */ + + initialize: function (latlng, options) { + setOptions(this, options); + this._latlng = toLatLng(latlng); + }, + + onAdd: function (map) { + this._zoomAnimated = this._zoomAnimated && map.options.markerZoomAnimation; + + if (this._zoomAnimated) { + map.on('zoomanim', this._animateZoom, this); + } + + this._initIcon(); + this.update(); + }, + + onRemove: function (map) { + if (this.dragging && this.dragging.enabled()) { + this.options.draggable = true; + this.dragging.removeHooks(); + } + delete this.dragging; + + if (this._zoomAnimated) { + map.off('zoomanim', this._animateZoom, this); + } + + this._removeIcon(); + this._removeShadow(); + }, + + getEvents: function () { + return { + zoom: this.update, + viewreset: this.update + }; + }, + + // @method getLatLng: LatLng + // Returns the current geographical position of the marker. + getLatLng: function () { + return this._latlng; + }, + + // @method setLatLng(latlng: LatLng): this + // Changes the marker position to the given point. + setLatLng: function (latlng) { + var oldLatLng = this._latlng; + this._latlng = toLatLng(latlng); + this.update(); + + // @event move: Event + // Fired when the marker is moved via [`setLatLng`](#marker-setlatlng) or by [dragging](#marker-dragging). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`. + return this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng}); + }, + + // @method setZIndexOffset(offset: Number): this + // Changes the [zIndex offset](#marker-zindexoffset) of the marker. + setZIndexOffset: function (offset) { + this.options.zIndexOffset = offset; + return this.update(); + }, + + // @method getIcon: Icon + // Returns the current icon used by the marker + getIcon: function () { + return this.options.icon; + }, + + // @method setIcon(icon: Icon): this + // Changes the marker icon. + setIcon: function (icon) { + + this.options.icon = icon; + + if (this._map) { + this._initIcon(); + this.update(); + } + + if (this._popup) { + this.bindPopup(this._popup, this._popup.options); + } + + return this; + }, + + getElement: function () { + return this._icon; + }, + + update: function () { + + if (this._icon && this._map) { + var pos = this._map.latLngToLayerPoint(this._latlng).round(); + this._setPos(pos); + } + + return this; + }, + + _initIcon: function () { + var options = this.options, + classToAdd = 'leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide'); + + var icon = options.icon.createIcon(this._icon), + addIcon = false; + + // if we're not reusing the icon, remove the old one and init new one + if (icon !== this._icon) { + if (this._icon) { + this._removeIcon(); + } + addIcon = true; + + if (options.title) { + icon.title = options.title; + } + + if (icon.tagName === 'IMG') { + icon.alt = options.alt || ''; + } + } + + addClass(icon, classToAdd); + + if (options.keyboard) { + icon.tabIndex = '0'; + } + + this._icon = icon; + + if (options.riseOnHover) { + this.on({ + mouseover: this._bringToFront, + mouseout: this._resetZIndex + }); + } + + var newShadow = options.icon.createShadow(this._shadow), + addShadow = false; + + if (newShadow !== this._shadow) { + this._removeShadow(); + addShadow = true; + } + + if (newShadow) { + addClass(newShadow, classToAdd); + newShadow.alt = ''; + } + this._shadow = newShadow; + + + if (options.opacity < 1) { + this._updateOpacity(); + } + + + if (addIcon) { + this.getPane().appendChild(this._icon); + } + this._initInteraction(); + if (newShadow && addShadow) { + this.getPane(options.shadowPane).appendChild(this._shadow); + } + }, + + _removeIcon: function () { + if (this.options.riseOnHover) { + this.off({ + mouseover: this._bringToFront, + mouseout: this._resetZIndex + }); + } + + remove(this._icon); + this.removeInteractiveTarget(this._icon); + + this._icon = null; + }, + + _removeShadow: function () { + if (this._shadow) { + remove(this._shadow); + } + this._shadow = null; + }, + + _setPos: function (pos) { + + if (this._icon) { + setPosition(this._icon, pos); + } + + if (this._shadow) { + setPosition(this._shadow, pos); + } + + this._zIndex = pos.y + this.options.zIndexOffset; + + this._resetZIndex(); + }, + + _updateZIndex: function (offset) { + if (this._icon) { + this._icon.style.zIndex = this._zIndex + offset; + } + }, + + _animateZoom: function (opt) { + var pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center).round(); + + this._setPos(pos); + }, + + _initInteraction: function () { + + if (!this.options.interactive) { return; } + + addClass(this._icon, 'leaflet-interactive'); + + this.addInteractiveTarget(this._icon); + + if (MarkerDrag) { + var draggable = this.options.draggable; + if (this.dragging) { + draggable = this.dragging.enabled(); + this.dragging.disable(); + } + + this.dragging = new MarkerDrag(this); + + if (draggable) { + this.dragging.enable(); + } + } + }, + + // @method setOpacity(opacity: Number): this + // Changes the opacity of the marker. + setOpacity: function (opacity) { + this.options.opacity = opacity; + if (this._map) { + this._updateOpacity(); + } + + return this; + }, + + _updateOpacity: function () { + var opacity = this.options.opacity; + + if (this._icon) { + setOpacity(this._icon, opacity); + } + + if (this._shadow) { + setOpacity(this._shadow, opacity); + } + }, + + _bringToFront: function () { + this._updateZIndex(this.options.riseOffset); + }, + + _resetZIndex: function () { + this._updateZIndex(0); + }, + + _getPopupAnchor: function () { + return this.options.icon.options.popupAnchor; + }, + + _getTooltipAnchor: function () { + return this.options.icon.options.tooltipAnchor; + } +}); + + +// factory L.marker(latlng: LatLng, options? : Marker options) + +// @factory L.marker(latlng: LatLng, options? : Marker options) +// Instantiates a Marker object given a geographical point and optionally an options object. +function marker(latlng, options) { + return new Marker(latlng, options); +} + +/* + * @class Path + * @aka L.Path + * @inherits Interactive layer + * + * An abstract class that contains options and constants shared between vector + * overlays (Polygon, Polyline, Circle). Do not use it directly. Extends `Layer`. + */ + +var Path = Layer.extend({ + + // @section + // @aka Path options + options: { + // @option stroke: Boolean = true + // Whether to draw stroke along the path. Set it to `false` to disable borders on polygons or circles. + stroke: true, + + // @option color: String = '#3388ff' + // Stroke color + color: '#3388ff', + + // @option weight: Number = 3 + // Stroke width in pixels + weight: 3, + + // @option opacity: Number = 1.0 + // Stroke opacity + opacity: 1, + + // @option lineCap: String= 'round' + // A string that defines [shape to be used at the end](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linecap) of the stroke. + lineCap: 'round', + + // @option lineJoin: String = 'round' + // A string that defines [shape to be used at the corners](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linejoin) of the stroke. + lineJoin: 'round', + + // @option dashArray: String = null + // A string that defines the stroke [dash pattern](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dasharray). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility). + dashArray: null, + + // @option dashOffset: String = null + // A string that defines the [distance into the dash pattern to start the dash](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dashoffset). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility). + dashOffset: null, + + // @option fill: Boolean = depends + // Whether to fill the path with color. Set it to `false` to disable filling on polygons or circles. + fill: false, + + // @option fillColor: String = * + // Fill color. Defaults to the value of the [`color`](#path-color) option + fillColor: null, + + // @option fillOpacity: Number = 0.2 + // Fill opacity. + fillOpacity: 0.2, + + // @option fillRule: String = 'evenodd' + // A string that defines [how the inside of a shape](https://developer.mozilla.org/docs/Web/SVG/Attribute/fill-rule) is determined. + fillRule: 'evenodd', + + // className: '', + + // Option inherited from "Interactive layer" abstract class + interactive: true, + + // @option bubblingMouseEvents: Boolean = true + // When `true`, a mouse event on this path will trigger the same event on the map + // (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used). + bubblingMouseEvents: true + }, + + beforeAdd: function (map) { + // Renderer is set here because we need to call renderer.getEvents + // before this.getEvents. + this._renderer = map.getRenderer(this); + }, + + onAdd: function () { + this._renderer._initPath(this); + this._reset(); + this._renderer._addPath(this); + }, + + onRemove: function () { + this._renderer._removePath(this); + }, + + // @method redraw(): this + // Redraws the layer. Sometimes useful after you changed the coordinates that the path uses. + redraw: function () { + if (this._map) { + this._renderer._updatePath(this); + } + return this; + }, + + // @method setStyle(style: Path options): this + // Changes the appearance of a Path based on the options in the `Path options` object. + setStyle: function (style) { + setOptions(this, style); + if (this._renderer) { + this._renderer._updateStyle(this); + if (this.options.stroke && style && style.hasOwnProperty('weight')) { + this._updateBounds(); + } + } + return this; + }, + + // @method bringToFront(): this + // Brings the layer to the top of all path layers. + bringToFront: function () { + if (this._renderer) { + this._renderer._bringToFront(this); + } + return this; + }, + + // @method bringToBack(): this + // Brings the layer to the bottom of all path layers. + bringToBack: function () { + if (this._renderer) { + this._renderer._bringToBack(this); + } + return this; + }, + + getElement: function () { + return this._path; + }, + + _reset: function () { + // defined in child classes + this._project(); + this._update(); + }, + + _clickTolerance: function () { + // used when doing hit detection for Canvas layers + return (this.options.stroke ? this.options.weight / 2 : 0) + this._renderer.options.tolerance; + } +}); + +/* + * @class CircleMarker + * @aka L.CircleMarker + * @inherits Path + * + * A circle of a fixed size with radius specified in pixels. Extends `Path`. + */ + +var CircleMarker = Path.extend({ + + // @section + // @aka CircleMarker options + options: { + fill: true, + + // @option radius: Number = 10 + // Radius of the circle marker, in pixels + radius: 10 + }, + + initialize: function (latlng, options) { + setOptions(this, options); + this._latlng = toLatLng(latlng); + this._radius = this.options.radius; + }, + + // @method setLatLng(latLng: LatLng): this + // Sets the position of a circle marker to a new location. + setLatLng: function (latlng) { + var oldLatLng = this._latlng; + this._latlng = toLatLng(latlng); + this.redraw(); + + // @event move: Event + // Fired when the marker is moved via [`setLatLng`](#circlemarker-setlatlng). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`. + return this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng}); + }, + + // @method getLatLng(): LatLng + // Returns the current geographical position of the circle marker + getLatLng: function () { + return this._latlng; + }, + + // @method setRadius(radius: Number): this + // Sets the radius of a circle marker. Units are in pixels. + setRadius: function (radius) { + this.options.radius = this._radius = radius; + return this.redraw(); + }, + + // @method getRadius(): Number + // Returns the current radius of the circle + getRadius: function () { + return this._radius; + }, + + setStyle : function (options) { + var radius = options && options.radius || this._radius; + Path.prototype.setStyle.call(this, options); + this.setRadius(radius); + return this; + }, + + _project: function () { + this._point = this._map.latLngToLayerPoint(this._latlng); + this._updateBounds(); + }, + + _updateBounds: function () { + var r = this._radius, + r2 = this._radiusY || r, + w = this._clickTolerance(), + p = [r + w, r2 + w]; + this._pxBounds = new Bounds(this._point.subtract(p), this._point.add(p)); + }, + + _update: function () { + if (this._map) { + this._updatePath(); + } + }, + + _updatePath: function () { + this._renderer._updateCircle(this); + }, + + _empty: function () { + return this._radius && !this._renderer._bounds.intersects(this._pxBounds); + }, + + // Needed by the `Canvas` renderer for interactivity + _containsPoint: function (p) { + return p.distanceTo(this._point) <= this._radius + this._clickTolerance(); + } +}); + + +// @factory L.circleMarker(latlng: LatLng, options?: CircleMarker options) +// Instantiates a circle marker object given a geographical point, and an optional options object. +function circleMarker(latlng, options) { + return new CircleMarker(latlng, options); +} + +/* + * @class Circle + * @aka L.Circle + * @inherits CircleMarker + * + * A class for drawing circle overlays on a map. Extends `CircleMarker`. + * + * It's an approximation and starts to diverge from a real circle closer to poles (due to projection distortion). + * + * @example + * + * ```js + * L.circle([50.5, 30.5], {radius: 200}).addTo(map); + * ``` + */ + +var Circle = CircleMarker.extend({ + + initialize: function (latlng, options, legacyOptions) { + if (typeof options === 'number') { + // Backwards compatibility with 0.7.x factory (latlng, radius, options?) + options = extend({}, legacyOptions, {radius: options}); + } + setOptions(this, options); + this._latlng = toLatLng(latlng); + + if (isNaN(this.options.radius)) { throw new Error('Circle radius cannot be NaN'); } + + // @section + // @aka Circle options + // @option radius: Number; Radius of the circle, in meters. + this._mRadius = this.options.radius; + }, + + // @method setRadius(radius: Number): this + // Sets the radius of a circle. Units are in meters. + setRadius: function (radius) { + this._mRadius = radius; + return this.redraw(); + }, + + // @method getRadius(): Number + // Returns the current radius of a circle. Units are in meters. + getRadius: function () { + return this._mRadius; + }, + + // @method getBounds(): LatLngBounds + // Returns the `LatLngBounds` of the path. + getBounds: function () { + var half = [this._radius, this._radiusY || this._radius]; + + return new LatLngBounds( + this._map.layerPointToLatLng(this._point.subtract(half)), + this._map.layerPointToLatLng(this._point.add(half))); + }, + + setStyle: Path.prototype.setStyle, + + _project: function () { + + var lng = this._latlng.lng, + lat = this._latlng.lat, + map = this._map, + crs = map.options.crs; + + if (crs.distance === Earth.distance) { + var d = Math.PI / 180, + latR = (this._mRadius / Earth.R) / d, + top = map.project([lat + latR, lng]), + bottom = map.project([lat - latR, lng]), + p = top.add(bottom).divideBy(2), + lat2 = map.unproject(p).lat, + lngR = Math.acos((Math.cos(latR * d) - Math.sin(lat * d) * Math.sin(lat2 * d)) / + (Math.cos(lat * d) * Math.cos(lat2 * d))) / d; + + if (isNaN(lngR) || lngR === 0) { + lngR = latR / Math.cos(Math.PI / 180 * lat); // Fallback for edge case, #2425 + } + + this._point = p.subtract(map.getPixelOrigin()); + this._radius = isNaN(lngR) ? 0 : p.x - map.project([lat2, lng - lngR]).x; + this._radiusY = p.y - top.y; + + } else { + var latlng2 = crs.unproject(crs.project(this._latlng).subtract([this._mRadius, 0])); + + this._point = map.latLngToLayerPoint(this._latlng); + this._radius = this._point.x - map.latLngToLayerPoint(latlng2).x; + } + + this._updateBounds(); + } +}); + +// @factory L.circle(latlng: LatLng, options?: Circle options) +// Instantiates a circle object given a geographical point, and an options object +// which contains the circle radius. +// @alternative +// @factory L.circle(latlng: LatLng, radius: Number, options?: Circle options) +// Obsolete way of instantiating a circle, for compatibility with 0.7.x code. +// Do not use in new applications or plugins. +function circle(latlng, options, legacyOptions) { + return new Circle(latlng, options, legacyOptions); +} + +/* + * @class Polyline + * @aka L.Polyline + * @inherits Path + * + * A class for drawing polyline overlays on a map. Extends `Path`. + * + * @example + * + * ```js + * // create a red polyline from an array of LatLng points + * var latlngs = [ + * [45.51, -122.68], + * [37.77, -122.43], + * [34.04, -118.2] + * ]; + * + * var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map); + * + * // zoom the map to the polyline + * map.fitBounds(polyline.getBounds()); + * ``` + * + * You can also pass a multi-dimensional array to represent a `MultiPolyline` shape: + * + * ```js + * // create a red polyline from an array of arrays of LatLng points + * var latlngs = [ + * [[45.51, -122.68], + * [37.77, -122.43], + * [34.04, -118.2]], + * [[40.78, -73.91], + * [41.83, -87.62], + * [32.76, -96.72]] + * ]; + * ``` + */ + + +var Polyline = Path.extend({ + + // @section + // @aka Polyline options + options: { + // @option smoothFactor: Number = 1.0 + // How much to simplify the polyline on each zoom level. More means + // better performance and smoother look, and less means more accurate representation. + smoothFactor: 1.0, + + // @option noClip: Boolean = false + // Disable polyline clipping. + noClip: false + }, + + initialize: function (latlngs, options) { + setOptions(this, options); + this._setLatLngs(latlngs); + }, + + // @method getLatLngs(): LatLng[] + // Returns an array of the points in the path, or nested arrays of points in case of multi-polyline. + getLatLngs: function () { + return this._latlngs; + }, + + // @method setLatLngs(latlngs: LatLng[]): this + // Replaces all the points in the polyline with the given array of geographical points. + setLatLngs: function (latlngs) { + this._setLatLngs(latlngs); + return this.redraw(); + }, + + // @method isEmpty(): Boolean + // Returns `true` if the Polyline has no LatLngs. + isEmpty: function () { + return !this._latlngs.length; + }, + + // @method closestLayerPoint(p: Point): Point + // Returns the point closest to `p` on the Polyline. + closestLayerPoint: function (p) { + var minDistance = Infinity, + minPoint = null, + closest = _sqClosestPointOnSegment, + p1, p2; + + for (var j = 0, jLen = this._parts.length; j < jLen; j++) { + var points = this._parts[j]; + + for (var i = 1, len = points.length; i < len; i++) { + p1 = points[i - 1]; + p2 = points[i]; + + var sqDist = closest(p, p1, p2, true); + + if (sqDist < minDistance) { + minDistance = sqDist; + minPoint = closest(p, p1, p2); + } + } + } + if (minPoint) { + minPoint.distance = Math.sqrt(minDistance); + } + return minPoint; + }, + + // @method getCenter(): LatLng + // Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the polyline. + getCenter: function () { + // throws error when not yet added to map as this center calculation requires projected coordinates + if (!this._map) { + throw new Error('Must add layer to map before using getCenter()'); + } + + var i, halfDist, segDist, dist, p1, p2, ratio, + points = this._rings[0], + len = points.length; + + if (!len) { return null; } + + // polyline centroid algorithm; only uses the first ring if there are multiple + + for (i = 0, halfDist = 0; i < len - 1; i++) { + halfDist += points[i].distanceTo(points[i + 1]) / 2; + } + + // The line is so small in the current view that all points are on the same pixel. + if (halfDist === 0) { + return this._map.layerPointToLatLng(points[0]); + } + + for (i = 0, dist = 0; i < len - 1; i++) { + p1 = points[i]; + p2 = points[i + 1]; + segDist = p1.distanceTo(p2); + dist += segDist; + + if (dist > halfDist) { + ratio = (dist - halfDist) / segDist; + return this._map.layerPointToLatLng([ + p2.x - ratio * (p2.x - p1.x), + p2.y - ratio * (p2.y - p1.y) + ]); + } + } + }, + + // @method getBounds(): LatLngBounds + // Returns the `LatLngBounds` of the path. + getBounds: function () { + return this._bounds; + }, + + // @method addLatLng(latlng: LatLng, latlngs? LatLng[]): this + // Adds a given point to the polyline. By default, adds to the first ring of + // the polyline in case of a multi-polyline, but can be overridden by passing + // a specific ring as a LatLng array (that you can earlier access with [`getLatLngs`](#polyline-getlatlngs)). + addLatLng: function (latlng, latlngs) { + latlngs = latlngs || this._defaultShape(); + latlng = toLatLng(latlng); + latlngs.push(latlng); + this._bounds.extend(latlng); + return this.redraw(); + }, + + _setLatLngs: function (latlngs) { + this._bounds = new LatLngBounds(); + this._latlngs = this._convertLatLngs(latlngs); + }, + + _defaultShape: function () { + return isFlat(this._latlngs) ? this._latlngs : this._latlngs[0]; + }, + + // recursively convert latlngs input into actual LatLng instances; calculate bounds along the way + _convertLatLngs: function (latlngs) { + var result = [], + flat = isFlat(latlngs); + + for (var i = 0, len = latlngs.length; i < len; i++) { + if (flat) { + result[i] = toLatLng(latlngs[i]); + this._bounds.extend(result[i]); + } else { + result[i] = this._convertLatLngs(latlngs[i]); + } + } + + return result; + }, + + _project: function () { + var pxBounds = new Bounds(); + this._rings = []; + this._projectLatlngs(this._latlngs, this._rings, pxBounds); + + if (this._bounds.isValid() && pxBounds.isValid()) { + this._rawPxBounds = pxBounds; + this._updateBounds(); + } + }, + + _updateBounds: function () { + var w = this._clickTolerance(), + p = new Point(w, w); + this._pxBounds = new Bounds([ + this._rawPxBounds.min.subtract(p), + this._rawPxBounds.max.add(p) + ]); + }, + + // recursively turns latlngs into a set of rings with projected coordinates + _projectLatlngs: function (latlngs, result, projectedBounds) { + var flat = latlngs[0] instanceof LatLng, + len = latlngs.length, + i, ring; + + if (flat) { + ring = []; + for (i = 0; i < len; i++) { + ring[i] = this._map.latLngToLayerPoint(latlngs[i]); + projectedBounds.extend(ring[i]); + } + result.push(ring); + } else { + for (i = 0; i < len; i++) { + this._projectLatlngs(latlngs[i], result, projectedBounds); + } + } + }, + + // clip polyline by renderer bounds so that we have less to render for performance + _clipPoints: function () { + var bounds = this._renderer._bounds; + + this._parts = []; + if (!this._pxBounds || !this._pxBounds.intersects(bounds)) { + return; + } + + if (this.options.noClip) { + this._parts = this._rings; + return; + } + + var parts = this._parts, + i, j, k, len, len2, segment, points; + + for (i = 0, k = 0, len = this._rings.length; i < len; i++) { + points = this._rings[i]; + + for (j = 0, len2 = points.length; j < len2 - 1; j++) { + segment = clipSegment(points[j], points[j + 1], bounds, j, true); + + if (!segment) { continue; } + + parts[k] = parts[k] || []; + parts[k].push(segment[0]); + + // if segment goes out of screen, or it's the last one, it's the end of the line part + if ((segment[1] !== points[j + 1]) || (j === len2 - 2)) { + parts[k].push(segment[1]); + k++; + } + } + } + }, + + // simplify each clipped part of the polyline for performance + _simplifyPoints: function () { + var parts = this._parts, + tolerance = this.options.smoothFactor; + + for (var i = 0, len = parts.length; i < len; i++) { + parts[i] = simplify(parts[i], tolerance); + } + }, + + _update: function () { + if (!this._map) { return; } + + this._clipPoints(); + this._simplifyPoints(); + this._updatePath(); + }, + + _updatePath: function () { + this._renderer._updatePoly(this); + }, + + // Needed by the `Canvas` renderer for interactivity + _containsPoint: function (p, closed) { + var i, j, k, len, len2, part, + w = this._clickTolerance(); + + if (!this._pxBounds || !this._pxBounds.contains(p)) { return false; } + + // hit detection for polylines + for (i = 0, len = this._parts.length; i < len; i++) { + part = this._parts[i]; + + for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) { + if (!closed && (j === 0)) { continue; } + + if (pointToSegmentDistance(p, part[k], part[j]) <= w) { + return true; + } + } + } + return false; + } +}); + +// @factory L.polyline(latlngs: LatLng[], options?: Polyline options) +// Instantiates a polyline object given an array of geographical points and +// optionally an options object. You can create a `Polyline` object with +// multiple separate lines (`MultiPolyline`) by passing an array of arrays +// of geographic points. +function polyline(latlngs, options) { + return new Polyline(latlngs, options); +} + +// Retrocompat. Allow plugins to support Leaflet versions before and after 1.1. +Polyline._flat = _flat; + +/* + * @class Polygon + * @aka L.Polygon + * @inherits Polyline + * + * A class for drawing polygon overlays on a map. Extends `Polyline`. + * + * Note that points you pass when creating a polygon shouldn't have an additional last point equal to the first one — it's better to filter out such points. + * + * + * @example + * + * ```js + * // create a red polygon from an array of LatLng points + * var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]]; + * + * var polygon = L.polygon(latlngs, {color: 'red'}).addTo(map); + * + * // zoom the map to the polygon + * map.fitBounds(polygon.getBounds()); + * ``` + * + * You can also pass an array of arrays of latlngs, with the first array representing the outer shape and the other arrays representing holes in the outer shape: + * + * ```js + * var latlngs = [ + * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring + * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole + * ]; + * ``` + * + * Additionally, you can pass a multi-dimensional array to represent a MultiPolygon shape. + * + * ```js + * var latlngs = [ + * [ // first polygon + * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring + * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole + * ], + * [ // second polygon + * [[41, -111.03],[45, -111.04],[45, -104.05],[41, -104.05]] + * ] + * ]; + * ``` + */ + +var Polygon = Polyline.extend({ + + options: { + fill: true + }, + + isEmpty: function () { + return !this._latlngs.length || !this._latlngs[0].length; + }, + + getCenter: function () { + // throws error when not yet added to map as this center calculation requires projected coordinates + if (!this._map) { + throw new Error('Must add layer to map before using getCenter()'); + } + + var i, j, p1, p2, f, area, x, y, center, + points = this._rings[0], + len = points.length; + + if (!len) { return null; } + + // polygon centroid algorithm; only uses the first ring if there are multiple + + area = x = y = 0; + + for (i = 0, j = len - 1; i < len; j = i++) { + p1 = points[i]; + p2 = points[j]; + + f = p1.y * p2.x - p2.y * p1.x; + x += (p1.x + p2.x) * f; + y += (p1.y + p2.y) * f; + area += f * 3; + } + + if (area === 0) { + // Polygon is so small that all points are on same pixel. + center = points[0]; + } else { + center = [x / area, y / area]; + } + return this._map.layerPointToLatLng(center); + }, + + _convertLatLngs: function (latlngs) { + var result = Polyline.prototype._convertLatLngs.call(this, latlngs), + len = result.length; + + // remove last point if it equals first one + if (len >= 2 && result[0] instanceof LatLng && result[0].equals(result[len - 1])) { + result.pop(); + } + return result; + }, + + _setLatLngs: function (latlngs) { + Polyline.prototype._setLatLngs.call(this, latlngs); + if (isFlat(this._latlngs)) { + this._latlngs = [this._latlngs]; + } + }, + + _defaultShape: function () { + return isFlat(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0]; + }, + + _clipPoints: function () { + // polygons need a different clipping algorithm so we redefine that + + var bounds = this._renderer._bounds, + w = this.options.weight, + p = new Point(w, w); + + // increase clip padding by stroke width to avoid stroke on clip edges + bounds = new Bounds(bounds.min.subtract(p), bounds.max.add(p)); + + this._parts = []; + if (!this._pxBounds || !this._pxBounds.intersects(bounds)) { + return; + } + + if (this.options.noClip) { + this._parts = this._rings; + return; + } + + for (var i = 0, len = this._rings.length, clipped; i < len; i++) { + clipped = clipPolygon(this._rings[i], bounds, true); + if (clipped.length) { + this._parts.push(clipped); + } + } + }, + + _updatePath: function () { + this._renderer._updatePoly(this, true); + }, + + // Needed by the `Canvas` renderer for interactivity + _containsPoint: function (p) { + var inside = false, + part, p1, p2, i, j, k, len, len2; + + if (!this._pxBounds || !this._pxBounds.contains(p)) { return false; } + + // ray casting algorithm for detecting if point is in polygon + for (i = 0, len = this._parts.length; i < len; i++) { + part = this._parts[i]; + + for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) { + p1 = part[j]; + p2 = part[k]; + + if (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) { + inside = !inside; + } + } + } + + // also check if it's on polygon stroke + return inside || Polyline.prototype._containsPoint.call(this, p, true); + } + +}); + + +// @factory L.polygon(latlngs: LatLng[], options?: Polyline options) +function polygon(latlngs, options) { + return new Polygon(latlngs, options); +} + +/* + * @class GeoJSON + * @aka L.GeoJSON + * @inherits FeatureGroup + * + * Represents a GeoJSON object or an array of GeoJSON objects. Allows you to parse + * GeoJSON data and display it on the map. Extends `FeatureGroup`. + * + * @example + * + * ```js + * L.geoJSON(data, { + * style: function (feature) { + * return {color: feature.properties.color}; + * } + * }).bindPopup(function (layer) { + * return layer.feature.properties.description; + * }).addTo(map); + * ``` + */ + +var GeoJSON = FeatureGroup.extend({ + + /* @section + * @aka GeoJSON options + * + * @option pointToLayer: Function = * + * A `Function` defining how GeoJSON points spawn Leaflet layers. It is internally + * called when data is added, passing the GeoJSON point feature and its `LatLng`. + * The default is to spawn a default `Marker`: + * ```js + * function(geoJsonPoint, latlng) { + * return L.marker(latlng); + * } + * ``` + * + * @option style: Function = * + * A `Function` defining the `Path options` for styling GeoJSON lines and polygons, + * called internally when data is added. + * The default value is to not override any defaults: + * ```js + * function (geoJsonFeature) { + * return {} + * } + * ``` + * + * @option onEachFeature: Function = * + * A `Function` that will be called once for each created `Feature`, after it has + * been created and styled. Useful for attaching events and popups to features. + * The default is to do nothing with the newly created layers: + * ```js + * function (feature, layer) {} + * ``` + * + * @option filter: Function = * + * A `Function` that will be used to decide whether to include a feature or not. + * The default is to include all features: + * ```js + * function (geoJsonFeature) { + * return true; + * } + * ``` + * Note: dynamically changing the `filter` option will have effect only on newly + * added data. It will _not_ re-evaluate already included features. + * + * @option coordsToLatLng: Function = * + * A `Function` that will be used for converting GeoJSON coordinates to `LatLng`s. + * The default is the `coordsToLatLng` static method. + * + * @option markersInheritOptions: Boolean = false + * Whether default Markers for "Point" type Features inherit from group options. + */ + + initialize: function (geojson, options) { + setOptions(this, options); + + this._layers = {}; + + if (geojson) { + this.addData(geojson); + } + }, + + // @method addData( data ): this + // Adds a GeoJSON object to the layer. + addData: function (geojson) { + var features = isArray(geojson) ? geojson : geojson.features, + i, len, feature; + + if (features) { + for (i = 0, len = features.length; i < len; i++) { + // only add this if geometry or geometries are set and not null + feature = features[i]; + if (feature.geometries || feature.geometry || feature.features || feature.coordinates) { + this.addData(feature); + } + } + return this; + } + + var options = this.options; + + if (options.filter && !options.filter(geojson)) { return this; } + + var layer = geometryToLayer(geojson, options); + if (!layer) { + return this; + } + layer.feature = asFeature(geojson); + + layer.defaultOptions = layer.options; + this.resetStyle(layer); + + if (options.onEachFeature) { + options.onEachFeature(geojson, layer); + } + + return this.addLayer(layer); + }, + + // @method resetStyle( layer? ): this + // Resets the given vector layer's style to the original GeoJSON style, useful for resetting style after hover events. + // If `layer` is omitted, the style of all features in the current layer is reset. + resetStyle: function (layer) { + if (layer === undefined) { + return this.eachLayer(this.resetStyle, this); + } + // reset any custom styles + layer.options = extend({}, layer.defaultOptions); + this._setLayerStyle(layer, this.options.style); + return this; + }, + + // @method setStyle( style ): this + // Changes styles of GeoJSON vector layers with the given style function. + setStyle: function (style) { + return this.eachLayer(function (layer) { + this._setLayerStyle(layer, style); + }, this); + }, + + _setLayerStyle: function (layer, style) { + if (layer.setStyle) { + if (typeof style === 'function') { + style = style(layer.feature); + } + layer.setStyle(style); + } + } +}); + +// @section +// There are several static functions which can be called without instantiating L.GeoJSON: + +// @function geometryToLayer(featureData: Object, options?: GeoJSON options): Layer +// Creates a `Layer` from a given GeoJSON feature. Can use a custom +// [`pointToLayer`](#geojson-pointtolayer) and/or [`coordsToLatLng`](#geojson-coordstolatlng) +// functions if provided as options. +function geometryToLayer(geojson, options) { + + var geometry = geojson.type === 'Feature' ? geojson.geometry : geojson, + coords = geometry ? geometry.coordinates : null, + layers = [], + pointToLayer = options && options.pointToLayer, + _coordsToLatLng = options && options.coordsToLatLng || coordsToLatLng, + latlng, latlngs, i, len; + + if (!coords && !geometry) { + return null; + } + + switch (geometry.type) { + case 'Point': + latlng = _coordsToLatLng(coords); + return _pointToLayer(pointToLayer, geojson, latlng, options); + + case 'MultiPoint': + for (i = 0, len = coords.length; i < len; i++) { + latlng = _coordsToLatLng(coords[i]); + layers.push(_pointToLayer(pointToLayer, geojson, latlng, options)); + } + return new FeatureGroup(layers); + + case 'LineString': + case 'MultiLineString': + latlngs = coordsToLatLngs(coords, geometry.type === 'LineString' ? 0 : 1, _coordsToLatLng); + return new Polyline(latlngs, options); + + case 'Polygon': + case 'MultiPolygon': + latlngs = coordsToLatLngs(coords, geometry.type === 'Polygon' ? 1 : 2, _coordsToLatLng); + return new Polygon(latlngs, options); + + case 'GeometryCollection': + for (i = 0, len = geometry.geometries.length; i < len; i++) { + var layer = geometryToLayer({ + geometry: geometry.geometries[i], + type: 'Feature', + properties: geojson.properties + }, options); + + if (layer) { + layers.push(layer); + } + } + return new FeatureGroup(layers); + + default: + throw new Error('Invalid GeoJSON object.'); + } +} + +function _pointToLayer(pointToLayerFn, geojson, latlng, options) { + return pointToLayerFn ? + pointToLayerFn(geojson, latlng) : + new Marker(latlng, options && options.markersInheritOptions && options); +} + +// @function coordsToLatLng(coords: Array): LatLng +// Creates a `LatLng` object from an array of 2 numbers (longitude, latitude) +// or 3 numbers (longitude, latitude, altitude) used in GeoJSON for points. +function coordsToLatLng(coords) { + return new LatLng(coords[1], coords[0], coords[2]); +} + +// @function coordsToLatLngs(coords: Array, levelsDeep?: Number, coordsToLatLng?: Function): Array +// Creates a multidimensional array of `LatLng`s from a GeoJSON coordinates array. +// `levelsDeep` specifies the nesting level (0 is for an array of points, 1 for an array of arrays of points, etc., 0 by default). +// Can use a custom [`coordsToLatLng`](#geojson-coordstolatlng) function. +function coordsToLatLngs(coords, levelsDeep, _coordsToLatLng) { + var latlngs = []; + + for (var i = 0, len = coords.length, latlng; i < len; i++) { + latlng = levelsDeep ? + coordsToLatLngs(coords[i], levelsDeep - 1, _coordsToLatLng) : + (_coordsToLatLng || coordsToLatLng)(coords[i]); + + latlngs.push(latlng); + } + + return latlngs; +} + +// @function latLngToCoords(latlng: LatLng, precision?: Number): Array +// Reverse of [`coordsToLatLng`](#geojson-coordstolatlng) +function latLngToCoords(latlng, precision) { + precision = typeof precision === 'number' ? precision : 6; + return latlng.alt !== undefined ? + [formatNum(latlng.lng, precision), formatNum(latlng.lat, precision), formatNum(latlng.alt, precision)] : + [formatNum(latlng.lng, precision), formatNum(latlng.lat, precision)]; +} + +// @function latLngsToCoords(latlngs: Array, levelsDeep?: Number, closed?: Boolean): Array +// Reverse of [`coordsToLatLngs`](#geojson-coordstolatlngs) +// `closed` determines whether the first point should be appended to the end of the array to close the feature, only used when `levelsDeep` is 0. False by default. +function latLngsToCoords(latlngs, levelsDeep, closed, precision) { + var coords = []; + + for (var i = 0, len = latlngs.length; i < len; i++) { + coords.push(levelsDeep ? + latLngsToCoords(latlngs[i], levelsDeep - 1, closed, precision) : + latLngToCoords(latlngs[i], precision)); + } + + if (!levelsDeep && closed) { + coords.push(coords[0]); + } + + return coords; +} + +function getFeature(layer, newGeometry) { + return layer.feature ? + extend({}, layer.feature, {geometry: newGeometry}) : + asFeature(newGeometry); +} + +// @function asFeature(geojson: Object): Object +// Normalize GeoJSON geometries/features into GeoJSON features. +function asFeature(geojson) { + if (geojson.type === 'Feature' || geojson.type === 'FeatureCollection') { + return geojson; + } + + return { + type: 'Feature', + properties: {}, + geometry: geojson + }; +} + +var PointToGeoJSON = { + toGeoJSON: function (precision) { + return getFeature(this, { + type: 'Point', + coordinates: latLngToCoords(this.getLatLng(), precision) + }); + } +}; + +// @namespace Marker +// @section Other methods +// @method toGeoJSON(precision?: Number): Object +// `precision` is the number of decimal places for coordinates. +// The default value is 6 places. +// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the marker (as a GeoJSON `Point` Feature). +Marker.include(PointToGeoJSON); + +// @namespace CircleMarker +// @method toGeoJSON(precision?: Number): Object +// `precision` is the number of decimal places for coordinates. +// The default value is 6 places. +// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the circle marker (as a GeoJSON `Point` Feature). +Circle.include(PointToGeoJSON); +CircleMarker.include(PointToGeoJSON); + + +// @namespace Polyline +// @method toGeoJSON(precision?: Number): Object +// `precision` is the number of decimal places for coordinates. +// The default value is 6 places. +// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the polyline (as a GeoJSON `LineString` or `MultiLineString` Feature). +Polyline.include({ + toGeoJSON: function (precision) { + var multi = !isFlat(this._latlngs); + + var coords = latLngsToCoords(this._latlngs, multi ? 1 : 0, false, precision); + + return getFeature(this, { + type: (multi ? 'Multi' : '') + 'LineString', + coordinates: coords + }); + } +}); + +// @namespace Polygon +// @method toGeoJSON(precision?: Number): Object +// `precision` is the number of decimal places for coordinates. +// The default value is 6 places. +// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the polygon (as a GeoJSON `Polygon` or `MultiPolygon` Feature). +Polygon.include({ + toGeoJSON: function (precision) { + var holes = !isFlat(this._latlngs), + multi = holes && !isFlat(this._latlngs[0]); + + var coords = latLngsToCoords(this._latlngs, multi ? 2 : holes ? 1 : 0, true, precision); + + if (!holes) { + coords = [coords]; + } + + return getFeature(this, { + type: (multi ? 'Multi' : '') + 'Polygon', + coordinates: coords + }); + } +}); + + +// @namespace LayerGroup +LayerGroup.include({ + toMultiPoint: function (precision) { + var coords = []; + + this.eachLayer(function (layer) { + coords.push(layer.toGeoJSON(precision).geometry.coordinates); + }); + + return getFeature(this, { + type: 'MultiPoint', + coordinates: coords + }); + }, + + // @method toGeoJSON(precision?: Number): Object + // `precision` is the number of decimal places for coordinates. + // The default value is 6 places. + // Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the layer group (as a GeoJSON `FeatureCollection`, `GeometryCollection`, or `MultiPoint`). + toGeoJSON: function (precision) { + + var type = this.feature && this.feature.geometry && this.feature.geometry.type; + + if (type === 'MultiPoint') { + return this.toMultiPoint(precision); + } + + var isGeometryCollection = type === 'GeometryCollection', + jsons = []; + + this.eachLayer(function (layer) { + if (layer.toGeoJSON) { + var json = layer.toGeoJSON(precision); + if (isGeometryCollection) { + jsons.push(json.geometry); + } else { + var feature = asFeature(json); + // Squash nested feature collections + if (feature.type === 'FeatureCollection') { + jsons.push.apply(jsons, feature.features); + } else { + jsons.push(feature); + } + } + } + }); + + if (isGeometryCollection) { + return getFeature(this, { + geometries: jsons, + type: 'GeometryCollection' + }); + } + + return { + type: 'FeatureCollection', + features: jsons + }; + } +}); + +// @namespace GeoJSON +// @factory L.geoJSON(geojson?: Object, options?: GeoJSON options) +// Creates a GeoJSON layer. Optionally accepts an object in +// [GeoJSON format](https://tools.ietf.org/html/rfc7946) to display on the map +// (you can alternatively add it later with `addData` method) and an `options` object. +function geoJSON(geojson, options) { + return new GeoJSON(geojson, options); +} + +// Backward compatibility. +var geoJson = geoJSON; + +/* + * @class ImageOverlay + * @aka L.ImageOverlay + * @inherits Interactive layer + * + * Used to load and display a single image over specific bounds of the map. Extends `Layer`. + * + * @example + * + * ```js + * var imageUrl = 'http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg', + * imageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]]; + * L.imageOverlay(imageUrl, imageBounds).addTo(map); + * ``` + */ + +var ImageOverlay = Layer.extend({ + + // @section + // @aka ImageOverlay options + options: { + // @option opacity: Number = 1.0 + // The opacity of the image overlay. + opacity: 1, + + // @option alt: String = '' + // Text for the `alt` attribute of the image (useful for accessibility). + alt: '', + + // @option interactive: Boolean = false + // If `true`, the image overlay will emit [mouse events](#interactive-layer) when clicked or hovered. + interactive: false, + + // @option crossOrigin: Boolean|String = false + // Whether the crossOrigin attribute will be added to the image. + // If a String is provided, the image will have its crossOrigin attribute set to the String provided. This is needed if you want to access image pixel data. + // Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values. + crossOrigin: false, + + // @option errorOverlayUrl: String = '' + // URL to the overlay image to show in place of the overlay that failed to load. + errorOverlayUrl: '', + + // @option zIndex: Number = 1 + // The explicit [zIndex](https://developer.mozilla.org/docs/Web/CSS/CSS_Positioning/Understanding_z_index) of the overlay layer. + zIndex: 1, + + // @option className: String = '' + // A custom class name to assign to the image. Empty by default. + className: '' + }, + + initialize: function (url, bounds, options) { // (String, LatLngBounds, Object) + this._url = url; + this._bounds = toLatLngBounds(bounds); + + setOptions(this, options); + }, + + onAdd: function () { + if (!this._image) { + this._initImage(); + + if (this.options.opacity < 1) { + this._updateOpacity(); + } + } + + if (this.options.interactive) { + addClass(this._image, 'leaflet-interactive'); + this.addInteractiveTarget(this._image); + } + + this.getPane().appendChild(this._image); + this._reset(); + }, + + onRemove: function () { + remove(this._image); + if (this.options.interactive) { + this.removeInteractiveTarget(this._image); + } + }, + + // @method setOpacity(opacity: Number): this + // Sets the opacity of the overlay. + setOpacity: function (opacity) { + this.options.opacity = opacity; + + if (this._image) { + this._updateOpacity(); + } + return this; + }, + + setStyle: function (styleOpts) { + if (styleOpts.opacity) { + this.setOpacity(styleOpts.opacity); + } + return this; + }, + + // @method bringToFront(): this + // Brings the layer to the top of all overlays. + bringToFront: function () { + if (this._map) { + toFront(this._image); + } + return this; + }, + + // @method bringToBack(): this + // Brings the layer to the bottom of all overlays. + bringToBack: function () { + if (this._map) { + toBack(this._image); + } + return this; + }, + + // @method setUrl(url: String): this + // Changes the URL of the image. + setUrl: function (url) { + this._url = url; + + if (this._image) { + this._image.src = url; + } + return this; + }, + + // @method setBounds(bounds: LatLngBounds): this + // Update the bounds that this ImageOverlay covers + setBounds: function (bounds) { + this._bounds = toLatLngBounds(bounds); + + if (this._map) { + this._reset(); + } + return this; + }, + + getEvents: function () { + var events = { + zoom: this._reset, + viewreset: this._reset + }; + + if (this._zoomAnimated) { + events.zoomanim = this._animateZoom; + } + + return events; + }, + + // @method setZIndex(value: Number): this + // Changes the [zIndex](#imageoverlay-zindex) of the image overlay. + setZIndex: function (value) { + this.options.zIndex = value; + this._updateZIndex(); + return this; + }, + + // @method getBounds(): LatLngBounds + // Get the bounds that this ImageOverlay covers + getBounds: function () { + return this._bounds; + }, + + // @method getElement(): HTMLElement + // Returns the instance of [`HTMLImageElement`](https://developer.mozilla.org/docs/Web/API/HTMLImageElement) + // used by this overlay. + getElement: function () { + return this._image; + }, + + _initImage: function () { + var wasElementSupplied = this._url.tagName === 'IMG'; + var img = this._image = wasElementSupplied ? this._url : create$1('img'); + + addClass(img, 'leaflet-image-layer'); + if (this._zoomAnimated) { addClass(img, 'leaflet-zoom-animated'); } + if (this.options.className) { addClass(img, this.options.className); } + + img.onselectstart = falseFn; + img.onmousemove = falseFn; + + // @event load: Event + // Fired when the ImageOverlay layer has loaded its image + img.onload = bind(this.fire, this, 'load'); + img.onerror = bind(this._overlayOnError, this, 'error'); + + if (this.options.crossOrigin || this.options.crossOrigin === '') { + img.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin; + } + + if (this.options.zIndex) { + this._updateZIndex(); + } + + if (wasElementSupplied) { + this._url = img.src; + return; + } + + img.src = this._url; + img.alt = this.options.alt; + }, + + _animateZoom: function (e) { + var scale = this._map.getZoomScale(e.zoom), + offset = this._map._latLngBoundsToNewLayerBounds(this._bounds, e.zoom, e.center).min; + + setTransform(this._image, offset, scale); + }, + + _reset: function () { + var image = this._image, + bounds = new Bounds( + this._map.latLngToLayerPoint(this._bounds.getNorthWest()), + this._map.latLngToLayerPoint(this._bounds.getSouthEast())), + size = bounds.getSize(); + + setPosition(image, bounds.min); + + image.style.width = size.x + 'px'; + image.style.height = size.y + 'px'; + }, + + _updateOpacity: function () { + setOpacity(this._image, this.options.opacity); + }, + + _updateZIndex: function () { + if (this._image && this.options.zIndex !== undefined && this.options.zIndex !== null) { + this._image.style.zIndex = this.options.zIndex; + } + }, + + _overlayOnError: function () { + // @event error: Event + // Fired when the ImageOverlay layer fails to load its image + this.fire('error'); + + var errorUrl = this.options.errorOverlayUrl; + if (errorUrl && this._url !== errorUrl) { + this._url = errorUrl; + this._image.src = errorUrl; + } + } +}); + +// @factory L.imageOverlay(imageUrl: String, bounds: LatLngBounds, options?: ImageOverlay options) +// Instantiates an image overlay object given the URL of the image and the +// geographical bounds it is tied to. +var imageOverlay = function (url, bounds, options) { + return new ImageOverlay(url, bounds, options); +}; + +/* + * @class VideoOverlay + * @aka L.VideoOverlay + * @inherits ImageOverlay + * + * Used to load and display a video player over specific bounds of the map. Extends `ImageOverlay`. + * + * A video overlay uses the [`

view more info

r`9D_+{y;hLA6;{prd_=Gj~(HTPI!UAE); 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

r`9D_+{y;hLA6;{prd_=Gj~(HTPI!UAE); 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

r`9D_+{y;hLA6;{prd_=Gj~(HTPI!UAE); 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

r`9D_+{y;hLA6;{prd_=Gj~(HTPI!UAE); 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