Skip to content

maptalks/maptalks.isects

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

maptalks.isects

CircleCI NPM Version

A plugin to find self-intersections in a Polygon or MultiPolygon, based on 2d-polygon-self-intersections.

screenshot

Install

  • Install with npm: npm install maptalks.isects.
  • Download from dist directory.
  • Use unpkg CDN: https://unpkg.com/maptalks.isects/dist/maptalks.isects.min.js

Usage

As a plugin, maptalks.isects must be loaded after maptalks.js in browsers.

<script type="text/javascript" src="https://unpkg.com/maptalks/dist/maptalks.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/maptalks.isects/dist/maptalks.isects.min.js"></script>
<script>
//find intersections of polygon
var polygon = new maptalks.Polygon([
    [-10, 0],
    [10, 0],
    [10, 10],
    [1, 10],
    [1, -1],
    [-1, -1],
    [-1, 10],
    [-10, 1]
])
.addTo(layer);

var sects = polygon.isects();

//find intersections of MultiPolygon
var multiPolygon = new maptalks.MultiPolygon([
      [
          [0, 20],
          [20, 20],
          [20, 30],
          [11, 30],
          [11, 11],
          [9, 11],
          [9, 30],
          [0, 21]
      ],
      [
          [-20, 20],
          [0, 20],
          [0, 30],
          [-9, 30],
          [-9, 11],
          [-11, 11],
          [-11, 30],
          [-20, 21]
      ]
  ], {
    symbol : {
      'polygonFill' : '#00f'
    }
  }).addTo(layer);

var mSects = multiPolygon.isects();
</script>

Supported Browsers

IE 9-11, Chrome, Firefox, other modern and mobile browsers.

Examples

API Reference

isects extends Polygon class and MultiPolygon class by adding a new method isects to find self-intersections.

isects()

Find self-intersections

var isects = polygon.isects();
var isects2 = multiPolygon.isects();

Returns Array[] an array containing ring indexes with self-intersections and intersections' coordinates, e.g.

var polygon = new maptalks.Polygon([
    [-10, 0],
    [10, 0],
    [10, 10],
    [1, 10],
    [1, -1],
    [-1, -1],
    [-1, 10],
    [-10, 1]
]);
var sects = polygon.isects();
[
  //[{ring index}, [{coordinates of intersections}]]
  [0, [[1,0], [-1,0]]]
]
//find intersections of MultiPolygon
var multiPolygon = new maptalks.MultiPolygon([
      [
          [0, 20],
          [20, 20],
          [20, 30],
          [11, 30],
          [11, 11],
          [9, 11],
          [9, 30],
          [0, 21]
      ],
      [
          [-20, 20],
          [0, 20],
          [0, 30],
          [-9, 30],
          [-9, 11],
          [-11, 11],
          [-11, 30],
          [-20, 21]
      ]
  ])
var mSects = multiPolygon.isects();
[
  //[{polygon index}, [[{ring index}, [{coordinates of intersections}]]]]
  [0,[[0,[[11,20],[9,20]]]]],
  [1,[[0,[[-9,20],[-11,20]]]]]
]

Contributing

We welcome any kind of contributions including issue reportings, pull requests, documentation corrections, feature requests and any other helps.

Develop

The only source file is index.js.

It is written in ES6, transpiled by babel and tested with mocha and expect.js.

Scripts

  • Install dependencies
$ npm install
  • Watch source changes and generate runnable bundle repeatedly
$ gulp watch
  • Tests
$ npm test
  • Watch source changes and run tests repeatedly
$ gulp tdd
  • Package and generate minified bundles to dist directory
$ gulp minify
  • Lint
$ npm run lint

About

A plugin of maptalks.js to find self-intersections in a polygon or multipolygon

Resources

License

Stars

Watchers

Forks

Packages

No packages published