+3
-3
@@ -15,3 +15,3 @@ <!DOCTYPE html><html lang=en><head><meta charset=UTF-8><meta name=viewport content="width=device-width,initial-scale=1"><meta http-equiv=X-UA-Compatible content="ie=edge"><title>sp-bmap</title><style>#map { | ||
| strokeOpacity: .3 | ||
| }) | ||
| }, 45) | ||
| var egg1 = __Map.polygon.egg(300, 1, 104.075277, 30.548096, { | ||
@@ -22,3 +22,3 @@ fillColor: '#f00', | ||
| strokeOpacity: .3 | ||
| }) | ||
| }, 145) | ||
| var egg2 = __Map.polygon.egg(800, 1, 104.075277, 30.548096, { | ||
@@ -29,3 +29,3 @@ fillColor: '#f00', | ||
| strokeOpacity: .3 | ||
| }) | ||
| }, 245) | ||
| map.addOverlay(egg0); | ||
@@ -32,0 +32,0 @@ map.addOverlay(egg1); |
@@ -1,1 +0,1 @@ | ||
| var __Map=function(t){var e={};function n(o){if(e[o])return e[o].exports;var r=e[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(o,r,function(e){return t[e]}.bind(null,r));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=2)}([function(t,e){t.exports.default=t.exports=((t=0,e=0)=>new BMap.Point(t,e))},function(t,e){t.exports.default=t.exports=((t=!0,e=window._map)=>{t?e.enableScrollWheelZoom():e.disableScrollWheelZoom()})},function(t,e,n){let o=n(3),r=n(0),l=n(8);t.exports.default=t.exports={map:o,point:r,polygon:l}},function(t,e,n){let o=n(4),r=n(5),l=n(6),u=n(1),a=n(7),p=n(0);t.exports.default=t.exports={init:o,center:r,zoom:l,scroll:u,moveTo:a,point:p}},function(t,e,n){let o=n(1);t.exports.default=t.exports=((t,e=0,n=0,r=3)=>{let l=new BMap.Map(t);return window._map=l,l.centerAndZoom(new BMap.Point(e,n),r),o(),l})},function(t,e){t.exports.default=t.exports=((t,e=window._map)=>{e.setCenter(t)})},function(t,e){t.exports.default=t.exports=((t=3,e=window._map)=>{e.setZoom(t)})},function(t,e,n){let o=n(0);t.exports.default=t.exports=((t,e,n=window._map)=>{n.panTo(o(t,e))})},function(t,e,n){const o=n(9);t.exports.default=t.exports={egg:o}},function(t,e,n){const o=n(0),r=(t,e)=>Math.sqrt(Math.abs(Math.sqrt(t)*e-Math.pow(e,1.5))),l=t=>1e5/t,u=(t,e,n,o="left")=>{switch(o){case"top":return{lng:t,lat:e+1/3/l(n)};case"right":return{lng:t+1/3/l(n),lat:e};case"bottom":return{lng:t,lat:e-1/3/l(n)};case"left":return{lng:t-1/3/l(n),lat:e};default:return{lng:t+1/3/l(n),lat:e}}};t.exports.default=t.exports=((t,e=1,n=0,a=0,p={},f="left")=>{let i=[],s=u(n,a,t,f);for(let n=0,u=t;n<u;n++){let a=e*n/u,p=r(e,a),f=o(s.lng+a/l(t),s.lat+p/l(t));i.push(f)}for(let n=t,u=n;u>0;u--){let a=e*u/n,p=-r(e,a),f=o(s.lng+a/l(t),s.lat+p/l(t));i.push(f)}return new BMap.Polygon(i,p)})}]); | ||
| var __Map=function(t){var e={};function o(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,o),r.l=!0,r.exports}return o.m=t,o.c=e,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)o.d(n,r,function(e){return t[e]}.bind(null,r));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=6)}([function(t,e){t.exports.default=t.exports=((t=0,e=0)=>new BMap.Point(t,e))},function(t,e){t.exports.default=t.exports=(t=>180*t/Math.PI)},function(t,e){t.exports.default=t.exports=(t=>t*Math.PI/180)},function(t,e){t.exports.default=t.exports=((t=0)=>{let e=+t;return!!(Boolean(e)&&(e=""+e).indexOf(".")>0)})},function(t,e){t.exports.default=t.exports=((t=!0,e=window._map)=>{t?e.enableScrollWheelZoom():e.disableScrollWheelZoom()})},function(t,e,o){const n=o(3);let r=0,u=0;const s=(t,e)=>(u=t,u=e,t%2==0&&e%2==0?s(r=t/2,u=e/2):t%5==0&&e%5==0?s(r=t/5,u=e/5):(r=t,u=e),{c:r,m:u});t.exports.default=t.exports=(t=>{let e=""+t;if(n(t)){let o=e.indexOf("."),n=10**e.substr(o+1).length;return s(t*n,n)}return[t,1]})},function(t,e,o){let n=o(7),r=o(0),u=o(12);t.exports.default=t.exports={map:n,point:r,polygon:u}},function(t,e,o){let n=o(8),r=o(9),u=o(10),s=o(4),a=o(11),l=o(0);t.exports.default=t.exports={init:n,center:r,zoom:u,scroll:s,moveTo:a,point:l}},function(t,e,o){let n=o(4);t.exports.default=t.exports=((t,e=0,o=0,r=3)=>{let u=new BMap.Map(t);return window._map=u,u.centerAndZoom(new BMap.Point(e,o),r),n(),u})},function(t,e){t.exports.default=t.exports=((t,e=window._map)=>{e.setCenter(t)})},function(t,e){t.exports.default=t.exports=((t=3,e=window._map)=>{e.setZoom(t)})},function(t,e,o){let n=o(0);t.exports.default=t.exports=((t,e,o=window._map)=>{o.panTo(n(t,e))})},function(t,e,o){const n=o(13);t.exports.default=t.exports={egg:n}},function(t,e,o){const n=o(0),{sin:r,cos:u,pow:s,sqrt:a}=o(14),l=(t,e)=>a(a(t)*e-s(e,1.5)),p=t=>1e5/t,f=(t,e,o,n=0)=>{return{lng:t-.2*u(n)/p(o),lat:e-.2*r(n)/p(o)}},i=(t=0,e=0,o=0)=>{return{xResult:t*u(o)-e*r(o),yResult:e*u(o)+t*r(o)}};t.exports.default=t.exports=((t,e=1,o=0,r=0,u={},s=0)=>{let a=[],c=f(o,r,t,s);for(let o=0,r=t;o<r;o++){let u=e*o/r,f=l(e,u),x=i(u,f,s),d=c.lng+x.xResult/p(t),M=c.lat+x.yResult/p(t),h=n(d,M);a.push(h)}for(let o=t,r=o;r>0;r--){let u=e*r/o,f=-l(e,u),x=i(u,f,s),d=c.lng+x.xResult/p(t),M=c.lat+x.yResult/p(t),h=n(d,M);a.push(h)}return new BMap.Polygon(a,u)})},function(t,e,o){const n=o(15),r=o(16),u=o(17),s=o(18),a=o(19),l=o(2),p=o(5),f=o(3),i=o(1),c=o(20),x=o(21),d=o(22),M=o(23),h=o(24),m=o(25),w=o(26);t.exports.default=t.exports={abs:n,acos:r,asin:u,atan:s,ceil:a,degreeToRotate:l,devideFloat:p,isFloat:f,rotateToDegree:i,cos:c,floor:x,pow:d,round:M,sin:h,sqrt:m,tan:w}},function(t,e){t.exports.default=t.exports=(t=>Math.abs(t))},function(t,e,o){const n=o(1);t.exports.default=t.exports=(t=>n(Math.acos(t)))},function(t,e,o){const n=o(1);t.exports.default=t.exports=(t=>n(Math.asin(t)))},function(t,e,o){const n=o(1);t.exports.default=t.exports=(t=>n(Math.atan(t)))},function(t,e){t.exports.default=t.exports=(t=>Math.ceil(t))},function(t,e,o){const n=o(2);t.exports.default=t.exports=(t=>Math.cos(n(t)))},function(t,e){t.exports.default=t.exports=(t=>Math.floor(t))},function(t,e,o){const n=o(3),r=o(5);t.exports.default=t.exports=((t,e,o=!1)=>{if(e<0)return 0;if(o&&n(e)){let o=[],{c:n,m:u}=r(e),s=Math.pow(Math.abs(t),1/u),a=Math.pow(s,n);return o=u%2==0?t>0?n%2==0?a:[a,-a]:0:t>0?a:n%2==0?a:-a}return Math.pow(t,e)})},function(t,e){t.exports.default=t.exports=(t=>Math.round(t))},function(t,e,o){const n=o(2);t.exports.default=t.exports=(t=>Math.sin(n(t)))},function(t,e){t.exports.default=t.exports=((t,e=!1)=>{if(t<0)return 0;let o=Math.sqrt(t);return e?[o,-o]:o})},function(t,e,o){const n=o(2);t.exports.default=t.exports=(t=>t%90==0&&t>0?1/0:Math.tan(n(t)))}]); |
+3
-3
@@ -34,3 +34,3 @@ <!DOCTYPE html> | ||
| strokeOpacity: .3 | ||
| }) | ||
| }, 45) | ||
| var egg1 = __Map.polygon.egg(300, 1, 104.075277, 30.548096, { | ||
@@ -41,3 +41,3 @@ fillColor: '#f00', | ||
| strokeOpacity: .3 | ||
| }) | ||
| }, 145) | ||
| var egg2 = __Map.polygon.egg(800, 1, 104.075277, 30.548096, { | ||
@@ -48,3 +48,3 @@ fillColor: '#f00', | ||
| strokeOpacity: .3 | ||
| }) | ||
| }, 245) | ||
| map.addOverlay(egg0); | ||
@@ -51,0 +51,0 @@ map.addOverlay(egg1); |
+4
-1
| { | ||
| "name": "sp-bmap", | ||
| "version": "1.0.1", | ||
| "version": "1.0.2", | ||
| "description": "Common functions for BaiDuMap", | ||
@@ -22,3 +22,6 @@ "main": "index.js", | ||
| "webpack-cli": "^3.1.2" | ||
| }, | ||
| "dependencies": { | ||
| "sp-math": "^1.0.0" | ||
| } | ||
| } |
+1
-1
@@ -93,3 +93,3 @@ # sp-map | ||
| - #### egg(radius, [level = 1, lng = 0, lat = 0, options = {}, direction = 'left']) | ||
| - #### egg(radius, [level = 1, lng = 0, lat = 0, options = {}, rotateDegree = 0]) | ||
@@ -96,0 +96,0 @@ ``` js |
+40
-33
| const point = require("../point/index"); | ||
| const { | ||
| sin, | ||
| cos, | ||
| pow, | ||
| sqrt | ||
| } = require("sp-math"); | ||
| /** | ||
| * @refer: http://www.mathematische-basteleien.de/eggcurves.htm | ||
| * http://www.mathematische-basteleien.de/eggcurves.htm | ||
| * @param {Number} radius | ||
@@ -12,5 +18,6 @@ * @param {Number} level | ||
| */ | ||
| const egg = (radius, level = 1, lng = 0, lat = 0, options = {}, direction = 'left') => { | ||
| const egg = (radius, level = 1, lng = 0, lat = 0, options = {}, degree = 0) => { | ||
| let points = []; | ||
| let center = offset(lng, lat, radius, direction); | ||
| let center = offset(lng, lat, radius, degree); | ||
| // y正半轴 | ||
@@ -20,3 +27,6 @@ for (let i = 0, j = radius; i < j; i++) { | ||
| let y1 = exp(level, x1); | ||
| let point1 = point(center.lng + x1 / distance(radius), center.lat + y1 / distance(radius)) | ||
| let calcRotateXY1 = calcRotateXY(x1, y1, degree); | ||
| let pointX1 = center.lng + calcRotateXY1.xResult / distance(radius); | ||
| let pointY1 = center.lat + calcRotateXY1.yResult / distance(radius); | ||
| let point1 = point(pointX1, pointY1) | ||
| points.push(point1) | ||
@@ -28,3 +38,6 @@ } | ||
| let y2 = -exp(level, x2); | ||
| let point2 = point(center.lng + x2 / distance(radius), center.lat + y2 / distance(radius)) | ||
| let calcRotateXY2 = calcRotateXY(x2, y2, degree); | ||
| let pointX2 = center.lng + calcRotateXY2.xResult / distance(radius); | ||
| let pointY2 = center.lat + calcRotateXY2.yResult / distance(radius); | ||
| let point2 = point(pointX2, pointY2) | ||
| points.push(point2) | ||
@@ -42,3 +55,3 @@ } | ||
| const exp = (level, x) => { | ||
| return Math.sqrt(Math.abs(Math.sqrt(level) * x - Math.pow(x, 3 / 2))); | ||
| return sqrt(sqrt(level) * x - pow(x, 3 / 2)); | ||
| } | ||
@@ -60,32 +73,26 @@ | ||
| */ | ||
| const offset = (lng, lat, radius, direction = 'left') => { | ||
| switch (direction) { | ||
| case 'top': | ||
| return { | ||
| lng, | ||
| lat: lat + (1 / 3) / distance(radius) | ||
| }; | ||
| case 'right': | ||
| return { | ||
| lng: lng + (1 / 3) / distance(radius), | ||
| lat | ||
| }; | ||
| case 'bottom': | ||
| return { | ||
| lng, | ||
| lat: lat - (1 / 3) / distance(radius) | ||
| }; | ||
| case 'left': | ||
| return { | ||
| lng: lng - (1 / 3) / distance(radius), | ||
| lat | ||
| }; | ||
| default: | ||
| return { | ||
| lng: lng + (1 / 3) / distance(radius), | ||
| lat | ||
| }; | ||
| const offset = (lng, lat, radius, degree = 0) => { | ||
| let offsetX = lng - cos(degree) * (1 / 5) / distance(radius); | ||
| let offsetY = lat - sin(degree) * (1 / 5) / distance(radius); | ||
| return { | ||
| lng: offsetX, | ||
| lat: offsetY | ||
| } | ||
| } | ||
| /** | ||
| * x,y旋转后坐标计算 | ||
| * @param {Number} x | ||
| * @param {Number} y | ||
| * @param {Number} degree | ||
| */ | ||
| const calcRotateXY = (x = 0, y = 0, degree = 0) => { | ||
| let xResult = x * cos(degree) - y * sin(degree) | ||
| let yResult = y * cos(degree) + x * sin(degree) | ||
| return { | ||
| xResult, | ||
| yResult | ||
| } | ||
| } | ||
| module.exports.default = module.exports = egg; |
124594
1.83%199
2.58%1
Infinity%+ Added
+ Added