factory.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { deleteEmptyKey } from './util.js'
  2. export function createPoint(BMap, options = {}) {
  3. const { lng, lat } = options
  4. return new BMap.Point(lng, lat)
  5. }
  6. export function createPixel(BMap, options = {}) {
  7. const { x, y } = options
  8. return new BMap.Pixel(x, y)
  9. }
  10. export function createBounds(BMap, options = {}) {
  11. const { sw, ne } = options
  12. return new BMap.Bounds(createPoint(BMap, sw), createPoint(BMap, ne))
  13. }
  14. export function createSize(BMap, options = {}) {
  15. const { width, height } = options
  16. return new BMap.Size(width, height)
  17. }
  18. export function createIcon(BMap, options = {}) {
  19. const { url, size, opts = {} } = options
  20. let iconOption = {
  21. anchor: opts.anchor && createSize(BMap, opts.anchor),
  22. imageSize: opts.imageSize && createSize(BMap, opts.imageSize),
  23. imageOffset: opts.imageOffset && createSize(BMap, opts.imageOffset),
  24. infoWindowAnchor: opts.infoWindowAnchor && createSize(BMap, opts.infoWindowAnchor),
  25. printImageUrl: opts.printImageUrl
  26. };
  27. deleteEmptyKey(iconOption);
  28. return new BMap.Icon(url, createSize(BMap, size), iconOption)
  29. }
  30. export function createLabel(BMap, options = {}) {
  31. const { content, opts } = options
  32. let labelOption = {
  33. offset: opts.offset && createSize(BMap, opts.offset),
  34. position: opts.position && createPoint(BMap, opts.position),
  35. enableMassClear: opts.enableMassClear
  36. };
  37. deleteEmptyKey(labelOption);
  38. return new BMap.Label(content, labelOption)
  39. }
  40. export function createSymbol(BMap, options = {}) {
  41. const { path, opts } = options
  42. let symbolOption = {
  43. anchor: opts.anchor && createSize(BMap, opts.anchor),
  44. fillColor: opts.fillColor,
  45. fillOpacity: opts.fillOpacity,
  46. scale: opts.scale,
  47. rotation: opts.rotation,
  48. strokeColor: opts.strokeColor,
  49. strokeOpacity: opts.strokeOpacity,
  50. strokeWeight: opts.strokeWeight
  51. };
  52. deleteEmptyKey(symbolOption);
  53. return new BMap.Symbol(window[path] || path, symbolOption)
  54. }
  55. export function createIconSequence(BMap, options = {}) {
  56. const { symbol, offset, repeat, fixedRotation } = options
  57. return new BMap.IconSequence(
  58. symbol && createSymbol(BMap, symbol),
  59. offset,
  60. repeat,
  61. fixedRotation
  62. )
  63. }