Seperate internal and API methods for the map

This commit is contained in:
Tobias Kohr
2019-09-23 17:23:32 +02:00
parent 66746a61bb
commit d4c1589a01
16 changed files with 86 additions and 53 deletions
+1 -1
View File
@@ -117,7 +117,7 @@ raster.on('beforeoperations', function(event) {
const data = event.data; const data = event.data;
data.delta = thresholdControl.value; data.delta = thresholdControl.value;
if (coordinate) { if (coordinate) {
data.pixel = map.getPixelFromCoordinate(coordinate); data.pixel = map.getPixelFromCoordinateExternal(coordinate);
} }
}); });
+1 -1
View File
@@ -74,7 +74,7 @@ class MapBrowserEvent extends MapEvent {
*/ */
get coordinate() { get coordinate() {
if (!this.coordinate_) { if (!this.coordinate_) {
this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel); this.coordinate_ = this.map.getCoordinateFromPixelInternal(this.pixel);
} }
return this.coordinate_; return this.coordinate_;
} }
+3 -3
View File
@@ -419,14 +419,14 @@ class Overlay extends BaseObject {
if (delta[0] !== 0 || delta[1] !== 0) { if (delta[0] !== 0 || delta[1] !== 0) {
const center = /** @type {import("./coordinate.js").Coordinate} */ (map.getView().getCenterInternal()); const center = /** @type {import("./coordinate.js").Coordinate} */ (map.getView().getCenterInternal());
const centerPx = map.getPixelFromCoordinate(center); const centerPx = map.getPixelFromCoordinateInternal(center);
const newCenterPx = [ const newCenterPx = [
centerPx[0] + delta[0], centerPx[0] + delta[0],
centerPx[1] + delta[1] centerPx[1] + delta[1]
]; ];
map.getView().animateInternal({ map.getView().animateInternal({
center: map.getCoordinateFromPixel(newCenterPx), center: map.getCoordinateFromPixelInternal(newCenterPx),
duration: this.autoPanAnimation.duration, duration: this.autoPanAnimation.duration,
easing: this.autoPanAnimation.easing easing: this.autoPanAnimation.easing
}); });
@@ -488,7 +488,7 @@ class Overlay extends BaseObject {
return; return;
} }
const pixel = map.getPixelFromCoordinate(position); const pixel = map.getPixelFromCoordinateInternal(position);
const mapSize = map.getSize(); const mapSize = map.getSize();
this.updateRenderedPosition(pixel, mapSize); this.updateRenderedPosition(pixel, mapSize);
} }
+30 -8
View File
@@ -27,6 +27,7 @@ import LayerGroup from './layer/Group.js';
import {hasArea} from './size.js'; import {hasArea} from './size.js';
import {DROP} from './structs/PriorityQueue.js'; import {DROP} from './structs/PriorityQueue.js';
import {create as createTransform, apply as applyTransform} from './transform.js'; import {create as createTransform, apply as applyTransform} from './transform.js';
import { toUserCoordinate } from './proj.js';
/** /**
@@ -545,7 +546,7 @@ class PluggableMap extends BaseObject {
if (!this.frameState_) { if (!this.frameState_) {
return; return;
} }
const coordinate = this.getCoordinateFromPixel(pixel); const coordinate = this.getCoordinateFromPixelExternal(pixel);
opt_options = opt_options !== undefined ? opt_options : opt_options = opt_options !== undefined ? opt_options :
/** @type {AtPixelOptions} */ ({}); /** @type {AtPixelOptions} */ ({});
const hitTolerance = opt_options.hitTolerance !== undefined ? const hitTolerance = opt_options.hitTolerance !== undefined ?
@@ -617,7 +618,7 @@ class PluggableMap extends BaseObject {
if (!this.frameState_) { if (!this.frameState_) {
return false; return false;
} }
const coordinate = this.getCoordinateFromPixel(pixel); const coordinate = this.getCoordinateFromPixelExternal(pixel);
opt_options = opt_options !== undefined ? opt_options : opt_options = opt_options !== undefined ? opt_options :
/** @type {AtPixelOptions} */ ({}); /** @type {AtPixelOptions} */ ({});
const layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE; const layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;
@@ -634,7 +635,7 @@ class PluggableMap extends BaseObject {
* @api * @api
*/ */
getEventCoordinate(event) { getEventCoordinate(event) {
return this.getCoordinateFromPixel(this.getEventPixel(event)); return this.getCoordinateFromPixelExternal(this.getEventPixel(event));
} }
/** /**
@@ -686,12 +687,22 @@ class PluggableMap extends BaseObject {
/** /**
* Get the coordinate for a given pixel. This returns a coordinate in the * Get the coordinate for a given pixel. This returns a coordinate in the
* map view projection. * user projection.
* @param {import("./pixel.js").Pixel} pixel Pixel position in the map viewport. * @param {import("./pixel.js").Pixel} pixel Pixel position in the map viewport.
* @return {import("./coordinate.js").Coordinate} The coordinate for the pixel position. * @return {import("./coordinate.js").Coordinate} The coordinate for the pixel position.
* @api * @api
*/ */
getCoordinateFromPixel(pixel) { getCoordinateFromPixelExternal(pixel) {
return toUserCoordinate(this.getCoordinateFromPixelInternal(pixel), this.getView().getProjection())
}
/**
* Get the coordinate for a given pixel. This returns a coordinate in the
* map view projection.
* @param {import("./pixel.js").Pixel} pixel Pixel position in the map viewport.
* @return {import("./coordinate.js").Coordinate} The coordinate for the pixel position.
*/
getCoordinateFromPixelInternal(pixel) {
const frameState = this.frameState_; const frameState = this.frameState_;
if (!frameState) { if (!frameState) {
return null; return null;
@@ -699,7 +710,7 @@ class PluggableMap extends BaseObject {
return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice()); return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());
} }
} }
/** /**
* Get the map controls. Modifying this collection changes the controls * Get the map controls. Modifying this collection changes the controls
* associated with the map. * associated with the map.
@@ -783,13 +794,24 @@ class PluggableMap extends BaseObject {
} }
/** /**
* Get the pixel for a coordinate. This takes a coordinate in the map view * Get the pixel for a coordinate. This takes a coordinate in the user
* projection and returns the corresponding pixel. * projection and returns the corresponding pixel.
* @param {import("./coordinate.js").Coordinate} coordinate A map coordinate. * @param {import("./coordinate.js").Coordinate} coordinate A map coordinate.
* @return {import("./pixel.js").Pixel} A pixel position in the map viewport. * @return {import("./pixel.js").Pixel} A pixel position in the map viewport.
* @api * @api
*/ */
getPixelFromCoordinate(coordinate) { getPixelFromCoordinateExternal(coordinate) {
const userCoordinate = toUserCoordinate(coordinate, this.getView().getProjection());
return this.getPixelFromCoordinateInternal(userCoordinate);
}
/**
* Get the pixel for a coordinate. This takes a coordinate in the map view
* projection and returns the corresponding pixel.
* @param {import("./coordinate.js").Coordinate} coordinate A map coordinate.
* @return {import("./pixel.js").Pixel} A pixel position in the map viewport.
*/
getPixelFromCoordinateInternal(coordinate) {
const frameState = this.frameState_; const frameState = this.frameState_;
if (!frameState) { if (!frameState) {
return null; return null;
+1 -1
View File
@@ -218,7 +218,7 @@ class MousePosition extends Control {
} }
} }
const map = this.getMap(); const map = this.getMap();
const coordinate = map.getCoordinateFromPixel(pixel); const coordinate = map.getCoordinateFromPixelExternal(pixel);
if (coordinate) { if (coordinate) {
this.transform_(coordinate, coordinate); this.transform_(coordinate, coordinate);
const coordinateFormat = this.getCoordinateFormat(); const coordinateFormat = this.getCoordinateFormat();
+2 -2
View File
@@ -361,9 +361,9 @@ class OverviewMap extends Control {
const ovextent = ovview.calculateExtentInternal(ovmapSize); const ovextent = ovview.calculateExtentInternal(ovmapSize);
const topLeftPixel = const topLeftPixel =
ovmap.getPixelFromCoordinate(getTopLeft(extent)); ovmap.getPixelFromCoordinateInternal(getTopLeft(extent));
const bottomRightPixel = const bottomRightPixel =
ovmap.getPixelFromCoordinate(getBottomRight(extent)); ovmap.getPixelFromCoordinateInternal(getBottomRight(extent));
const boxWidth = Math.abs(topLeftPixel[0] - bottomRightPixel[0]); const boxWidth = Math.abs(topLeftPixel[0] - bottomRightPixel[0]);
const boxHeight = Math.abs(topLeftPixel[1] - bottomRightPixel[1]); const boxHeight = Math.abs(topLeftPixel[1] - bottomRightPixel[1]);
+2 -2
View File
@@ -114,8 +114,8 @@ class DragPan extends PointerInteraction {
const distance = this.kinetic_.getDistance(); const distance = this.kinetic_.getDistance();
const angle = this.kinetic_.getAngle(); const angle = this.kinetic_.getAngle();
const center = view.getCenterInternal(); const center = view.getCenterInternal();
const centerpx = map.getPixelFromCoordinate(center); const centerpx = map.getPixelFromCoordinateInternal(center);
const dest = map.getCoordinateFromPixel([ const dest = map.getCoordinateFromPixelInternal([
centerpx[0] - distance * Math.cos(angle), centerpx[0] - distance * Math.cos(angle),
centerpx[1] - distance * Math.sin(angle) centerpx[1] - distance * Math.sin(angle)
]); ]);
+2 -2
View File
@@ -75,8 +75,8 @@ function onBoxEnd() {
if (this.out_) { if (this.out_) {
const mapExtent = view.calculateExtentInternal(size); const mapExtent = view.calculateExtentInternal(size);
const boxPixelExtent = createOrUpdateFromCoordinates([ const boxPixelExtent = createOrUpdateFromCoordinates([
map.getPixelFromCoordinate(getBottomLeft(extent)), map.getPixelFromCoordinateInternal(getBottomLeft(extent)),
map.getPixelFromCoordinate(getTopRight(extent))]); map.getPixelFromCoordinateInternal(getTopRight(extent))]);
const factor = view.getResolutionForExtentInternal(boxPixelExtent, size); const factor = view.getResolutionForExtentInternal(boxPixelExtent, size);
scaleFromCenter(mapExtent, 1 / factor); scaleFromCenter(mapExtent, 1 / factor);
+1 -1
View File
@@ -639,7 +639,7 @@ class Draw extends PointerInteraction {
const map = event.map; const map = event.map;
for (let i = 0, ii = potentiallyFinishCoordinates.length; i < ii; i++) { for (let i = 0, ii = potentiallyFinishCoordinates.length; i < ii; i++) {
const finishCoordinate = potentiallyFinishCoordinates[i]; const finishCoordinate = potentiallyFinishCoordinates[i];
const finishPixel = map.getPixelFromCoordinate(finishCoordinate); const finishPixel = map.getPixelFromCoordinateInternal(finishCoordinate);
const pixel = event.pixel; const pixel = event.pixel;
const dx = pixel[0] - finishPixel[0]; const dx = pixel[0] - finishPixel[0];
const dy = pixel[1] - finishPixel[1]; const dy = pixel[1] - finishPixel[1];
+21 -10
View File
@@ -13,6 +13,7 @@ import PointerInteraction from './Pointer.js';
import VectorLayer from '../layer/Vector.js'; import VectorLayer from '../layer/Vector.js';
import VectorSource from '../source/Vector.js'; import VectorSource from '../source/Vector.js';
import {createEditingStyle} from '../style/Style.js'; import {createEditingStyle} from '../style/Style.js';
import { toUserExtent } from '../proj.js';
/** /**
@@ -177,12 +178,12 @@ class Extent extends PointerInteraction {
* @private * @private
*/ */
snapToVertex_(pixel, map) { snapToVertex_(pixel, map) {
const pixelCoordinate = map.getCoordinateFromPixel(pixel); const pixelCoordinate = map.getCoordinateFromPixelInternal(pixel);
const sortByDistance = function(a, b) { const sortByDistance = function(a, b) {
return squaredDistanceToSegment(pixelCoordinate, a) - return squaredDistanceToSegment(pixelCoordinate, a) -
squaredDistanceToSegment(pixelCoordinate, b); squaredDistanceToSegment(pixelCoordinate, b);
}; };
const extent = this.getExtent(); const extent = this.getExtentInternal();
if (extent) { if (extent) {
//convert extents to line segments and find the segment closest to pixelCoordinate //convert extents to line segments and find the segment closest to pixelCoordinate
const segments = getSegments(extent); const segments = getSegments(extent);
@@ -191,13 +192,13 @@ class Extent extends PointerInteraction {
let vertex = (closestOnSegment(pixelCoordinate, let vertex = (closestOnSegment(pixelCoordinate,
closestSegment)); closestSegment));
const vertexPixel = map.getPixelFromCoordinate(vertex); const vertexPixel = map.getPixelFromCoordinateInternal(vertex);
//if the distance is within tolerance, snap to the segment //if the distance is within tolerance, snap to the segment
if (coordinateDistance(pixel, vertexPixel) <= this.pixelTolerance_) { if (coordinateDistance(pixel, vertexPixel) <= this.pixelTolerance_) {
//test if we should further snap to a vertex //test if we should further snap to a vertex
const pixel1 = map.getPixelFromCoordinate(closestSegment[0]); const pixel1 = map.getPixelFromCoordinateInternal(closestSegment[0]);
const pixel2 = map.getPixelFromCoordinate(closestSegment[1]); const pixel2 = map.getPixelFromCoordinateInternal(closestSegment[1]);
const squaredDist1 = squaredCoordinateDistance(vertexPixel, pixel1); const squaredDist1 = squaredCoordinateDistance(vertexPixel, pixel1);
const squaredDist2 = squaredCoordinateDistance(vertexPixel, pixel2); const squaredDist2 = squaredCoordinateDistance(vertexPixel, pixel2);
const dist = Math.sqrt(Math.min(squaredDist1, squaredDist2)); const dist = Math.sqrt(Math.min(squaredDist1, squaredDist2));
@@ -222,7 +223,7 @@ class Extent extends PointerInteraction {
let vertex = this.snapToVertex_(pixel, map); let vertex = this.snapToVertex_(pixel, map);
if (!vertex) { if (!vertex) {
vertex = map.getCoordinateFromPixel(pixel); vertex = map.getCoordinateFromPixelInternal(pixel);
} }
this.createOrUpdatePointerFeature_(vertex); this.createOrUpdatePointerFeature_(vertex);
} }
@@ -295,7 +296,7 @@ class Extent extends PointerInteraction {
const pixel = mapBrowserEvent.pixel; const pixel = mapBrowserEvent.pixel;
const map = mapBrowserEvent.map; const map = mapBrowserEvent.map;
const extent = this.getExtent(); const extent = this.getExtentInternal();
let vertex = this.snapToVertex_(pixel, map); let vertex = this.snapToVertex_(pixel, map);
//find the extent corner opposite the passed corner //find the extent corner opposite the passed corner
@@ -338,7 +339,7 @@ class Extent extends PointerInteraction {
} }
//no snap - new bbox //no snap - new bbox
} else { } else {
vertex = map.getCoordinateFromPixel(pixel); vertex = map.getCoordinateFromPixelInternal(pixel);
this.setExtent([vertex[0], vertex[1], vertex[0], vertex[1]]); this.setExtent([vertex[0], vertex[1], vertex[0], vertex[1]]);
this.pointerHandler_ = getPointHandler(vertex); this.pointerHandler_ = getPointHandler(vertex);
} }
@@ -363,7 +364,7 @@ class Extent extends PointerInteraction {
handleUpEvent(mapBrowserEvent) { handleUpEvent(mapBrowserEvent) {
this.pointerHandler_ = null; this.pointerHandler_ = null;
//If bbox is zero area, set to null; //If bbox is zero area, set to null;
const extent = this.getExtent(); const extent = this.getExtentInternal();
if (!extent || getArea(extent) === 0) { if (!extent || getArea(extent) === 0) {
this.setExtent(null); this.setExtent(null);
} }
@@ -379,13 +380,23 @@ class Extent extends PointerInteraction {
super.setMap(map); super.setMap(map);
} }
/**
* Returns the current drawn extent in the view projection (or user projection if set)
*
* @return {import("../extent.js").Extent} Drawn extent in the view projection.
* @api
*/
getExtentExternal() {
return toUserExtent(this.getExtentInternal(), this.getMap().getView().getProjection());
}
/** /**
* Returns the current drawn extent in the view projection * Returns the current drawn extent in the view projection
* *
* @return {import("../extent.js").Extent} Drawn extent in the view projection. * @return {import("../extent.js").Extent} Drawn extent in the view projection.
* @api * @api
*/ */
getExtent() { getExtentInternal() {
return this.extent_; return this.extent_;
} }
+5 -5
View File
@@ -775,7 +775,7 @@ class Modify extends PointerInteraction {
return false; return false;
} }
this.handlePointerAtPixel_(evt.pixel, evt.map); this.handlePointerAtPixel_(evt.pixel, evt.map);
const pixelCoordinate = evt.map.getCoordinateFromPixel(evt.pixel); const pixelCoordinate = evt.map.getCoordinateFromPixelInternal(evt.pixel);
this.dragSegments_.length = 0; this.dragSegments_.length = 0;
this.modified_ = false; this.modified_ = false;
const vertexFeature = this.vertexFeature_; const vertexFeature = this.vertexFeature_;
@@ -883,7 +883,7 @@ class Modify extends PointerInteraction {
* @private * @private
*/ */
handlePointerAtPixel_(pixel, map) { handlePointerAtPixel_(pixel, map) {
const pixelCoordinate = map.getCoordinateFromPixel(pixel); const pixelCoordinate = map.getCoordinateFromPixelInternal(pixel);
const sortByDistance = function(a, b) { const sortByDistance = function(a, b) {
return pointDistanceToSegmentDataSquared(pixelCoordinate, a) - return pointDistanceToSegmentDataSquared(pixelCoordinate, a) -
pointDistanceToSegmentDataSquared(pixelCoordinate, b); pointDistanceToSegmentDataSquared(pixelCoordinate, b);
@@ -899,7 +899,7 @@ class Modify extends PointerInteraction {
const node = nodes[0]; const node = nodes[0];
const closestSegment = node.segment; const closestSegment = node.segment;
let vertex = closestOnSegmentData(pixelCoordinate, node); let vertex = closestOnSegmentData(pixelCoordinate, node);
const vertexPixel = map.getPixelFromCoordinate(vertex); const vertexPixel = map.getPixelFromCoordinateInternal(vertex);
let dist = coordinateDistance(pixel, vertexPixel); let dist = coordinateDistance(pixel, vertexPixel);
if (dist <= this.pixelTolerance_) { if (dist <= this.pixelTolerance_) {
/** @type {Object<string, boolean>} */ /** @type {Object<string, boolean>} */
@@ -911,8 +911,8 @@ class Modify extends PointerInteraction {
this.snappedToVertex_ = true; this.snappedToVertex_ = true;
this.createOrUpdateVertexFeature_(vertex); this.createOrUpdateVertexFeature_(vertex);
} else { } else {
const pixel1 = map.getPixelFromCoordinate(closestSegment[0]); const pixel1 = map.getPixelFromCoordinateInternal(closestSegment[0]);
const pixel2 = map.getPixelFromCoordinate(closestSegment[1]); const pixel2 = map.getPixelFromCoordinateInternal(closestSegment[1]);
const squaredDist1 = squaredCoordinateDistance(vertexPixel, pixel1); const squaredDist1 = squaredCoordinateDistance(vertexPixel, pixel1);
const squaredDist2 = squaredCoordinateDistance(vertexPixel, pixel2); const squaredDist2 = squaredCoordinateDistance(vertexPixel, pixel2);
dist = Math.sqrt(Math.min(squaredDist1, squaredDist2)); dist = Math.sqrt(Math.min(squaredDist1, squaredDist2));
+1 -1
View File
@@ -112,7 +112,7 @@ class PinchRotate extends PointerInteraction {
const centroid = centroidFromPointers(this.targetPointers); const centroid = centroidFromPointers(this.targetPointers);
centroid[0] -= viewportPosition.left; centroid[0] -= viewportPosition.left;
centroid[1] -= viewportPosition.top; centroid[1] -= viewportPosition.top;
this.anchor_ = map.getCoordinateFromPixel(centroid); this.anchor_ = map.getCoordinateFromPixelInternal(centroid);
// rotate // rotate
if (this.rotating_) { if (this.rotating_) {
+1 -1
View File
@@ -91,7 +91,7 @@ class PinchZoom extends PointerInteraction {
const centroid = centroidFromPointers(this.targetPointers); const centroid = centroidFromPointers(this.targetPointers);
centroid[0] -= viewportPosition.left; centroid[0] -= viewportPosition.left;
centroid[1] -= viewportPosition.top; centroid[1] -= viewportPosition.top;
this.anchor_ = map.getCoordinateFromPixel(centroid); this.anchor_ = map.getCoordinateFromPixelInternal(centroid);
// scale, bypass the resolution constraint // scale, bypass the resolution constraint
map.render(); map.render();
+9 -9
View File
@@ -384,9 +384,9 @@ class Snap extends PointerInteraction {
*/ */
snapTo(pixel, pixelCoordinate, map) { snapTo(pixel, pixelCoordinate, map) {
const lowerLeft = map.getCoordinateFromPixel( const lowerLeft = map.getCoordinateFromPixelInternal(
[pixel[0] - this.pixelTolerance_, pixel[1] + this.pixelTolerance_]); [pixel[0] - this.pixelTolerance_, pixel[1] + this.pixelTolerance_]);
const upperRight = map.getCoordinateFromPixel( const upperRight = map.getCoordinateFromPixelInternal(
[pixel[0] + this.pixelTolerance_, pixel[1] - this.pixelTolerance_]); [pixel[0] + this.pixelTolerance_, pixel[1] - this.pixelTolerance_]);
const box = boundingExtent([lowerLeft, upperRight]); const box = boundingExtent([lowerLeft, upperRight]);
@@ -412,8 +412,8 @@ class Snap extends PointerInteraction {
const isCircle = segments[0].feature.getGeometry().getType() === const isCircle = segments[0].feature.getGeometry().getType() ===
GeometryType.CIRCLE; GeometryType.CIRCLE;
if (this.vertex_ && !this.edge_) { if (this.vertex_ && !this.edge_) {
pixel1 = map.getPixelFromCoordinate(closestSegment[0]); pixel1 = map.getPixelFromCoordinateInternal(closestSegment[0]);
pixel2 = map.getPixelFromCoordinate(closestSegment[1]); pixel2 = map.getPixelFromCoordinateInternal(closestSegment[1]);
squaredDist1 = squaredCoordinateDistance(pixel, pixel1); squaredDist1 = squaredCoordinateDistance(pixel, pixel1);
squaredDist2 = squaredCoordinateDistance(pixel, pixel2); squaredDist2 = squaredCoordinateDistance(pixel, pixel2);
dist = Math.sqrt(Math.min(squaredDist1, squaredDist2)); dist = Math.sqrt(Math.min(squaredDist1, squaredDist2));
@@ -421,7 +421,7 @@ class Snap extends PointerInteraction {
if (snappedToVertex) { if (snappedToVertex) {
snapped = true; snapped = true;
vertex = squaredDist1 > squaredDist2 ? closestSegment[1] : closestSegment[0]; vertex = squaredDist1 > squaredDist2 ? closestSegment[1] : closestSegment[0];
vertexPixel = map.getPixelFromCoordinate(vertex); vertexPixel = map.getPixelFromCoordinateInternal(vertex);
} }
} else if (this.edge_) { } else if (this.edge_) {
if (isCircle) { if (isCircle) {
@@ -430,19 +430,19 @@ class Snap extends PointerInteraction {
} else { } else {
vertex = closestOnSegment(pixelCoordinate, closestSegment); vertex = closestOnSegment(pixelCoordinate, closestSegment);
} }
vertexPixel = map.getPixelFromCoordinate(vertex); vertexPixel = map.getPixelFromCoordinateInternal(vertex);
if (coordinateDistance(pixel, vertexPixel) <= this.pixelTolerance_) { if (coordinateDistance(pixel, vertexPixel) <= this.pixelTolerance_) {
snapped = true; snapped = true;
if (this.vertex_ && !isCircle) { if (this.vertex_ && !isCircle) {
pixel1 = map.getPixelFromCoordinate(closestSegment[0]); pixel1 = map.getPixelFromCoordinateInternal(closestSegment[0]);
pixel2 = map.getPixelFromCoordinate(closestSegment[1]); pixel2 = map.getPixelFromCoordinateInternal(closestSegment[1]);
squaredDist1 = squaredCoordinateDistance(vertexPixel, pixel1); squaredDist1 = squaredCoordinateDistance(vertexPixel, pixel1);
squaredDist2 = squaredCoordinateDistance(vertexPixel, pixel2); squaredDist2 = squaredCoordinateDistance(vertexPixel, pixel2);
dist = Math.sqrt(Math.min(squaredDist1, squaredDist2)); dist = Math.sqrt(Math.min(squaredDist1, squaredDist2));
snappedToVertex = dist <= this.pixelTolerance_; snappedToVertex = dist <= this.pixelTolerance_;
if (snappedToVertex) { if (snappedToVertex) {
vertex = squaredDist1 > squaredDist2 ? closestSegment[1] : closestSegment[0]; vertex = squaredDist1 > squaredDist2 ? closestSegment[1] : closestSegment[0];
vertexPixel = map.getPixelFromCoordinate(vertex); vertexPixel = map.getPixelFromCoordinateInternal(vertex);
} }
} }
} }
+1 -1
View File
@@ -105,7 +105,7 @@ class RenderBox extends Disposable {
endPixel, endPixel,
[endPixel[0], startPixel[1]] [endPixel[0], startPixel[1]]
]; ];
const coordinates = pixels.map(this.map_.getCoordinateFromPixel, this.map_); const coordinates = pixels.map(this.map_.getCoordinateFromPixelInternal, this.map_);
// close the polygon // close the polygon
coordinates[4] = coordinates[0].slice(); coordinates[4] = coordinates[0].slice();
if (!this.geometry_) { if (!this.geometry_) {
+5 -5
View File
@@ -99,7 +99,7 @@ describe('ol.interaction.Extent', function() {
simulateEvent('pointerdrag', 50, 50, false, 0); simulateEvent('pointerdrag', 50, 50, false, 0);
simulateEvent('pointerup', 50, 50, false, 0); simulateEvent('pointerup', 50, 50, false, 0);
expect(interaction.getExtent()).to.eql([-50, -50, 50, 50]); expect(interaction.getExtentExternal()).to.eql([-50, -50, 50, 50]);
}); });
it('clicking off extent nulls extent', function() { it('clicking off extent nulls extent', function() {
@@ -108,7 +108,7 @@ describe('ol.interaction.Extent', function() {
simulateEvent('pointerdown', -10, -10, false, 0); simulateEvent('pointerdown', -10, -10, false, 0);
simulateEvent('pointerup', -10, -10, false, 0); simulateEvent('pointerup', -10, -10, false, 0);
expect(interaction.getExtent()).to.equal(null); expect(interaction.getExtentExternal()).to.equal(null);
}); });
it('clicking on extent does not null extent', function() { it('clicking on extent does not null extent', function() {
@@ -117,7 +117,7 @@ describe('ol.interaction.Extent', function() {
simulateEvent('pointerdown', 50, 50, false, 0); simulateEvent('pointerdown', 50, 50, false, 0);
simulateEvent('pointerup', 50, 50, false, 0); simulateEvent('pointerup', 50, 50, false, 0);
expect(interaction.getExtent()).to.eql([-50, -50, 50, 50]); expect(interaction.getExtentExternal()).to.eql([-50, -50, 50, 50]);
}); });
it('snap and drag vertex works', function() { it('snap and drag vertex works', function() {
@@ -127,7 +127,7 @@ describe('ol.interaction.Extent', function() {
simulateEvent('pointerdrag', -70, -40, false, 0); simulateEvent('pointerdrag', -70, -40, false, 0);
simulateEvent('pointerup', -70, -40, false, 0); simulateEvent('pointerup', -70, -40, false, 0);
expect(interaction.getExtent()).to.eql([-70, -50, -50, -40]); expect(interaction.getExtentExternal()).to.eql([-70, -50, -50, -40]);
}); });
it('snap and drag edge works', function() { it('snap and drag edge works', function() {
@@ -137,7 +137,7 @@ describe('ol.interaction.Extent', function() {
simulateEvent('pointerdrag', 20, -30, false, 0); simulateEvent('pointerdrag', 20, -30, false, 0);
simulateEvent('pointerup', 20, -30, false, 0); simulateEvent('pointerup', 20, -30, false, 0);
expect(interaction.getExtent()).to.eql([-50, -50, 20, 50]); expect(interaction.getExtentExternal()).to.eql([-50, -50, 20, 50]);
}); });
}); });
}); });