diff options
Diffstat (limited to 'extlib/leaflet/src/layer/vector/Polygon.js')
-rw-r--r-- | extlib/leaflet/src/layer/vector/Polygon.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/extlib/leaflet/src/layer/vector/Polygon.js b/extlib/leaflet/src/layer/vector/Polygon.js new file mode 100644 index 00000000..52bf2d6b --- /dev/null +++ b/extlib/leaflet/src/layer/vector/Polygon.js @@ -0,0 +1,58 @@ +/*
+ * L.Polygon is used to display polygons on a map.
+ */
+
+L.Polygon = L.Polyline.extend({
+ options: {
+ fill: true
+ },
+
+ initialize: function(latlngs, options) {
+ L.Polyline.prototype.initialize.call(this, latlngs, options);
+
+ if (latlngs[0] instanceof Array) {
+ this._latlngs = latlngs[0];
+ this._holes = latlngs.slice(1);
+ }
+ },
+
+ projectLatlngs: function() {
+ L.Polyline.prototype.projectLatlngs.call(this);
+
+ // project polygon holes points
+ // TODO move this logic to Polyline to get rid of duplication
+ this._holePoints = [];
+
+ if (!this._holes) return;
+
+ for (var i = 0, len = this._holes.length, hole; i < len; i++) {
+ this._holePoints[i] = [];
+
+ for(var j = 0, len2 = this._holes[i].length; j < len2; j++) {
+ this._holePoints[i][j] = this._map.latLngToLayerPoint(this._holes[i][j]);
+ }
+ }
+ },
+
+ _clipPoints: function() {
+ var points = this._originalPoints,
+ newParts = [];
+
+ this._parts = [points].concat(this._holePoints);
+
+ if (this.options.noClip) return;
+
+ for (var i = 0, len = this._parts.length; i < len; i++) {
+ var clipped = L.PolyUtil.clipPolygon(this._parts[i], this._map._pathViewport);
+ if (!clipped.length) continue;
+ newParts.push(clipped);
+ }
+
+ this._parts = newParts;
+ },
+
+ _getPathPartStr: function(points) {
+ var str = L.Polyline.prototype._getPathPartStr.call(this, points);
+ return str + (L.Path.SVG ? 'z' : 'x');
+ }
+});
\ No newline at end of file |