提交 b37c15ec 编写于 作者: P pah100

add pinch

上级 a394304b
...@@ -553,7 +553,7 @@ ...@@ -553,7 +553,7 @@
* @private * @private
*/ */
_onZoom: function (scale, mouseX, mouseY) { _onZoom: function (scale, mouseX, mouseY) {
if (this._state !== 'animating' && !this._controller.isDragging()) { if (this._state !== 'animating') {
// These param must not be cached. // These param must not be cached.
var viewRoot = this.seriesModel.getViewRoot(); var viewRoot = this.seriesModel.getViewRoot();
......
...@@ -89,10 +89,6 @@ define(function (require) { ...@@ -89,10 +89,6 @@ define(function (require) {
* @private * @private
*/ */
_onZoom: function (controller, coordInfo, scale, mouseX, mouseY) { _onZoom: function (controller, coordInfo, scale, mouseX, mouseY) {
if (controller.isDragging()) {
return;
}
var dataZoomModel = this.dataZoomModel; var dataZoomModel = this.dataZoomModel;
var range = scaleCartesian( var range = scaleCartesian(
scale, [mouseX, mouseY], dataZoomModel.getRange(), scale, [mouseX, mouseY], dataZoomModel.getRange(),
......
...@@ -23,7 +23,8 @@ define(function (require) { ...@@ -23,7 +23,8 @@ define(function (require) {
} }
function mousemove(e) { function mousemove(e) {
if (this._dragging && !this._pinching) { if (this._dragging && e.gestureEvent !== 'pinchchange') {
var rawE = e.event; var rawE = e.event;
rawE.preventDefault && rawE.preventDefault(); rawE.preventDefault && rawE.preventDefault();
...@@ -54,29 +55,19 @@ define(function (require) { ...@@ -54,29 +55,19 @@ define(function (require) {
} }
function mousewheel(e) { function mousewheel(e) {
var scale = e.wheelDelta > 0 ? 1.1 : 1 / 1.1; var zoomDelta = e.wheelDelta < 0 ? 1.1 : 1 / 1.1;
zoom.call(this, e, scale); zoom.call(this, e, zoomDelta, e.offsetX, e.offsetY);
}
function pinchstart() {
this._pinching = true;
}
function pinchchange(e) {
var scale = e.deltaScale > 1 ? 1.1 : 1 / 1.1;
zoom.call(this, e, scale);
} }
function pinchend() { function pinch(e) {
this._pinching = false; var zoomDelta = e.pinchScale > 1 ? 1.1 : 1 / 1.1;
zoom.call(this, e, zoomDelta, e.pinchX, e.pinchY);
} }
function zoom(e, eventScale) { function zoom(e, zoomDelta, zoomX, zoomY) {
var mouseX = e.offsetX;
var mouseY = e.offsetY;
var rect = this.rect; var rect = this.rect;
if (rect && rect.contain(mouseX, mouseY)) { if (rect && rect.contain(zoomX, zoomY)) {
var target = this.target; var target = this.target;
...@@ -85,7 +76,7 @@ define(function (require) { ...@@ -85,7 +76,7 @@ define(function (require) {
var scale = target.scale; var scale = target.scale;
var newZoom = this._zoom = this._zoom || 1; var newZoom = this._zoom = this._zoom || 1;
newZoom *= eventScale; newZoom *= zoomDelta;
// newZoom = Math.max( // newZoom = Math.max(
// Math.min(target.maxZoom, newZoom), // Math.min(target.maxZoom, newZoom),
// target.minZoom // target.minZoom
...@@ -93,15 +84,15 @@ define(function (require) { ...@@ -93,15 +84,15 @@ define(function (require) {
var zoomScale = newZoom / this._zoom; var zoomScale = newZoom / this._zoom;
this._zoom = newZoom; this._zoom = newZoom;
// Keep the mouse center when scaling // Keep the mouse center when scaling
pos[0] -= (mouseX - pos[0]) * (zoomScale - 1); pos[0] -= (zoomX - pos[0]) * (zoomScale - 1);
pos[1] -= (mouseY - pos[1]) * (zoomScale - 1); pos[1] -= (zoomY - pos[1]) * (zoomScale - 1);
scale[0] *= zoomScale; scale[0] *= zoomScale;
scale[1] *= zoomScale; scale[1] *= zoomScale;
target.dirty(); target.dirty();
} }
this.trigger('zoom', eventScale, mouseX, mouseY); this.trigger('zoom', zoomDelta, zoomX, zoomY);
} }
} }
...@@ -132,9 +123,7 @@ define(function (require) { ...@@ -132,9 +123,7 @@ define(function (require) {
var mousemoveHandler = bind(mousemove, this); var mousemoveHandler = bind(mousemove, this);
var mouseupHandler = bind(mouseup, this); var mouseupHandler = bind(mouseup, this);
var mousewheelHandler = bind(mousewheel, this); var mousewheelHandler = bind(mousewheel, this);
var pinchstartHandler = bind(pinchstart, this); var pinchHandler = bind(pinch, this);
var pinchchangeHandler = bind(pinchchange, this);
var pinchendHandler = bind(pinchend, this);
Eventful.call(this); Eventful.call(this);
...@@ -154,9 +143,7 @@ define(function (require) { ...@@ -154,9 +143,7 @@ define(function (require) {
} }
if (controlType && controlType !== 'pan') { if (controlType && controlType !== 'pan') {
zr.on('mousewheel', mousewheelHandler); zr.on('mousewheel', mousewheelHandler);
zr.on('pinchstart', pinchstartHandler); zr.on('pinch', pinchHandler);
zr.on('pinchchange', pinchchangeHandler);
zr.on('pinchend', pinchendHandler);
} }
}; };
...@@ -165,9 +152,7 @@ define(function (require) { ...@@ -165,9 +152,7 @@ define(function (require) {
zr.off('mousemove', mousemoveHandler); zr.off('mousemove', mousemoveHandler);
zr.off('mouseup', mouseupHandler); zr.off('mouseup', mouseupHandler);
zr.off('mousewheel', mousewheelHandler); zr.off('mousewheel', mousewheelHandler);
zr.off('pinchstart', pinchstartHandler); zr.off('pinch', pinchHandler);
zr.off('pinchchange', pinchchangeHandler);
zr.off('pinchend', pinchendHandler);
}; };
this.dispose = this.disable; this.dispose = this.disable;
......
...@@ -5,6 +5,7 @@ define(function (require) { ...@@ -5,6 +5,7 @@ define(function (require) {
var zrUtil = require('zrender/core/util'); var zrUtil = require('zrender/core/util');
var zrColor = require('zrender/tool/color'); var zrColor = require('zrender/tool/color');
var eventUtil = require('zrender/core/event');
var formatUtil = require('../../util/format'); var formatUtil = require('../../util/format');
var each = zrUtil.each; var each = zrUtil.each;
var toCamelCase = formatUtil.toCamelCase; var toCamelCase = formatUtil.toCamelCase;
...@@ -142,6 +143,33 @@ define(function (require) { ...@@ -142,6 +143,33 @@ define(function (require) {
} }
self._inContent = false; self._inContent = false;
}; };
compromiseMobile(el, container);
}
function compromiseMobile(tooltipContentEl, container) {
// Prevent default behavior on mobile. For example,
// defuault pinch gesture will cause browser zoom.
// We do not preventing event on tooltip contnet el,
// because user may need customization in tooltip el.
eventUtil.addEventListener(container, 'touchstart', preventDefault);
eventUtil.addEventListener(container, 'touchmove', preventDefault);
eventUtil.addEventListener(container, 'touchend', preventDefault);
function preventDefault(e) {
if (contains(e.target)) {
e.preventDefault();
}
}
function contains(targetEl) {
while (targetEl && targetEl !== container) {
if (targetEl === tooltipContentEl) {
return true;
}
targetEl = targetEl.parentNode;
}
}
} }
TooltipContent.prototype = { TooltipContent.prototype = {
......
...@@ -2,7 +2,8 @@ require.config({ ...@@ -2,7 +2,8 @@ require.config({
paths: { paths: {
'geoJson': '../geoData/geoJson', 'geoJson': '../geoData/geoJson',
'theme': '../theme', 'theme': '../theme',
'data': './data' 'data': './data',
'map': '../map'
}, },
packages: [ packages: [
{ {
......
...@@ -5,18 +5,32 @@ ...@@ -5,18 +5,32 @@
var infoDom; var infoDom;
var msgs = []; var msgs = [];
var count = 0;
window.facePrint = function (msg, delimiter, max) { window.facePrint = function (msg, delimiter, max) {
if (!infoDom) { if (!infoDom) {
infoDom = createInfoDom(); infoDom = createInfoDom();
} }
msgs.push(encodeHTML(msg)); msgs.push(encodeHTML(msg));
count++;
if (msgs.length > (max || 50)) { if (msgs.length > (max || 30)) {
msgs.shift(); msgs.shift();
} }
infoDom.innerHTML = msgs.join(delimiter || ' '); if (delimiter) {
infoDom.innerHTML = msgs.join(delimiter);
}
else {
var str = '';
// Make some change in view, otherwise user may
// be not aware that log is still printing.
for (var i = 0; i < msgs.length; i++) {
str += msgs[i] + ' ' + (count - msgs.length + i) + ' ';
}
infoDom.innerHTML = str;
}
}; };
function createInfoDom() { function createInfoDom() {
......
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script src="esl.js"></script> <script src="esl.js"></script>
<script src="config.js"></script> <script src="config.js"></script>
<script src="lib/jquery.min.js"></script> <script src="lib/jquery.min.js"></script>
<script src="lib/facePrint.js"></script>
</head> </head>
<body> <body>
<style> <style>
...@@ -25,7 +27,7 @@ ...@@ -25,7 +27,7 @@
'echarts/component/dataRange' 'echarts/component/dataRange'
], function (echarts) { ], function (echarts) {
require(['map/china'], function () { require(['map/js/china'], function () {
var chart = echarts.init(document.getElementById('main'), null, { var chart = echarts.init(document.getElementById('main'), null, {
renderer: 'canvas' renderer: 'canvas'
}); });
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册