Support mousewheel and doubleclick zooming

This commit is contained in:
Tom MacWright
2012-10-17 16:21:03 -04:00
parent dd2b3de15b
commit f360ec0bc2
2 changed files with 40 additions and 13 deletions

View File

@@ -132,6 +132,26 @@ require(["dojo/_base/lang","dojo/dom-geometry","dojo/dom-class","dojo/on","dojo/
map.zoomOut();
});
$('#map').dblclick(function() {
map.zoomIn();
});
var scroll = 0;
$('#map').bind('mousewheel', function(e) {
e.preventDefault();
scroll += e.originalEvent.wheelDelta;
if (scroll > 300) {
map.zoomIn();
scroll = 0;
}
if (scroll < -300) {
map.zoomOut();
scroll = 0;
}
});
});
</script>

View File

@@ -11,16 +11,18 @@ declare("iD.controller.edit.SelectedWay", [iD.controller.edit.EditBaseState], {
wayUI: null,
entryevent: null,
constructor:function(_way,_event) {
constructor:function(way, event) {
// summary: In 'Edit object' mode and a way is selected.
this.way=_way;
this.entryevent=_event;
this.way = way;
this.entryevent = event;
},
enterState:function() {
this.wayUI=this.controller.map.getUI(this.way);
this.wayUI = this.controller.map.getUI(this.way);
this.wayUI.setStateClass('selected');
this.wayUI.setStateClass('shownodes');
if (this.entryevent) { this.openEditorTooltip(this.entryevent.clientX, this.entryevent.clientY, this.way); }
if (this.entryevent) {
this.openEditorTooltip(this.entryevent.clientX, this.entryevent.clientY, this.way);
}
this.wayUI.redraw();
},
exitState:function() {
@@ -31,25 +33,30 @@ declare("iD.controller.edit.SelectedWay", [iD.controller.edit.EditBaseState], {
},
processMouseEvent:function(event,entityUI) {
var entity=entityUI ? entityUI.entity : null;
var entityType=entity ? entity.entityType : null;
var entity = entityUI ? entityUI.entity : null;
var entityType = entity ? entity.entityType : null;
if (event.type=='click') {
if (event.type === 'click') {
switch (entityType) {
case null:
return new iD.controller.edit.NoSelection();
case 'node':
var ways=entity.parentWays();
if (entity.hasParent(this.way)) { return new iD.controller.edit.SelectedWayNode(entity,this.way); }
else if (ways.length==0) { return new iD.controller.edit.SelectedPOINode(entity); }
else { return new iD.controller.edit.SelectedWayNode(entity,ways[0]); }
var ways = entity.entity.parentWays();
if (entity.entity.hasParent(this.way)) {
return new iD.controller.edit.SelectedWayNode(entity, this.way);
} else if (!ways.length) {
return new iD.controller.edit.SelectedPOINode(entity);
} else {
return new iD.controller.edit.SelectedWayNode(entity, ways[0]);
}
break;
case 'way':
return new iD.controller.edit.SelectedWay(entityUI.entity, event);
}
} else {
}
return this;
},
}
});