1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.ensureClockwisePolygon = ensureClockwisePolygon;
|
7 | exports.getPointInPolygonsFn = getPointInPolygonsFn;
|
8 |
|
9 | var _pointInBigPolygon = require('point-in-big-polygon');
|
10 |
|
11 | var _pointInBigPolygon2 = _interopRequireDefault(_pointInBigPolygon);
|
12 |
|
13 | var _spherical = require('topojson/lib/topojson/spherical.js');
|
14 |
|
15 | var _cartesian = require('topojson/lib/topojson/cartesian.js');
|
16 |
|
17 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 | function ensureClockwisePolygon(rings) {
|
27 | var isCartesian = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];
|
28 |
|
29 |
|
30 |
|
31 | var ringAreaFn = isCartesian ? _cartesian.ringArea : _spherical.ringArea;
|
32 | for (var i = 0; i < rings.length; i++) {
|
33 | var area = ringAreaFn(rings[i]);
|
34 | if (i === 0 && area < 0 || i > 0 && area > 0) {
|
35 | rings[i].reverse();
|
36 | }
|
37 | }
|
38 | }
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 | function getPointInPolygonsFn(polygons) {
|
47 | var classifiers = polygons.map(_pointInBigPolygon2.default);
|
48 | var npolys = polygons.length;
|
49 |
|
50 | return function (point) {
|
51 | for (var i = 0; i < npolys; i++) {
|
52 | if (classifiers[i](point) <= 0) {
|
53 | return i;
|
54 | }
|
55 | }
|
56 | return -1;
|
57 | };
|
58 | } |
\ | No newline at end of file |