@h21-map/yandex-drawing-manager
Advanced tools
Comparing version 1.0.7 to 1.0.8
155
index.js
@@ -11,7 +11,12 @@ | ||
var DrawingManager = function (map, opts) { | ||
try { | ||
ymaps; | ||
} catch (e) { | ||
throw Error('Ymaps Map JS API is not ready yet!'); | ||
} | ||
let me = this; | ||
me.map = map; | ||
me._opts = opts; | ||
me._drawingType = opts.drawingMode || DRAWING_MODE_MARKER; | ||
me._drawingType = null; | ||
me._fitBounds = opts._fitBounds || true; | ||
@@ -29,22 +34,41 @@ me.markerOptions = opts.markerOptions || {}; | ||
DrawingManager.prototype.setDrawingMode = function (drawingType) { | ||
DrawingManager.prototype.setDrawingMode = function (drawingType, opts) { | ||
let me = this; | ||
this._drawingType = drawingType; | ||
me.markerOptions = opts.markerOptions || {}; | ||
me.circleOptions = opts.circleOptions || {}; | ||
me.areaOptions = opts.areaOptions || {}; | ||
me._enableDraw = opts.enableDraw; | ||
switch (drawingType) { | ||
case DRAWING_MODE_MARKER: | ||
me._bindMarker(); | ||
break; | ||
case DRAWING_MODE_CIRCLE: | ||
me._bindCircle(); | ||
break; | ||
case DRAWING_MODE_AREA: | ||
me._bindArea(); | ||
break; | ||
default: | ||
me._redraw(); | ||
break; | ||
if (me.markerOptions) { | ||
me.setPosition(me.markerOptions.markerLatitude, me.markerOptions.markerLongitude); | ||
} | ||
if (me.circleOptions) { | ||
me.radius = me.circleOptions.radius; | ||
} | ||
if (me.areaOptions) { | ||
me.areaCoordinates = me.areaOptions.areaCoordinates; | ||
} | ||
if (me._drawingType != drawingType) { | ||
switch (drawingType) { | ||
case DRAWING_MODE_MARKER: | ||
me._bindMarker(); | ||
break; | ||
case DRAWING_MODE_CIRCLE: | ||
me._bindCircle(); | ||
break; | ||
case DRAWING_MODE_AREA: | ||
me._bindArea(); | ||
break; | ||
default: | ||
me._reset(); | ||
break; | ||
} | ||
this._drawingType = drawingType; | ||
} | ||
}; | ||
@@ -130,3 +154,3 @@ | ||
me.map.events.fire('draw:marker_create', null); | ||
me.map.events.fire('draw:marker_create', me._getPosition()); | ||
@@ -142,10 +166,9 @@ } | ||
} | ||
if (this._enableDraw) { | ||
me.map.container.events.add('click', (event) => { | ||
event.stopImmediatePropagation(); | ||
createCenterMarker(event); | ||
}); | ||
} | ||
me.map.container.events.add('click', (event) => { | ||
event.stopImmediatePropagation(); | ||
if (this._enableDraw) { | ||
createCenterMarker(event) | ||
} | ||
}); | ||
}; | ||
@@ -194,2 +217,5 @@ | ||
me.map.container.events.remove('click'); | ||
me.map.container.events.types.click = undefined; | ||
} | ||
@@ -203,2 +229,4 @@ | ||
me.map.container.events.remove('click'); | ||
me.map.container.events.types.click = undefined; | ||
me._removeArea(); | ||
@@ -258,11 +286,57 @@ me._removeCenterMarker(); | ||
me.map.container.events.once('mousedown', () => { | ||
createArea(); | ||
}); | ||
if (this._enableDraw) { | ||
me.map.container.events.once('mousedown', () => { | ||
createArea(); | ||
}); | ||
} | ||
else { | ||
me._redrawArea(); | ||
} | ||
}; | ||
DrawingManager.prototype._redraw = function () { | ||
DrawingManager.prototype._redrawArea = function () { | ||
let me = this; | ||
let latlngs = me._convertlatlngs(); | ||
let options = { | ||
fillColor: me.areaOptions.fillColor, | ||
fillOpacity: me.areaOptions.fillOpacity, | ||
strokeColor: me.areaOptions.strokeColor, | ||
strokeOpacity: me.areaOptions.strokeOpacity, | ||
strokeWidth: me.areaOptions.strokeWeight, | ||
} | ||
me.area = new ymaps.Polygon([latlngs,], {}, options); | ||
me.map.geoObjects.add(me.area); | ||
me.map.events.fire('draw:area_create', me._convertCoordinates(latlngs)); | ||
me._fitBoundsArea(); | ||
} | ||
DrawingManager.prototype._convertlatlngs = function () { | ||
let me = this; | ||
let latlngs = []; | ||
if (me.areaCoordinates.length > 0) { | ||
for (var n = 0; n < me.areaCoordinates.length; n++) { | ||
let item = me.areaCoordinates[n]; | ||
let position = [item.latitude, item.longitude]; | ||
latlngs.push(position); | ||
} | ||
return latlngs; | ||
} | ||
} | ||
DrawingManager.prototype._reset = function () { | ||
let me = this; | ||
me._removeArea(); | ||
@@ -303,3 +377,6 @@ me._removeCenterMarker(); | ||
} | ||
return positions; | ||
let pos = { | ||
positions | ||
} | ||
return pos; | ||
}; | ||
@@ -482,2 +559,18 @@ | ||
DrawingManager.prototype._getPosition = function () { | ||
let me = this; | ||
let position = { | ||
latitude: me._centerMarker.geometry.getCoordinates()[0], | ||
longitude: me._centerMarker.geometry.getCoordinates()[1] | ||
} | ||
let pos = { | ||
position | ||
}; | ||
return pos; | ||
} | ||
DrawingManager.prototype._getZoom = function () { | ||
@@ -484,0 +577,0 @@ |
@@ -5,4 +5,4 @@ | ||
"scope":"@h21-map", | ||
"version": "1.0.7", | ||
"description": "A library of Yndex Map JS API", | ||
"version": "1.0.8", | ||
"description": "A library of Yandex Map JS API", | ||
"main": "index.js", | ||
@@ -9,0 +9,0 @@ "scripts": { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
19077
463