Bounds.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import * as extent from "ol/extent"
  2. import LngLat from "./LngLat"
  3. /**
  4. * @description KMap.Bounds 经纬度矩形范围类
  5. */
  6. class Bounds{
  7. /**
  8. * @param {KMap.LngLat} southWest 矩形范围西南角坐标,必填,格式new KMap.LngLat()
  9. * @param {KMap.LngLat} northEast 矩形范围东北角坐标,必填,格式new KMap.LngLat()
  10. */
  11. constructor(southWest,northEast){
  12. const vm = this
  13. vm.southWest = southWest
  14. vm.northEast = northEast
  15. let mapSouthWest = [southWest.getLng(),southWest.getLat()]
  16. let mapNorthEast = [northEast.getLng(),northEast.getLat()]
  17. let bounds = new extent.boundingExtent([mapSouthWest,mapNorthEast])
  18. this.bounds = bounds
  19. }
  20. /**
  21. * @description 判断指定点坐标是否在矩形范围内
  22. * @param {KMap.LngLat} point 经纬度点,KMap.LngLat格式,必填
  23. * @returns {boolean}在矩形范围内返回true,否则返回false
  24. */
  25. contains(point) {
  26. const vm = this
  27. if( (point.getLng() >= vm.southWest.getLng() && point.getLng() <= vm.northEast.getLng())
  28. && (point.getLat() >= vm.southWest.getLat() && point.getLat() <= vm.northEast.getLat()) )
  29. {
  30. return true
  31. }else{
  32. return false
  33. }
  34. }
  35. /**
  36. * @description 获取中心点坐标
  37. * @returns {KMap.LngLat}中心点坐标,KMap.LngLat格式
  38. */
  39. getCenter() {
  40. const vm = this
  41. let lng = (vm.southWest.getLng() + vm.northEast.getLng()) / 2
  42. let lat = (vm.southWest.getLat() + vm.northEast.getLat()) / 2
  43. var center = new LngLat(lng,lat)
  44. return center
  45. }
  46. /**
  47. * @description 获取西南角坐标
  48. * @returns {KMap.LngLat}西南角坐标,KMap.LngLat格式
  49. */
  50. getSouthWest() {
  51. const vm = this
  52. return vm.southWest
  53. }
  54. /**
  55. * @description 获取东北角坐标
  56. * @returns {KMap.LngLat}东北角坐标,KMap.LngLat格式
  57. */
  58. getNorthEast() {
  59. const vm = this
  60. return vm.northEast
  61. }
  62. /**
  63. * @description 以字符串形式返回地物对象的矩形范围
  64. * @returns {String}西南角经度、西南角纬度:东北角经度、东北角纬度
  65. */
  66. toString() {
  67. const vm = this
  68. return vm.southWest.getLng() + "," + vm.southWest.getLat() + ":"
  69. + vm.northEast.getLng() + "," + vm.northEast.getLat()
  70. }
  71. }
  72. export default Bounds