Socket
Socket
Sign inDemoInstall

@h21-map/yandex-drawing-manager

Package Overview
Dependencies
Maintainers
1
Versions
34
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@h21-map/yandex-drawing-manager - npm Package Compare versions

Comparing version 4.0.3 to 4.0.4

234

index.js

@@ -251,6 +251,11 @@ function DrawingManager(map, opts) {

me.map.container.events.add('mousemove', (event) => {
if (typeof event.get('coords') !== "undefined") {
me.map.container.getElement().style.cursor = 'not-allowed';
patch.push(event.get('coords'));
me._area.geometry.setCoordinates(patch);
let area = me.geodesicArea(patch);
if (area < me.squareArea * 1000000) {
me._area.geometry.setCoordinates(patch);
me.map.container.getElement().style.cursor = 'crosshair';
return false;
}
}

@@ -306,3 +311,5 @@ });

if (this._enableDraw) {
me.map.container.events.once('mousedown', () => {
me.map.container.events.once('mousedown', (e) => {
e = window.event || e;
if (e.button == 2) { return; }
createArea();

@@ -316,37 +323,57 @@ });

DrawingManager.prototype.createVertexArea = function (pointSelect) {
me = this;
const geo = {
geometry: {
type: "Point",
coordinates: pointSelect
DrawingManager.prototype.geodesicArea = function (latLngs) {
var pointsCount = latLngs.length,
area = 0.0,
d2r = Math.PI / 180,
p1, p2;
if (pointsCount > 2) {
for (var i = 0; i < pointsCount; i++) {
p1 = latLngs[i];
p2 = latLngs[(i + 1) % pointsCount];
area += ((p2[1] - p1[1]) * d2r) *
(2 + Math.sin(p1[0] * d2r) + Math.sin(p2[0] * d2r));
}
area = area * 6378137.0 * 6378137.0 / 2.0;
}
options = {
iconLayout: 'default#image',
iconImageSize: [24, 24],
iconImageOffset: [-20, -5],
iconImageHref: me.areaOptions.areaIconVertex,
draggable: false,
id: me.vertexCount,
}
return Math.abs(area);
},
_vertex = new ymaps.GeoObject(geo, options);
me.map.geoObjects.add(_vertex);
DrawingManager.prototype.createVertexArea = function (pointSelect) {
me = this;
const geo = {
geometry: {
type: "Point",
coordinates: pointSelect
}
}
_vertex.events.add('click', function (e) {
if (me.polygonArea.get(e.get('target').options.get('id'))) {
let id = me.polygonArea.get(e.get('target').options.get('id'));
me.map.geoObjects.remove(e.get('target'));
me.map.geoObjects.remove(id);
me.polygonArea.delete(id);
me.map.events.fire('draw:area_remove', me._convertCoordinates());
options = {
iconLayout: 'default#image',
iconImageSize: [24, 24],
iconImageOffset: [-20, -5],
iconImageHref: me.areaOptions.areaIconVertex,
draggable: false,
id: me.vertexCount,
}
});
me.vertex.push(_vertex);
_vertex = new ymaps.GeoObject(geo, options);
me.map.geoObjects.add(_vertex);
},
_vertex.events.add('click', function (e) {
if (me.polygonArea.get(e.get('target').options.get('id'))) {
let id = me.polygonArea.get(e.get('target').options.get('id'));
me.map.geoObjects.remove(e.get('target'));
me.map.geoObjects.remove(id);
me.polygonArea.delete(id);
me.map.events.fire('draw:area_remove', me._convertCoordinates());
}
});
me.vertex.push(_vertex);
},
DrawingManager.prototype.findRoundPoints = function (patch, round) {

@@ -370,137 +397,24 @@ let me = this;

DrawingManager.prototype.calculateArea = function (feature) {
DrawingManager.prototype._redrawArea = function () {
let me = this;
var geoJsonGeometry = me.getGeoJsonGeometry(feature);
return me.calculateJsonGeometryArea(geoJsonGeometry);
},
let latlngs = me._convertlatlngs();
DrawingManager.prototype.getGeoJsonGeometry = function (feature) {
let me = this;
if (feature.type == 'Feature') {
return feature.geometry;
} else if (feature.geometry && feature.geometry.getType) {
if (feature.geometry.getType() == 'Circle') {
return {
type: 'Circle',
coordinates: feature.geometry.getCoordinates(),
radius: feature.geometry.getRadius(),
}
}
return {
type: feature.geometry.getType(),
coordinates: feature.geometry.getCoordinates(),
}
} else {
throw new Error('util.calculateArea: Unknown input object.');
const options = {
fillColor: me.areaOptions.fillColor,
fillOpacity: me.areaOptions.fillOpacity,
strokeColor: me.areaOptions.strokeColor,
strokeOpacity: me.areaOptions.strokeOpacity,
strokeWidth: me.areaOptions.strokeWeight,
syncOverlayInit: true,
}
},
DrawingManager.prototype.calculateJsonGeometryArea = function (geometry) {
let me = this;
let area = 0;
let i;
switch (geometry.type) {
case 'Polygon':
return me.polygonAreas(geometry.coordinates);
case 'MultiPolygon':
for (i = 0; i < geometry.coordinates.length; i++) {
area += me.polygonAreas(geometry.coordinates[i]);
}
return area;
case 'Rectangle':
return me.polygonAreas([[
geometry.coordinates[0],
[geometry.coordinates[0][0], geometry.coordinates[1][1]],
geometry.coordinates[1],
[geometry.coordinates[1][0], geometry.coordinates[0][1]],
geometry.coordinates[0]
]]);
case 'Circle':
return Math.PI * Math.pow(geometry.radius, 2);
case 'Point':
case 'MultiPoint':
case 'LineString':
case 'MultiLineString':
return 0;
me._area = new ymaps.Polygon([latlngs,], {}, options);
me.map.geoObjects.add(me._area);
me.map.events.fire('draw:area_create', me._convertCoordinates(latlngs));
if (me.areaOptions.fitBounds) {
me._fitBoundsArea();
}
},
DrawingManager.prototype.polygonAreas = function (coords) {
let me = this;
let area = 0;
if (coords && coords.length > 0) {
area += Math.abs(me.ringArea(coords[0]));
for (var i = 1; i < coords.length; i++) {
area -= Math.abs(me.ringArea(coords[i]));
}
}
return area;
},
};
DrawingManager.prototype.ringArea = function (coords) {
var p1;
var p2;
var p3;
var lowerIndex;
var middleIndex;
var upperIndex;
var i;
var area = 0;
var coordsLength = coords.length;
var longitude = ymaps.meta.coordinatesOrder == 'latlong' ? 1 : 0;
var latitude = ymaps.meta.coordinatesOrder == 'latlong' ? 0 : 1;
if (coordsLength > 2) {
for (i = 0; i < coordsLength; i++) {
if (i === coordsLength - 2) {
lowerIndex = coordsLength - 2;
middleIndex = coordsLength - 1;
upperIndex = 0;
} else if (i === coordsLength - 1) {
lowerIndex = coordsLength - 1;
middleIndex = 0;
upperIndex = 1;
} else {
lowerIndex = i;
middleIndex = i + 1;
upperIndex = i + 2;
}
p1 = coords[lowerIndex];
p2 = coords[middleIndex];
p3 = coords[upperIndex];
area += (rad(p3[longitude]) - rad(p1[longitude])) * Math.sin(rad(p2[latitude]));
}
let RADIUS = 6378137;
area = area * RADIUS * RADIUS / 2;
}
return area;
},
DrawingManager.prototype.rad = function (_) {
return _ * Math.PI / 180;
}
DrawingManager.prototype._redrawArea = function () {
let me = this;
let latlngs = me._convertlatlngs();
const options = {
fillColor: me.areaOptions.fillColor,
fillOpacity: me.areaOptions.fillOpacity,
strokeColor: me.areaOptions.strokeColor,
strokeOpacity: me.areaOptions.strokeOpacity,
strokeWidth: me.areaOptions.strokeWeight,
syncOverlayInit: true,
}
me._area = new ymaps.Polygon([latlngs,], {}, options);
me.map.geoObjects.add(me._area);
me.map.events.fire('draw:area_create', me._convertCoordinates(latlngs));
if (me.areaOptions.fitBounds) {
me._fitBoundsArea();
}
};
DrawingManager.prototype._setIconMarker = function (iconUrl) {

@@ -856,3 +770,3 @@

me._vertexMarker.options.set({
visible: true,
visible: false,
zIndexHover: 200,

@@ -886,2 +800,6 @@ zIndex: 200,

me._centerMarker.events.add('dragend', () => {
me._vertexMarker.options.set({
visible: true,
});
me.map.events.fire('draw:circle_center_complete', me._getInfo());

@@ -888,0 +806,0 @@ });

@@ -5,3 +5,3 @@

"scope": "@h21-map",
"version": "4.0.3",
"version": "4.0.4",
"description": "A library of Yandex Map JS API",

@@ -8,0 +8,0 @@ "main": "index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc