Comments (3)
This is a great idea.
I think this could be achieved by editing the onDrag event for select mode to do something to what we do with onClick in polygon mode here:
https://github.com/JamesLMilner/terra-draw/blob/main/src/modes/polygon/polygon.mode.ts#L387
You may need to update DragCoordinateBehavior
to do a check using the selfIntersect
function, probably changing the API schema for drag
to something like this:
public drag(event: TerraDrawMouseEvent, allowSelfIntersection: boolean): boolean {
Then checking the update geometry returns false before we do the update (otherwise just early returning like we do for coordinates that are out of bounds). You'l have to wrap the updated geometry in a Feature as the selfIntersects takes a Feature type. It would probably end up something like this:
if (geometry.type !== 'Point' && !allowSelfIntersection && selfIntersects({ type: "Feature", geometry, properties: {}})) {
return false;
}
Let me know if I can help at all! If you get a chance to write tests that would be great, although not necessarily essential.
from terra-draw.
Closed by accident as I tagged the wrong issue in #69 🤦🏻
from terra-draw.
This is now resolved thanks to @UncatchableAlex - great work! 🎉
from terra-draw.
Related Issues (20)
- In Google Maps Adapter, layers only cleared after callbacks registered for current mode HOT 3
- minPixelDragDistanceSelecting should default to 1 instead of 8
- Remove use of deprecated property in `setCursor` in Google Adapter HOT 4
- Get Circle mode working with touch devices HOT 2
- Document which modes work on touch devices
- Google Maps Adapter setCursor will break in any language setting other than English
- Provide better handling for cursor changing in Google Maps Adapter
- Move ts-node to devDependencies
- The "finish" event is not triggered when the drag end HOT 1
- Document how to use a script tag if required
- Prevent points near close for Freehand mode
- Unit test Google Maps Adapter HOT 3
- Finish Unit testing the Mapbox JS GL Adapter
- Unit test OpenLayers Adapter
- Update the DEVELOPMENT guide to reference Node 18 LTS and npm 9 HOT 1
- Update the DEVELOPMENT guide to reference Node 18 LTS and npm 9 HOT 3
- Update GETTING_STARTED guide with missing examples of how to use Terra Draw with different mapping libraries HOT 1
- Update TypeScript to 5.2.2 HOT 6
- Adapters requirer a config object HOT 1
- 'nocheck' test scripts do not work on Windows HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from terra-draw.