Sha256: 78d83d3b84702df976e76166ec13f719e3ec47fded5778545ab8d7c008a25dcc

Contents?: true

Size: 881 Bytes

Versions: 9

Compression:

Stored size: 881 Bytes

Contents

/*
 * Extends L.Polygon to be able to manually detect clicks on Canvas-rendered polygons.
 */

L.Polygon.include(!L.Path.CANVAS ? {} : {
	_containsPoint: function (p) {
		var inside = false,
		    part, p1, p2,
		    i, j, k,
		    len, len2;

		// TODO optimization: check if within bounds first

		if (L.Polyline.prototype._containsPoint.call(this, p, true)) {
			// click on polygon border
			return true;
		}

		// ray casting algorithm for detecting if point is in polygon

		for (i = 0, len = this._parts.length; i < len; i++) {
			part = this._parts[i];

			for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {
				p1 = part[j];
				p2 = part[k];

				if (((p1.y > p.y) !== (p2.y > p.y)) &&
						(p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) {
					inside = !inside;
				}
			}
		}

		return inside;
	}
});

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
leaflet-js-0.7.9 vendor/assets/Leaflet/src/layer/vector/canvas/Polygon.Canvas.js
leaflet-js-0.7.8 vendor/assets/Leaflet/src/layer/vector/canvas/Polygon.Canvas.js
leaflet-js-0.7.7 vendor/assets/Leaflet/src/layer/vector/canvas/Polygon.Canvas.js
leaflet-js-0.7.0.4 lib/leaflet/src/layer/vector/canvas/Polygon.Canvas.js
leaflet-js-0.7.0.3 lib/leaflet/src/layer/vector/canvas/Polygon.Canvas.js
leaflet-js-0.7.0.2 lib/leaflet/src/layer/vector/canvas/Polygon.Canvas.js
leaflet-js-0.7.0.1 lib/leaflet/src/layer/vector/canvas/Polygon.Canvas.js
leaflet-js-0.7.0 lib/leaflet/src/layer/vector/canvas/Polygon.Canvas.js
leaflet-js-0.6.beta4 lib/leaflet/src/layer/vector/canvas/Polygon.Canvas.js