dir/view/theme/diabook/js/jquery.mapquery.mqZoomSlider.js

85 lines
No EOL
2.3 KiB
JavaScript

/* Copyright (c) 2011 by MapQuery Contributors (see AUTHORS for
* full list of contributors). Published under the MIT license.
* See https://github.com/mapquery/mapquery/blob/master/LICENSE for the
* full text of the license. */
/**
#jquery.mapquery.mqZoomSlider.js
The file containing the mqZoomSlider Widget
### *$('selector')*.`mqZoomSlider([options])`
_version added 0.1_
####**Description**: create a widget to show a zoom slider
+ **options**:
- **map**: the mapquery instance
>Returns: widget
The mqZoomSlider widget allows us to display a vertical zoom slider.
$('#zoomslider').mqZoomSlider({
map: '#map'
});
*/
(function($) {
$.template('mqZoomSlider',
'<div class="mq-zoomslider ui-widget ui-helper-clearfix ">'+
'<div class="mq-zoomslider-slider"></div>'+
'</div>');
$.widget("mapQuery.mqZoomSlider", {
options: {
// The MapQuery instance
map: undefined
},
_create: function() {
var map;
var zoom;
var numzoomlevels;
var self = this;
var element = this.element;
//get the mapquery object
map = $(this.options.map).data('mapQuery');
$.tmpl('mqZoomSlider').appendTo(element);
numzoomlevels = map.options.numZoomLevels;
$(".mq-zoomslider-slider", element).slider({
max: numzoomlevels,
min:2,
orientation: 'vertical',
step: 1,
value: numzoomlevels - map.center().zoom,
slide: function(event, ui) {
map.center({zoom:numzoomlevels-ui.value});
},
change: function(event, ui) {
map.center({zoom:numzoomlevels-ui.value});
}
});
map.bind("zoomend",
{widget:self,map:map,control:element},
self._onZoomEnd);
},
_destroy: function() {
this.element.removeClass(' ui-widget ui-helper-clearfix ' +
'ui-corner-all')
.empty();
},
_zoomEnd: function (element,map) {
var slider = element.find('.mq-zoomslider-slider');
slider.slider('value',map.options.numZoomLevels-map.center().zoom);
},
_onZoomEnd: function(evt) {
evt.data.widget._zoomEnd(evt.data.control,evt.data.map);
}
});
})(jQuery);