leaflet-js 0.6.beta4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/CHANGELOG.rdoc +32 -0
- data/LICENSE +21 -0
- data/README.rdoc +54 -0
- data/Rakefile +15 -0
- data/leaflet-js.gemspec +28 -0
- data/lib/leaflet-js.rb +10 -0
- data/lib/leaflet.draw/BREAKINGCHANGES.md +54 -0
- data/lib/leaflet.draw/CHANGELOG.md +73 -0
- data/lib/leaflet.draw/Jakefile.js +26 -0
- data/lib/leaflet.draw/MIT-LICENCE.txt +20 -0
- data/lib/leaflet.draw/README.md +364 -0
- data/lib/leaflet.draw/TODO.md +62 -0
- data/lib/leaflet.draw/build/build.html +243 -0
- data/lib/leaflet.draw/build/build.js +189 -0
- data/lib/leaflet.draw/build/deps.js +75 -0
- data/lib/leaflet.draw/build/hintrc.js +47 -0
- data/lib/leaflet.draw/build/leaflet.draw-include.js +42 -0
- data/lib/leaflet.draw/dist/images/spritesheet.png +0 -0
- data/lib/leaflet.draw/dist/leaflet.draw-src.js +2429 -0
- data/lib/leaflet.draw/dist/leaflet.draw.css +212 -0
- data/lib/leaflet.draw/dist/leaflet.draw.ie.css +44 -0
- data/lib/leaflet.draw/dist/leaflet.draw.js +10 -0
- data/lib/leaflet.draw/examples/basic.html +106 -0
- data/lib/leaflet.draw/examples/edithandlers.html +67 -0
- data/lib/leaflet.draw/examples/libs/images/layers.png +0 -0
- data/lib/leaflet.draw/examples/libs/images/marker-icon.png +0 -0
- data/lib/leaflet.draw/examples/libs/images/marker-icon@2x.png +0 -0
- data/lib/leaflet.draw/examples/libs/images/marker-shadow.png +0 -0
- data/lib/leaflet.draw/examples/libs/leaflet-src.js +8587 -0
- data/lib/leaflet.draw/examples/libs/leaflet.css +459 -0
- data/lib/leaflet.draw/examples/libs/leaflet.ie.css +51 -0
- data/lib/leaflet.draw/package.json +37 -0
- data/lib/leaflet.draw/spec/after.js +2 -0
- data/lib/leaflet.draw/spec/before.js +3 -0
- data/lib/leaflet.draw/spec/expect.js +1253 -0
- data/lib/leaflet.draw/spec/happen.js +93 -0
- data/lib/leaflet.draw/spec/index.html +36 -0
- data/lib/leaflet.draw/spec/karma.conf.js +69 -0
- data/lib/leaflet.draw/spec/sinon.js +4223 -0
- data/lib/leaflet.draw/spec/suites/DrawControlSpec.js +15 -0
- data/lib/leaflet.draw/spec/suites/SpecHelper.js +26 -0
- data/lib/leaflet.draw/src/Control.Draw.js +101 -0
- data/lib/leaflet.draw/src/Leaflet.draw.js +5 -0
- data/lib/leaflet.draw/src/Toolbar.js +187 -0
- data/lib/leaflet.draw/src/Tooltip.js +52 -0
- data/lib/leaflet.draw/src/copyright.js +8 -0
- data/lib/leaflet.draw/src/draw/DrawToolbar.js +107 -0
- data/lib/leaflet.draw/src/draw/handler/Draw.Circle.js +59 -0
- data/lib/leaflet.draw/src/draw/handler/Draw.Feature.js +74 -0
- data/lib/leaflet.draw/src/draw/handler/Draw.Marker.js +97 -0
- data/lib/leaflet.draw/src/draw/handler/Draw.Polygon.js +79 -0
- data/lib/leaflet.draw/src/draw/handler/Draw.Polyline.js +360 -0
- data/lib/leaflet.draw/src/draw/handler/Draw.Rectangle.js +41 -0
- data/lib/leaflet.draw/src/draw/handler/Draw.SimpleShape.js +67 -0
- data/lib/leaflet.draw/src/edit/EditToolbar.js +93 -0
- data/lib/leaflet.draw/src/edit/handler/Edit.Circle.js +63 -0
- data/lib/leaflet.draw/src/edit/handler/Edit.Poly.js +267 -0
- data/lib/leaflet.draw/src/edit/handler/Edit.Rectangle.js +117 -0
- data/lib/leaflet.draw/src/edit/handler/Edit.SimpleShape.js +138 -0
- data/lib/leaflet.draw/src/edit/handler/EditToolbar.Delete.js +109 -0
- data/lib/leaflet.draw/src/edit/handler/EditToolbar.Edit.js +233 -0
- data/lib/leaflet.draw/src/ext/LatLngUtil.js +18 -0
- data/lib/leaflet.draw/src/ext/LineUtil.Intersect.js +15 -0
- data/lib/leaflet.draw/src/ext/Polygon.Intersect.js +27 -0
- data/lib/leaflet.draw/src/ext/Polyline.Intersect.js +85 -0
- data/lib/leaflet.label/CHANGELOG.md +35 -0
- data/lib/leaflet.label/Jakefile.js +21 -0
- data/lib/leaflet.label/MIT-LICENCE.txt +20 -0
- data/lib/leaflet.label/README.md +86 -0
- data/lib/leaflet.label/build/build.js +155 -0
- data/lib/leaflet.label/build/deps.js +24 -0
- data/lib/leaflet.label/build/hint.js +30 -0
- data/lib/leaflet.label/build/hintrc.js +47 -0
- data/lib/leaflet.label/dist/images/death.png +0 -0
- data/lib/leaflet.label/dist/leaflet.label-src.js +359 -0
- data/lib/leaflet.label/dist/leaflet.label.css +33 -0
- data/lib/leaflet.label/dist/leaflet.label.js +9 -0
- data/lib/leaflet.label/example/label.html +82 -0
- data/lib/leaflet.label/libs/leaflet/images/layers.png +0 -0
- data/lib/leaflet.label/libs/leaflet/images/marker-icon.png +0 -0
- data/lib/leaflet.label/libs/leaflet/images/marker-icon@2x.png +0 -0
- data/lib/leaflet.label/libs/leaflet/images/marker-shadow.png +0 -0
- data/lib/leaflet.label/libs/leaflet/leaflet-src.js +8587 -0
- data/lib/leaflet.label/libs/leaflet/leaflet.css +459 -0
- data/lib/leaflet.label/libs/leaflet/leaflet.ie.css +51 -0
- data/lib/leaflet.label/libs/leaflet/leaflet.js +8 -0
- data/lib/leaflet.label/src/FeatureGroup.Label.js +20 -0
- data/lib/leaflet.label/src/Label.js +123 -0
- data/lib/leaflet.label/src/Leaflet.label.js +5 -0
- data/lib/leaflet.label/src/Map.Label.js +7 -0
- data/lib/leaflet.label/src/Marker.Label.js +160 -0
- data/lib/leaflet.label/src/Path.Label.js +55 -0
- data/lib/leaflet.label/src/copyright.js +8 -0
- data/lib/leaflet/CHANGELOG.md +637 -0
- data/lib/leaflet/CONTRIBUTING.md +155 -0
- data/lib/leaflet/Jakefile.js +26 -0
- data/lib/leaflet/LICENSE +23 -0
- data/lib/leaflet/README.md +30 -0
- data/lib/leaflet/build/build.html +243 -0
- data/lib/leaflet/build/build.js +193 -0
- data/lib/leaflet/build/deps.js +256 -0
- data/lib/leaflet/build/hintrc.js +37 -0
- data/lib/leaflet/debug/css/mobile.css +6 -0
- data/lib/leaflet/debug/css/screen.css +5 -0
- data/lib/leaflet/debug/hacks/jitter.html +43 -0
- data/lib/leaflet/debug/leaflet-include.js +59 -0
- data/lib/leaflet/debug/map/canvas.html +47 -0
- data/lib/leaflet/debug/map/controls.html +50 -0
- data/lib/leaflet/debug/map/geolocation.html +35 -0
- data/lib/leaflet/debug/map/image-overlay.html +44 -0
- data/lib/leaflet/debug/map/map-mobile.html +35 -0
- data/lib/leaflet/debug/map/map.html +60 -0
- data/lib/leaflet/debug/map/max-bounds.html +37 -0
- data/lib/leaflet/debug/map/scroll.html +36 -0
- data/lib/leaflet/debug/map/simple-proj.html +45 -0
- data/lib/leaflet/debug/map/wms-marble.html +31 -0
- data/lib/leaflet/debug/map/wms.html +41 -0
- data/lib/leaflet/debug/map/zoomlevels.html +46 -0
- data/lib/leaflet/debug/tests/add_remove_layers.html +88 -0
- data/lib/leaflet/debug/tests/bringtoback.html +38 -0
- data/lib/leaflet/debug/tests/click_on_canvas.html +59 -0
- data/lib/leaflet/debug/tests/click_on_canvas_broken.html +49 -0
- data/lib/leaflet/debug/tests/opacity.html +57 -0
- data/lib/leaflet/debug/tests/remove_while_dragging.html +29 -0
- data/lib/leaflet/debug/tests/removetilewhilepan.html +42 -0
- data/lib/leaflet/debug/tests/reuse_popups.html +41 -0
- data/lib/leaflet/debug/tests/svg_clicks.html +55 -0
- data/lib/leaflet/debug/vector/bounds-extend.html +89 -0
- data/lib/leaflet/debug/vector/feature-group-bounds.html +91 -0
- data/lib/leaflet/debug/vector/geojson-sample.js +53 -0
- data/lib/leaflet/debug/vector/geojson.html +174 -0
- data/lib/leaflet/debug/vector/rectangle.html +54 -0
- data/lib/leaflet/debug/vector/route.js +1 -0
- data/lib/leaflet/debug/vector/touchzoomemu.html +195 -0
- data/lib/leaflet/debug/vector/us-states.js +54 -0
- data/lib/leaflet/debug/vector/vector-bounds.html +70 -0
- data/lib/leaflet/debug/vector/vector-canvas.html +93 -0
- data/lib/leaflet/debug/vector/vector-mobile.html +39 -0
- data/lib/leaflet/debug/vector/vector-simple.html +49 -0
- data/lib/leaflet/debug/vector/vector.html +38 -0
- data/lib/leaflet/dist/images/layers.png +0 -0
- data/lib/leaflet/dist/images/marker-icon-2x.png +0 -0
- data/lib/leaflet/dist/images/marker-icon.png +0 -0
- data/lib/leaflet/dist/images/marker-shadow.png +0 -0
- data/lib/leaflet/dist/leaflet-src.js +8579 -0
- data/lib/leaflet/dist/leaflet.css +459 -0
- data/lib/leaflet/dist/leaflet.ie.css +51 -0
- data/lib/leaflet/dist/leaflet.js +8 -0
- data/lib/leaflet/package.json +22 -0
- data/lib/leaflet/spec/after.js +2 -0
- data/lib/leaflet/spec/before.js +3 -0
- data/lib/leaflet/spec/expect.js +1253 -0
- data/lib/leaflet/spec/happen.js +93 -0
- data/lib/leaflet/spec/index.html +78 -0
- data/lib/leaflet/spec/karma.conf.js +64 -0
- data/lib/leaflet/spec/sinon.js +4223 -0
- data/lib/leaflet/spec/suites/LeafletSpec.js +13 -0
- data/lib/leaflet/spec/suites/SpecHelper.js +26 -0
- data/lib/leaflet/spec/suites/control/Control.AttributionSpec.js +68 -0
- data/lib/leaflet/spec/suites/control/Control.LayersSpec.js +67 -0
- data/lib/leaflet/spec/suites/control/Control.ScaleSpec.js +6 -0
- data/lib/leaflet/spec/suites/core/ClassSpec.js +156 -0
- data/lib/leaflet/spec/suites/core/EventsSpec.js +336 -0
- data/lib/leaflet/spec/suites/core/UtilSpec.js +212 -0
- data/lib/leaflet/spec/suites/dom/DomEventSpec.js +102 -0
- data/lib/leaflet/spec/suites/dom/DomUtilSpec.js +89 -0
- data/lib/leaflet/spec/suites/geo/LatLngBoundsSpec.js +136 -0
- data/lib/leaflet/spec/suites/geo/LatLngSpec.js +118 -0
- data/lib/leaflet/spec/suites/geo/ProjectionSpec.js +47 -0
- data/lib/leaflet/spec/suites/geometry/BoundsSpec.js +87 -0
- data/lib/leaflet/spec/suites/geometry/LineUtilSpec.js +75 -0
- data/lib/leaflet/spec/suites/geometry/PointSpec.js +104 -0
- data/lib/leaflet/spec/suites/geometry/PolyUtilSpec.js +27 -0
- data/lib/leaflet/spec/suites/geometry/TransformationSpec.js +31 -0
- data/lib/leaflet/spec/suites/layer/FeatureGroupSpec.js +36 -0
- data/lib/leaflet/spec/suites/layer/GeoJSONSpec.js +86 -0
- data/lib/leaflet/spec/suites/layer/LayerGroupSpec.js +58 -0
- data/lib/leaflet/spec/suites/layer/PopupSpec.js +59 -0
- data/lib/leaflet/spec/suites/layer/TileLayerSpec.js +87 -0
- data/lib/leaflet/spec/suites/layer/vector/CircleMarkerSpec.js +53 -0
- data/lib/leaflet/spec/suites/layer/vector/CircleSpec.js +17 -0
- data/lib/leaflet/spec/suites/layer/vector/PolygonSpec.js +55 -0
- data/lib/leaflet/spec/suites/layer/vector/PolylineGeometrySpec.js +35 -0
- data/lib/leaflet/spec/suites/layer/vector/PolylineSpec.js +55 -0
- data/lib/leaflet/spec/suites/map/MapSpec.js +244 -0
- data/lib/leaflet/src/Leaflet.js +23 -0
- data/lib/leaflet/src/control/Control.Attribution.js +115 -0
- data/lib/leaflet/src/control/Control.Layers.js +243 -0
- data/lib/leaflet/src/control/Control.Scale.js +112 -0
- data/lib/leaflet/src/control/Control.Zoom.js +86 -0
- data/lib/leaflet/src/control/Control.js +107 -0
- data/lib/leaflet/src/copyright.js +4 -0
- data/lib/leaflet/src/core/Browser.js +96 -0
- data/lib/leaflet/src/core/Class.js +106 -0
- data/lib/leaflet/src/core/Events.js +174 -0
- data/lib/leaflet/src/core/Handler.js +28 -0
- data/lib/leaflet/src/core/Util.js +182 -0
- data/lib/leaflet/src/dom/DomEvent.DoubleTap.js +103 -0
- data/lib/leaflet/src/dom/DomEvent.MsTouch.js +146 -0
- data/lib/leaflet/src/dom/DomEvent.js +211 -0
- data/lib/leaflet/src/dom/DomUtil.js +239 -0
- data/lib/leaflet/src/dom/Draggable.js +198 -0
- data/lib/leaflet/src/dom/PosAnimation.Timer.js +67 -0
- data/lib/leaflet/src/dom/PosAnimation.js +83 -0
- data/lib/leaflet/src/geo/LatLng.js +88 -0
- data/lib/leaflet/src/geo/LatLngBounds.js +153 -0
- data/lib/leaflet/src/geo/crs/CRS.EPSG3395.js +14 -0
- data/lib/leaflet/src/geo/crs/CRS.EPSG3857.js +21 -0
- data/lib/leaflet/src/geo/crs/CRS.EPSG4326.js +10 -0
- data/lib/leaflet/src/geo/crs/CRS.Simple.js +12 -0
- data/lib/leaflet/src/geo/crs/CRS.js +27 -0
- data/lib/leaflet/src/geo/projection/Projection.LonLat.js +13 -0
- data/lib/leaflet/src/geo/projection/Projection.Mercator.js +56 -0
- data/lib/leaflet/src/geo/projection/Projection.SphericalMercator.js +27 -0
- data/lib/leaflet/src/geo/projection/Projection.js +5 -0
- data/lib/leaflet/src/geometry/Bounds.js +95 -0
- data/lib/leaflet/src/geometry/LineUtil.js +202 -0
- data/lib/leaflet/src/geometry/Point.js +119 -0
- data/lib/leaflet/src/geometry/PolyUtil.js +55 -0
- data/lib/leaflet/src/geometry/Transformation.js +31 -0
- data/lib/leaflet/src/images/marker.svg +1 -0
- data/lib/leaflet/src/layer/FeatureGroup.js +81 -0
- data/lib/leaflet/src/layer/GeoJSON.js +245 -0
- data/lib/leaflet/src/layer/ImageOverlay.js +132 -0
- data/lib/leaflet/src/layer/LayerGroup.js +110 -0
- data/lib/leaflet/src/layer/Popup.js +316 -0
- data/lib/leaflet/src/layer/marker/DivIcon.js +43 -0
- data/lib/leaflet/src/layer/marker/Icon.Default.js +51 -0
- data/lib/leaflet/src/layer/marker/Icon.js +101 -0
- data/lib/leaflet/src/layer/marker/Marker.Drag.js +66 -0
- data/lib/leaflet/src/layer/marker/Marker.Popup.js +72 -0
- data/lib/leaflet/src/layer/marker/Marker.js +275 -0
- data/lib/leaflet/src/layer/tile/TileLayer.Anim.js +117 -0
- data/lib/leaflet/src/layer/tile/TileLayer.Canvas.js +60 -0
- data/lib/leaflet/src/layer/tile/TileLayer.WMS.js +83 -0
- data/lib/leaflet/src/layer/tile/TileLayer.js +578 -0
- data/lib/leaflet/src/layer/vector/Circle.js +98 -0
- data/lib/leaflet/src/layer/vector/CircleMarker.js +33 -0
- data/lib/leaflet/src/layer/vector/MultiPoly.js +47 -0
- data/lib/leaflet/src/layer/vector/Path.Popup.js +65 -0
- data/lib/leaflet/src/layer/vector/Path.SVG.js +219 -0
- data/lib/leaflet/src/layer/vector/Path.VML.js +125 -0
- data/lib/leaflet/src/layer/vector/Path.js +115 -0
- data/lib/leaflet/src/layer/vector/Polygon.js +81 -0
- data/lib/leaflet/src/layer/vector/Polyline.js +164 -0
- data/lib/leaflet/src/layer/vector/Rectangle.js +27 -0
- data/lib/leaflet/src/layer/vector/canvas/Circle.Canvas.js +18 -0
- data/lib/leaflet/src/layer/vector/canvas/Path.Canvas.js +196 -0
- data/lib/leaflet/src/layer/vector/canvas/Polygon.Canvas.js +37 -0
- data/lib/leaflet/src/layer/vector/canvas/Polyline.Canvas.js +30 -0
- data/lib/leaflet/src/map/Map.js +743 -0
- data/lib/leaflet/src/map/anim/Map.PanAnimation.js +88 -0
- data/lib/leaflet/src/map/anim/Map.ZoomAnimation.js +90 -0
- data/lib/leaflet/src/map/ext/Map.Geolocation.js +91 -0
- data/lib/leaflet/src/map/handler/Map.BoxZoom.js +104 -0
- data/lib/leaflet/src/map/handler/Map.DoubleClickZoom.js +23 -0
- data/lib/leaflet/src/map/handler/Map.Drag.js +146 -0
- data/lib/leaflet/src/map/handler/Map.Keyboard.js +147 -0
- data/lib/leaflet/src/map/handler/Map.ScrollWheelZoom.js +56 -0
- data/lib/leaflet/src/map/handler/Map.TouchZoom.js +121 -0
- data/vendor/assets/images/layers.png +0 -0
- data/vendor/assets/images/marker-icon-2x.png +0 -0
- data/vendor/assets/images/marker-icon.png +0 -0
- data/vendor/assets/images/marker-shadow.png +0 -0
- data/vendor/assets/images/spritesheet.png +0 -0
- data/vendor/assets/javascripts/leaflet.draw.js +39 -0
- data/vendor/assets/javascripts/leaflet.js +145 -0
- data/vendor/assets/javascripts/leaflet.label.js +9 -0
- data/vendor/assets/stylesheets/leaflet.css.erb +459 -0
- data/vendor/assets/stylesheets/leaflet.draw.css.erb +212 -0
- data/vendor/assets/stylesheets/leaflet.draw.ie.css +44 -0
- data/vendor/assets/stylesheets/leaflet.ie.css +51 -0
- data/vendor/assets/stylesheets/leaflet.label.css +33 -0
- metadata +317 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* L.LatLngUtil contains different utility functions for LatLngs.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
L.LatLngUtil = {
|
|
6
|
+
// Clones a LatLngs[], returns [][]
|
|
7
|
+
cloneLatLngs: function (latlngs) {
|
|
8
|
+
var clone = [];
|
|
9
|
+
for (var i = 0, l = latlngs.length; i < l; i++) {
|
|
10
|
+
clone.push(this.cloneLatLng(latlngs[i]));
|
|
11
|
+
}
|
|
12
|
+
return clone;
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
cloneLatLng: function (latlng) {
|
|
16
|
+
return L.latLng(latlng.lat, latlng.lng);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
L.Util.extend(L.LineUtil, {
|
|
2
|
+
// Checks to see if two line segments intersect. Does not handle degenerate cases.
|
|
3
|
+
// http://compgeom.cs.uiuc.edu/~jeffe/teaching/373/notes/x06-sweepline.pdf
|
|
4
|
+
segmentsIntersect: function (/*Point*/ p, /*Point*/ p1, /*Point*/ p2, /*Point*/ p3) {
|
|
5
|
+
return this._checkCounterclockwise(p, p2, p3) !==
|
|
6
|
+
this._checkCounterclockwise(p1, p2, p3) &&
|
|
7
|
+
this._checkCounterclockwise(p, p1, p2) !==
|
|
8
|
+
this._checkCounterclockwise(p, p1, p3);
|
|
9
|
+
},
|
|
10
|
+
|
|
11
|
+
// check to see if points are in counterclockwise order
|
|
12
|
+
_checkCounterclockwise: function (/*Point*/ p, /*Point*/ p1, /*Point*/ p2) {
|
|
13
|
+
return (p2.y - p.y) * (p1.x - p.x) > (p1.y - p.y) * (p2.x - p.x);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
L.Polygon.include({
|
|
2
|
+
// Checks a polygon for any intersecting line segments. Ignores holes.
|
|
3
|
+
intersects: function () {
|
|
4
|
+
var polylineIntersects,
|
|
5
|
+
points = this._originalPoints,
|
|
6
|
+
len, firstPoint, lastPoint, maxIndex;
|
|
7
|
+
|
|
8
|
+
if (this._tooFewPointsForIntersection()) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
polylineIntersects = L.Polyline.prototype.intersects.call(this);
|
|
13
|
+
|
|
14
|
+
// If already found an intersection don't need to check for any more.
|
|
15
|
+
if (polylineIntersects) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
len = points.length;
|
|
20
|
+
firstPoint = points[0];
|
|
21
|
+
lastPoint = points[len - 1];
|
|
22
|
+
maxIndex = len - 2;
|
|
23
|
+
|
|
24
|
+
// Check the line segment between last and first point. Don't need to check the first line segment (minIndex = 1)
|
|
25
|
+
return this._lineSegmentsIntersectsRange(lastPoint, firstPoint, maxIndex, 1);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
L.Polyline.include({
|
|
2
|
+
// Check to see if this polyline has any linesegments that intersect.
|
|
3
|
+
// NOTE: does not support detecting intersection for degenerate cases.
|
|
4
|
+
intersects: function () {
|
|
5
|
+
var points = this._originalPoints,
|
|
6
|
+
len = points ? points.length : 0,
|
|
7
|
+
i, p, p1;
|
|
8
|
+
|
|
9
|
+
if (this._tooFewPointsForIntersection()) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
for (i = len - 1; i >= 3; i--) {
|
|
14
|
+
p = points[i - 1];
|
|
15
|
+
p1 = points[i];
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
if (this._lineSegmentsIntersectsRange(p, p1, i - 2)) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return false;
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
// Check for intersection if new latlng was added to this polyline.
|
|
27
|
+
// NOTE: does not support detecting intersection for degenerate cases.
|
|
28
|
+
newLatLngIntersects: function (latlng, skipFirst) {
|
|
29
|
+
// Cannot check a polyline for intersecting lats/lngs when not added to the map
|
|
30
|
+
if (!this._map) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return this.newPointIntersects(this._map.latLngToLayerPoint(latlng), skipFirst);
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
// Check for intersection if new point was added to this polyline.
|
|
38
|
+
// newPoint must be a layer point.
|
|
39
|
+
// NOTE: does not support detecting intersection for degenerate cases.
|
|
40
|
+
newPointIntersects: function (newPoint, skipFirst) {
|
|
41
|
+
var points = this._originalPoints,
|
|
42
|
+
len = points ? points.length : 0,
|
|
43
|
+
lastPoint = points ? points[len - 1] : null,
|
|
44
|
+
// The previous previous line segment. Previous line segement doesn't need testing.
|
|
45
|
+
maxIndex = len - 2;
|
|
46
|
+
|
|
47
|
+
if (this._tooFewPointsForIntersection(1)) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return this._lineSegmentsIntersectsRange(lastPoint, newPoint, maxIndex, skipFirst ? 1 : 0);
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
// Polylines with 2 sides can only intersect in cases where points are collinear (we don't support detecting these).
|
|
55
|
+
// Cannot have intersection when < 3 line segments (< 4 points)
|
|
56
|
+
_tooFewPointsForIntersection: function (extraPoints) {
|
|
57
|
+
var points = this._originalPoints,
|
|
58
|
+
len = points ? points.length : 0;
|
|
59
|
+
// Increment length by extraPoints if present
|
|
60
|
+
len += extraPoints || 0;
|
|
61
|
+
|
|
62
|
+
return !this._originalPoints || len <= 3;
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
// Checks a line segment intersections with any line segements before its predecessor.
|
|
66
|
+
// Don't need to check the predecessor as will never intersect.
|
|
67
|
+
_lineSegmentsIntersectsRange: function (p, p1, maxIndex, minIndex) {
|
|
68
|
+
var points = this._originalPoints,
|
|
69
|
+
p2, p3;
|
|
70
|
+
|
|
71
|
+
minIndex = minIndex || 0;
|
|
72
|
+
|
|
73
|
+
// Check all previous line segments (beside the immediately previous) for intersections
|
|
74
|
+
for (var j = maxIndex; j > minIndex; j--) {
|
|
75
|
+
p2 = points[j - 1];
|
|
76
|
+
p3 = points[j];
|
|
77
|
+
|
|
78
|
+
if (L.LineUtil.segmentsIntersect(p, p1, p2, p3)) {
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Leaflet.draw Changelog
|
|
2
|
+
======================
|
|
3
|
+
|
|
4
|
+
## master
|
|
5
|
+
|
|
6
|
+
An in-progress version being developed on the master branch.
|
|
7
|
+
|
|
8
|
+
### Plugin improvements
|
|
9
|
+
|
|
10
|
+
* Added method `L.Marker.setLabelNoHide()` to allow toggling of static marker labels. (inspired by [@kpwebb](https://github.com/kpwebb)). [#20](https://github.com/Leaflet/Leaflet.label/pull/20)
|
|
11
|
+
* Non-static labels will now hide when map container is tapped on touch devices. (by [@snkashis](https://github.com/snkashis)). [#26](https://github.com/Leaflet/Leaflet.label/pull/26)
|
|
12
|
+
* Added ability to set the opacity of the label along with the marker. (inspired by [@snkashis](https://github.com/snkashis)). [#20](https://github.com/Leaflet/Leaflet.label/pull/27)
|
|
13
|
+
|
|
14
|
+
### Bug fixes
|
|
15
|
+
|
|
16
|
+
* Fixed labels not updating position after being dragged. (by [@snkashis](https://github.com/snkashis)). [#13](https://github.com/Leaflet/Leaflet.label/pull/13)
|
|
17
|
+
* Z-Index fixes aimed at static labels. This will ensure that label is shown at the same level as the marker.
|
|
18
|
+
* Correctly remove event listeners in Marker.Label and Path.Label.
|
|
19
|
+
|
|
20
|
+
## 0.1.1 (December 10, 2012)
|
|
21
|
+
|
|
22
|
+
### Plugin improvements
|
|
23
|
+
|
|
24
|
+
* FeatureGroup now supports label methods.
|
|
25
|
+
|
|
26
|
+
### Bug fixes
|
|
27
|
+
|
|
28
|
+
* Fixed bug where label wouldn't hide when unbindLabel was called.
|
|
29
|
+
* Fixed Multi-Poly support.
|
|
30
|
+
* Fixed bug where a label's position wouldn't be updated when a marker moved.
|
|
31
|
+
* Fixed bug where label wouldn't be removed from map when a marker was.
|
|
32
|
+
|
|
33
|
+
## 0.1.0 (October 7, 2012)
|
|
34
|
+
|
|
35
|
+
Initial version of Leaflet.label
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Leaflet.label building and linting scripts.
|
|
3
|
+
|
|
4
|
+
To use, install Node, then run the following commands in the project root:
|
|
5
|
+
|
|
6
|
+
npm install -g jake
|
|
7
|
+
npm install uglify-js
|
|
8
|
+
npm install jshint
|
|
9
|
+
|
|
10
|
+
To check the code and build Leaflet.label from source, run "jake"
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
var build = require('./build/build.js');
|
|
14
|
+
|
|
15
|
+
desc('Check Leaflet.label source for errors with JSHint');
|
|
16
|
+
task('lint', build.lint);
|
|
17
|
+
|
|
18
|
+
desc('Combine and compress Leaflet.label source files');
|
|
19
|
+
task('build', ['lint'], build.build);
|
|
20
|
+
|
|
21
|
+
task('default', ['build']);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright 2012 Jacob Toye
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
Leaflet.label
|
|
2
|
+
=============
|
|
3
|
+
|
|
4
|
+
Leaflet.label is plugin for adding labels to markers & shapes on leaflet powered maps.
|
|
5
|
+
|
|
6
|
+
Check out the [demo](http://leaflet.github.com/Leaflet.label/).
|
|
7
|
+
|
|
8
|
+
##Usage examples
|
|
9
|
+
|
|
10
|
+
If you want to just bind a label to marker that will show when the mouse is over it, it's really easy:
|
|
11
|
+
|
|
12
|
+
````js
|
|
13
|
+
L.marker([-37.7772, 175.2606]).bindLabel('Look revealing label!').addTo(map);
|
|
14
|
+
````
|
|
15
|
+
|
|
16
|
+
Path overlays works the same:
|
|
17
|
+
|
|
18
|
+
````js
|
|
19
|
+
L.polyline([
|
|
20
|
+
[-37.7612, 175.2756],
|
|
21
|
+
[-37.7702, 175.2796],
|
|
22
|
+
[-37.7802, 175.2750],
|
|
23
|
+
]).bindLabel('Even polylines can have labels.').addTo(map)
|
|
24
|
+
````
|
|
25
|
+
|
|
26
|
+
If you would prefer the label to be always visible set the ````noHide: true```` option and call ````showLabel()```` once added to the map:
|
|
27
|
+
|
|
28
|
+
````js
|
|
29
|
+
L.marker([-37.785, 175.263])
|
|
30
|
+
.bindLabel('A sweet static label!', { noHide: true })
|
|
31
|
+
.addTo(map)
|
|
32
|
+
.showLabel();
|
|
33
|
+
````
|
|
34
|
+
|
|
35
|
+
*N.B.* if you call `showLabel()` before it is added to the map the label will not show.
|
|
36
|
+
|
|
37
|
+
##Options
|
|
38
|
+
|
|
39
|
+
When you call ````bindLabel()```` you can pass in an options object. These options are:
|
|
40
|
+
|
|
41
|
+
- **noHide**: doesn't attach event handler for showing/hiding the label on mouseover/out.
|
|
42
|
+
- **className**: the css class to add to the label element
|
|
43
|
+
|
|
44
|
+
##Positioning the label for custom icons
|
|
45
|
+
|
|
46
|
+
The label is positioned relative to the L.Icon's ````iconAnchor```` option. To reposition the label set the ````labelAnchor```` option of your icon. By default ````labelAnchor```` is set so the label will show vertically centered for the default icon (````L.Icon.Default````).
|
|
47
|
+
|
|
48
|
+
E.g. Vertically center an icon with ````iconAnchor```` set as the center of the icon:
|
|
49
|
+
|
|
50
|
+
````js
|
|
51
|
+
var myIcon = L.icon({
|
|
52
|
+
iconUrl: 'my-icon.png',
|
|
53
|
+
iconSize: [20, 20],
|
|
54
|
+
iconAnchor: [10, 10],
|
|
55
|
+
labelAnchor: [6, 0] // as I want the label to appear 2px past the icon (10 + 2 - 6)
|
|
56
|
+
});
|
|
57
|
+
L.marker([-37.7772, 175.2606], {
|
|
58
|
+
icon: myIcon
|
|
59
|
+
}).bindLabel('Look revealing label!').addTo(map);
|
|
60
|
+
````
|
|
61
|
+
|
|
62
|
+
When positioning the label L.Label includes a 6px horizontal padding. you will need to take this into account when setting ````labelAnchor````.
|
|
63
|
+
|
|
64
|
+
##Setting the opacity of a label
|
|
65
|
+
|
|
66
|
+
You can set the opacity of a label by calling the `setOpacity` method on `L.Marker`. By default the opacity will either be **0** or **1**.
|
|
67
|
+
|
|
68
|
+
````js
|
|
69
|
+
// Sets opacity of marker to 0.3 and opacity of label to 1
|
|
70
|
+
markerLabel.setOpacity(0.3);
|
|
71
|
+
|
|
72
|
+
// Sets opacity of marker to 0.3 and opacity of label to 0.3
|
|
73
|
+
markerLabel.setOpacity(0.3, true);
|
|
74
|
+
|
|
75
|
+
// Sets opacity of marker to 0 and opacity of label to 0
|
|
76
|
+
markerLabel.setOpacity(0);
|
|
77
|
+
markerLabel.setOpacity(0, true);
|
|
78
|
+
|
|
79
|
+
// Sets opacity of marker to 1 and opacity of label to 1
|
|
80
|
+
markerLabel.setOpacity(1);
|
|
81
|
+
markerLabel.setOpacity(1, true);
|
|
82
|
+
````
|
|
83
|
+
|
|
84
|
+
##Alternative label plugin
|
|
85
|
+
|
|
86
|
+
My previous label plugin is still available at https://github.com/jacobtoye/Leaflet.iconlabel. This plugin is a little harder to use, however if you want to have both the icon and label bound to the same event this plugin is for you.
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
var fs = require('fs'),
|
|
2
|
+
jshint = require('jshint'),
|
|
3
|
+
UglifyJS = require('uglify-js'),
|
|
4
|
+
|
|
5
|
+
deps = require('./deps.js').deps,
|
|
6
|
+
hintrc = require('./hintrc.js').config;
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
function lintFiles(files) {
|
|
10
|
+
|
|
11
|
+
var errorsFound = 0,
|
|
12
|
+
i, j, len, len2, src, errors, e;
|
|
13
|
+
|
|
14
|
+
for (i = 0, len = files.length; i < len; i++) {
|
|
15
|
+
|
|
16
|
+
jshint.JSHINT(fs.readFileSync(files[i], 'utf8'), hintrc);
|
|
17
|
+
errors = jshint.JSHINT.errors;
|
|
18
|
+
|
|
19
|
+
for (j = 0, len2 = errors.length; j < len2; j++) {
|
|
20
|
+
e = errors[j];
|
|
21
|
+
console.log(files[i] + '\tline ' + e.line + '\tcol ' + e.character + '\t ' + e.reason);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
errorsFound += len2;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return errorsFound;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function getFiles(compsBase32) {
|
|
31
|
+
var memo = {},
|
|
32
|
+
comps;
|
|
33
|
+
|
|
34
|
+
if (compsBase32) {
|
|
35
|
+
comps = parseInt(compsBase32, 32).toString(2).split('');
|
|
36
|
+
console.log('Managing dependencies...');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function addFiles(srcs) {
|
|
40
|
+
for (var j = 0, len = srcs.length; j < len; j++) {
|
|
41
|
+
memo[srcs[j]] = true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
for (var i in deps) {
|
|
46
|
+
if (comps) {
|
|
47
|
+
if (parseInt(comps.pop(), 2) === 1) {
|
|
48
|
+
console.log('\t* ' + i);
|
|
49
|
+
addFiles(deps[i].src);
|
|
50
|
+
} else {
|
|
51
|
+
console.log('\t ' + i);
|
|
52
|
+
}
|
|
53
|
+
} else {
|
|
54
|
+
addFiles(deps[i].src);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
var files = [];
|
|
59
|
+
|
|
60
|
+
for (var src in memo) {
|
|
61
|
+
files.push('src/' + src);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return files;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
exports.lint = function () {
|
|
68
|
+
|
|
69
|
+
var files = getFiles();
|
|
70
|
+
|
|
71
|
+
console.log('Checking for JS errors...');
|
|
72
|
+
|
|
73
|
+
var errorsFound = lintFiles(files);
|
|
74
|
+
|
|
75
|
+
if (errorsFound > 0) {
|
|
76
|
+
console.log(errorsFound + ' error(s) found.\n');
|
|
77
|
+
fail();
|
|
78
|
+
} else {
|
|
79
|
+
console.log('\tCheck passed');
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
function getSizeDelta(newContent, oldContent) {
|
|
85
|
+
if (!oldContent) {
|
|
86
|
+
return 'new';
|
|
87
|
+
}
|
|
88
|
+
var newLen = newContent.replace(/\r\n?/g, '\n').length,
|
|
89
|
+
oldLen = oldContent.replace(/\r\n?/g, '\n').length,
|
|
90
|
+
delta = newLen - oldLen;
|
|
91
|
+
|
|
92
|
+
return (delta >= 0 ? '+' : '') + delta;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function loadSilently(path) {
|
|
96
|
+
try {
|
|
97
|
+
return fs.readFileSync(path, 'utf8');
|
|
98
|
+
} catch (e) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function combineFiles(files) {
|
|
104
|
+
var content = '';
|
|
105
|
+
for (var i = 0, len = files.length; i < len; i++) {
|
|
106
|
+
content += fs.readFileSync(files[i], 'utf8') + '\n\n';
|
|
107
|
+
}
|
|
108
|
+
return content;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
exports.build = function (compsBase32, buildName) {
|
|
112
|
+
|
|
113
|
+
var files = getFiles(compsBase32);
|
|
114
|
+
|
|
115
|
+
console.log('Concatenating ' + files.length + ' files...');
|
|
116
|
+
|
|
117
|
+
var copy = fs.readFileSync('src/copyright.js', 'utf8'),
|
|
118
|
+
intro = '(function (window, document, undefined) {\n',
|
|
119
|
+
outro = '}(this, document));',
|
|
120
|
+
newSrc = copy + intro + combineFiles(files) + outro,
|
|
121
|
+
|
|
122
|
+
pathPart = 'dist/leaflet.label' + (buildName ? '-' + buildName : ''),
|
|
123
|
+
srcPath = pathPart + '-src.js',
|
|
124
|
+
|
|
125
|
+
oldSrc = loadSilently(srcPath),
|
|
126
|
+
srcDelta = getSizeDelta(newSrc, oldSrc);
|
|
127
|
+
|
|
128
|
+
console.log('\tUncompressed size: ' + newSrc.length + ' bytes (' + srcDelta + ')');
|
|
129
|
+
|
|
130
|
+
if (newSrc === oldSrc) {
|
|
131
|
+
console.log('\tNo changes');
|
|
132
|
+
} else {
|
|
133
|
+
fs.writeFileSync(srcPath, newSrc);
|
|
134
|
+
console.log('\tSaved to ' + srcPath);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
console.log('Compressing...');
|
|
138
|
+
|
|
139
|
+
var path = pathPart + '.js',
|
|
140
|
+
oldCompressed = loadSilently(path),
|
|
141
|
+
newCompressed = copy + UglifyJS.minify(newSrc, {
|
|
142
|
+
warnings: true,
|
|
143
|
+
fromString: true
|
|
144
|
+
}).code,
|
|
145
|
+
delta = getSizeDelta(newCompressed, oldCompressed);
|
|
146
|
+
|
|
147
|
+
console.log('\tCompressed size: ' + newCompressed.length + ' bytes (' + delta + ')');
|
|
148
|
+
|
|
149
|
+
if (newCompressed === oldCompressed) {
|
|
150
|
+
console.log('\tNo changes');
|
|
151
|
+
} else {
|
|
152
|
+
fs.writeFileSync(path, newCompressed);
|
|
153
|
+
console.log('\tSaved to ' + path);
|
|
154
|
+
}
|
|
155
|
+
};
|