Merge pull request #3774 from pgiraud/measure_tooltips_touchdevice
Measure tooltips touchdevice
This commit is contained in:
+27
-10
@@ -1,4 +1,5 @@
|
|||||||
goog.require('ol.Map');
|
goog.require('ol.Map');
|
||||||
|
goog.require('ol.Observable');
|
||||||
goog.require('ol.Overlay');
|
goog.require('ol.Overlay');
|
||||||
goog.require('ol.Sphere');
|
goog.require('ol.Sphere');
|
||||||
goog.require('ol.View');
|
goog.require('ol.View');
|
||||||
@@ -103,27 +104,20 @@ var pointerMoveHandler = function(evt) {
|
|||||||
}
|
}
|
||||||
/** @type {string} */
|
/** @type {string} */
|
||||||
var helpMsg = 'Click to start drawing';
|
var helpMsg = 'Click to start drawing';
|
||||||
/** @type {ol.Coordinate|undefined} */
|
|
||||||
var tooltipCoord = evt.coordinate;
|
|
||||||
|
|
||||||
if (sketch) {
|
if (sketch) {
|
||||||
var output;
|
|
||||||
var geom = (sketch.getGeometry());
|
var geom = (sketch.getGeometry());
|
||||||
if (geom instanceof ol.geom.Polygon) {
|
if (geom instanceof ol.geom.Polygon) {
|
||||||
output = formatArea(/** @type {ol.geom.Polygon} */ (geom));
|
|
||||||
helpMsg = continuePolygonMsg;
|
helpMsg = continuePolygonMsg;
|
||||||
tooltipCoord = geom.getInteriorPoint().getCoordinates();
|
|
||||||
} else if (geom instanceof ol.geom.LineString) {
|
} else if (geom instanceof ol.geom.LineString) {
|
||||||
output = formatLength( /** @type {ol.geom.LineString} */ (geom));
|
|
||||||
helpMsg = continueLineMsg;
|
helpMsg = continueLineMsg;
|
||||||
tooltipCoord = geom.getLastCoordinate();
|
|
||||||
}
|
}
|
||||||
measureTooltipElement.innerHTML = output;
|
|
||||||
measureTooltip.setPosition(tooltipCoord);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
helpTooltipElement.innerHTML = helpMsg;
|
helpTooltipElement.innerHTML = helpMsg;
|
||||||
helpTooltip.setPosition(evt.coordinate);
|
helpTooltip.setPosition(evt.coordinate);
|
||||||
|
|
||||||
|
$(helpTooltipElement).removeClass('hidden');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -138,6 +132,10 @@ var map = new ol.Map({
|
|||||||
|
|
||||||
map.on('pointermove', pointerMoveHandler);
|
map.on('pointermove', pointerMoveHandler);
|
||||||
|
|
||||||
|
$(map.getViewport()).on('mouseout', function() {
|
||||||
|
$(helpTooltipElement).addClass('hidden');
|
||||||
|
});
|
||||||
|
|
||||||
var typeSelect = document.getElementById('type');
|
var typeSelect = document.getElementById('type');
|
||||||
var geodesicCheckbox = document.getElementById('geodesic');
|
var geodesicCheckbox = document.getElementById('geodesic');
|
||||||
|
|
||||||
@@ -172,10 +170,28 @@ function addInteraction() {
|
|||||||
createMeasureTooltip();
|
createMeasureTooltip();
|
||||||
createHelpTooltip();
|
createHelpTooltip();
|
||||||
|
|
||||||
|
var listener;
|
||||||
draw.on('drawstart',
|
draw.on('drawstart',
|
||||||
function(evt) {
|
function(evt) {
|
||||||
// set sketch
|
// set sketch
|
||||||
sketch = evt.feature;
|
sketch = evt.feature;
|
||||||
|
|
||||||
|
/** @type {ol.Coordinate|undefined} */
|
||||||
|
var tooltipCoord = evt.coordinate;
|
||||||
|
|
||||||
|
listener = sketch.getGeometry().on('change', function(evt) {
|
||||||
|
var geom = evt.target;
|
||||||
|
var output;
|
||||||
|
if (geom instanceof ol.geom.Polygon) {
|
||||||
|
output = formatArea(/** @type {ol.geom.Polygon} */ (geom));
|
||||||
|
tooltipCoord = geom.getInteriorPoint().getCoordinates();
|
||||||
|
} else if (geom instanceof ol.geom.LineString) {
|
||||||
|
output = formatLength( /** @type {ol.geom.LineString} */ (geom));
|
||||||
|
tooltipCoord = geom.getLastCoordinate();
|
||||||
|
}
|
||||||
|
measureTooltipElement.innerHTML = output;
|
||||||
|
measureTooltip.setPosition(tooltipCoord);
|
||||||
|
});
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
draw.on('drawend',
|
draw.on('drawend',
|
||||||
@@ -187,6 +203,7 @@ function addInteraction() {
|
|||||||
// unset tooltip so that a new one can be created
|
// unset tooltip so that a new one can be created
|
||||||
measureTooltipElement = null;
|
measureTooltipElement = null;
|
||||||
createMeasureTooltip();
|
createMeasureTooltip();
|
||||||
|
ol.Observable.unByKey(listener);
|
||||||
}, this);
|
}, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,7 +216,7 @@ function createHelpTooltip() {
|
|||||||
helpTooltipElement.parentNode.removeChild(helpTooltipElement);
|
helpTooltipElement.parentNode.removeChild(helpTooltipElement);
|
||||||
}
|
}
|
||||||
helpTooltipElement = document.createElement('div');
|
helpTooltipElement = document.createElement('div');
|
||||||
helpTooltipElement.className = 'tooltip';
|
helpTooltipElement.className = 'tooltip hidden';
|
||||||
helpTooltip = new ol.Overlay({
|
helpTooltip = new ol.Overlay({
|
||||||
element: helpTooltipElement,
|
element: helpTooltipElement,
|
||||||
offset: [15, 0],
|
offset: [15, 0],
|
||||||
|
|||||||
Reference in New Issue
Block a user