@songcf/fy-map 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/components/Button/index.d.ts +2 -0
- package/dist/components/Button/index.vue.d.ts +4 -0
- package/dist/components/FyCircle/index.d.ts +2 -0
- package/dist/components/FyCircle/index.vue.d.ts +112 -0
- package/dist/components/FyClusterMarker/index.d.ts +2 -0
- package/dist/components/FyClusterMarker/index.vue.d.ts +129 -0
- package/dist/components/FyDrawCircle/index.d.ts +2 -0
- package/dist/components/FyDrawCircle/index.vue.d.ts +76 -0
- package/dist/components/FyDrawLine/index.d.ts +2 -0
- package/dist/components/FyDrawLine/index.vue.d.ts +72 -0
- package/dist/components/FyDrawPoint/index.d.ts +2 -0
- package/dist/components/FyDrawPoint/index.vue.d.ts +67 -0
- package/dist/components/FyDrawPolygon/index.d.ts +2 -0
- package/dist/components/FyDrawPolygon/index.vue.d.ts +75 -0
- package/dist/components/FyDrawTool/index.d.ts +2 -0
- package/dist/components/FyDrawTool/index.vue.d.ts +102 -0
- package/dist/components/FyLabel/index.d.ts +2 -0
- package/dist/components/FyLabel/index.vue.d.ts +112 -0
- package/dist/components/FyLineString/index.d.ts +2 -0
- package/dist/components/FyLineString/index.vue.d.ts +105 -0
- package/dist/components/FyMap/index.d.ts +2 -0
- package/dist/components/FyMap/index.vue.d.ts +69 -0
- package/dist/components/FyMarker/index.d.ts +2 -0
- package/dist/components/FyMarker/index.vue.d.ts +105 -0
- package/dist/components/FyPoint/index.d.ts +2 -0
- package/dist/components/FyPoint/index.vue.d.ts +98 -0
- package/dist/components/FyPolygon/index.d.ts +2 -0
- package/dist/components/FyPolygon/index.vue.d.ts +98 -0
- package/dist/components/FyPopup/index.d.ts +2 -0
- package/dist/components/FyPopup/index.vue.d.ts +114 -0
- package/dist/components/FyTileLayer/index.d.ts +2 -0
- package/dist/components/FyTileLayer/index.vue.d.ts +83 -0
- package/dist/components/FyVectorLayer/index.d.ts +2 -0
- package/dist/components/FyVectorLayer/index.vue.d.ts +89 -0
- package/dist/components/index.d.ts +20 -0
- package/dist/fy-map.css +623 -0
- package/dist/fy-map.es.js +3769 -0
- package/dist/fy-map.es.js.map +1 -0
- package/dist/fy-map.umd.js +4415 -0
- package/dist/fy-map.umd.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/package.json +48 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fy-map.umd.js","sources":["../src/components/Button/index.vue","../src/components/Button/index.ts","../src/components/FyMap/index.vue","../src/components/FyMap/index.ts","../src/components/FyTileLayer/index.vue","../src/components/FyTileLayer/index.ts","../src/components/FyVectorLayer/index.vue","../src/components/FyVectorLayer/index.ts","../src/components/FyMarker/index.vue","../src/components/FyMarker/index.ts","../src/components/FyLabel/index.vue","../src/components/FyLabel/index.ts","../src/components/FyPopup/index.vue","../src/components/FyPopup/index.ts","../src/components/FyClusterMarker/index.vue","../src/components/FyClusterMarker/index.ts","../src/components/FyDrawTool/index.vue","../src/components/FyDrawTool/index.ts","../src/components/FyDrawPoint/index.vue","../src/components/FyDrawPoint/index.ts","../src/components/FyDrawLine/index.vue","../src/components/FyDrawLine/index.ts","../src/components/FyDrawPolygon/index.vue","../src/components/FyDrawPolygon/index.ts","../src/components/FyDrawCircle/index.vue","../src/components/FyDrawCircle/index.ts","../src/components/FyPoint/index.vue","../src/components/FyPoint/index.ts","../src/components/FyLineString/index.vue","../src/components/FyLineString/index.ts","../src/components/FyPolygon/index.vue","../src/components/FyPolygon/index.ts","../src/components/FyCircle/index.vue","../src/components/FyCircle/index.ts","../src/components/index.ts","../src/index.ts"],"sourcesContent":["<template>\r\n <button class=\"my-btn\">\r\n <slot />\r\n </button>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"MyButton\",\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.my-btn {\r\n padding: 8px 16px;\r\n border: none;\r\n background: #409eff;\r\n color: #fff;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n}\r\n</style>\r\n","import ButtonComponent from \"./index.vue\";\r\n\r\nconst MyButton = ButtonComponent as any;\r\n\r\nMyButton.install = function (Vue: any) {\r\n Vue.component(MyButton.name || \"MyButton\", MyButton);\r\n};\r\n\r\nexport default MyButton;\r\n","<template>\r\n <div class=\"fy-map\" ref=\"mapContainer\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\n\r\nexport default {\r\n name: \"FyMap\",\r\n props: {\r\n // 地图配置\r\n options: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n // 中心点 [经度, 纬度]\r\n center: {\r\n type: Array,\r\n default: () => [0, 0],\r\n },\r\n // 缩放级别\r\n zoom: {\r\n type: Number,\r\n default: 13,\r\n },\r\n // 最小缩放级别\r\n minZoom: {\r\n type: Number,\r\n default: 1,\r\n },\r\n // 最大缩放级别\r\n maxZoom: {\r\n type: Number,\r\n default: 22,\r\n },\r\n // 底图类型\r\n baseLayer: {\r\n type: String,\r\n default: \"osm\", // osm, cartoDB, google, custom\r\n },\r\n // 自定义底图URL模板\r\n baseLayerUrl: {\r\n type: String,\r\n default: \"\",\r\n },\r\n // 底图子域名\r\n subdomains: {\r\n type: Array,\r\n default: () => [\"a\", \"b\", \"c\"],\r\n },\r\n },\r\n data() {\r\n return {\r\n map: null,\r\n baseLayerInstance: null,\r\n };\r\n },\r\n mounted() {\r\n this.initMap();\r\n this.addBaseLayer();\r\n this.$emit(\"ready\", this.map);\r\n },\r\n beforeDestroy() {\r\n if (this.map) {\r\n this.map.remove();\r\n }\r\n },\r\n methods: {\r\n // 初始化地图\r\n initMap() {\r\n const config = {\r\n ...this.options,\r\n center: this.center,\r\n zoom: this.zoom,\r\n minZoom: this.minZoom,\r\n maxZoom: this.maxZoom,\r\n };\r\n\r\n this.map = new maptalks.Map(this.$refs.mapContainer, config);\r\n },\r\n\r\n // 添加底图\r\n addBaseLayer() {\r\n if (!this.map) return;\r\n\r\n let tileLayer;\r\n\r\n switch (this.baseLayer) {\r\n case \"osm\":\r\n tileLayer = new maptalks.TileLayer(\"base\", {\r\n urlTemplate: \"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\",\r\n subdomains: [\"a\", \"b\", \"c\"],\r\n attribution: \"© OpenStreetMap contributors\",\r\n });\r\n break;\r\n case \"cartoDB\":\r\n tileLayer = new maptalks.TileLayer(\"base\", {\r\n urlTemplate: \"https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png\",\r\n subdomains: [\"a\", \"b\", \"c\", \"d\"],\r\n attribution: \"© CartoDB\",\r\n });\r\n break;\r\n case \"google\":\r\n tileLayer = new maptalks.TileLayer(\"base\", {\r\n urlTemplate: \"http://mt{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}\",\r\n subdomains: [\"0\", \"1\", \"2\", \"3\"],\r\n attribution: \"© Google\",\r\n });\r\n break;\r\n case \"custom\":\r\n if (this.baseLayerUrl) {\r\n tileLayer = new maptalks.TileLayer(\"base\", {\r\n urlTemplate: this.baseLayerUrl,\r\n subdomains: this.subdomains,\r\n });\r\n }\r\n break;\r\n default:\r\n tileLayer = new maptalks.TileLayer(\"base\", {\r\n urlTemplate: \"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\",\r\n subdomains: [\"a\", \"b\", \"c\"],\r\n attribution: \"© OpenStreetMap contributors\",\r\n });\r\n }\r\n\r\n if (tileLayer) {\r\n this.baseLayerInstance = tileLayer;\r\n this.map.addLayer(tileLayer);\r\n }\r\n },\r\n\r\n // 切换底图\r\n switchBaseLayer(layerType, urlTemplate = \"\") {\r\n if (!this.map) return;\r\n\r\n if (this.baseLayerInstance) {\r\n this.map.removeLayer(this.baseLayerInstance);\r\n }\r\n\r\n this.baseLayer = layerType;\r\n if (urlTemplate) {\r\n this.baseLayerUrl = urlTemplate;\r\n }\r\n\r\n this.addBaseLayer();\r\n },\r\n\r\n // 设置中心点\r\n setCenter(center) {\r\n if (this.map) {\r\n this.map.setCenter(center);\r\n }\r\n },\r\n\r\n // 设置缩放级别\r\n setZoom(zoom) {\r\n if (this.map) {\r\n this.map.setZoom(zoom);\r\n }\r\n },\r\n\r\n // 飞到指定位置\r\n flyTo(center, zoom, options = {}) {\r\n if (this.map) {\r\n this.map.animateTo(\r\n {\r\n center,\r\n zoom,\r\n },\r\n options\r\n );\r\n }\r\n },\r\n\r\n // 获取地图实例\r\n getMap() {\r\n return this.map;\r\n },\r\n },\r\n provide() {\r\n return {\r\n mapInstance: this.map,\r\n };\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-map {\r\n width: 100%;\r\n height: 100%;\r\n overflow: hidden;\r\n}\r\n</style>\r\n","import FyMapComponent from \"./index.vue\";\r\n\r\nconst FyMap = FyMapComponent as any;\r\n\r\nFyMap.install = function (Vue: any) {\r\n Vue.component(FyMap.name || \"FyMap\", FyMap);\r\n};\r\n\r\nexport default FyMap;\r\n","<template>\r\n <div class=\"fy-tile-layer\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\n\r\nexport default {\r\n name: \"FyTileLayer\",\r\n props: {\r\n // 图层ID\r\n id: {\r\n type: String,\r\n default: \"tile-layer\",\r\n },\r\n // 瓦片URL模板\r\n urlTemplate: {\r\n type: String,\r\n required: true,\r\n },\r\n // 子域名\r\n subdomains: {\r\n type: Array,\r\n default: () => [\"a\", \"b\", \"c\"],\r\n },\r\n // 最小缩放级别\r\n minZoom: {\r\n type: Number,\r\n default: null,\r\n },\r\n // 最大缩放级别\r\n maxZoom: {\r\n type: Number,\r\n default: null,\r\n },\r\n // 透明度\r\n opacity: {\r\n type: Number,\r\n default: 1,\r\n },\r\n // 可见性\r\n visible: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 版权信息\r\n attribution: {\r\n type: String,\r\n default: \"\",\r\n },\r\n // 图层Z轴顺序\r\n zIndex: {\r\n type: Number,\r\n default: 1,\r\n },\r\n },\r\n data() {\r\n return {\r\n layer: null,\r\n };\r\n },\r\n inject: {\r\n mapInstance: {\r\n default: null,\r\n },\r\n },\r\n mounted() {\r\n if (this.mapInstance) {\r\n this.initLayer();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.removeLayer();\r\n },\r\n methods: {\r\n // 初始化图层\r\n initLayer() {\r\n const config = {\r\n id: this.id,\r\n urlTemplate: this.urlTemplate,\r\n subdomains: this.subdomains,\r\n opacity: this.opacity,\r\n visible: this.visible,\r\n attribution: this.attribution,\r\n zIndex: this.zIndex,\r\n };\r\n\r\n if (this.minZoom !== null) {\r\n config.minZoom = this.minZoom;\r\n }\r\n\r\n if (this.maxZoom !== null) {\r\n config.maxZoom = this.maxZoom;\r\n }\r\n\r\n this.layer = new maptalks.TileLayer(this.id, config);\r\n this.mapInstance.addLayer(this.layer);\r\n this.$emit(\"ready\", this.layer);\r\n },\r\n\r\n // 移除图层\r\n removeLayer() {\r\n if (this.layer && this.mapInstance) {\r\n this.mapInstance.removeLayer(this.layer);\r\n this.layer = null;\r\n }\r\n },\r\n\r\n // 显示图层\r\n show() {\r\n if (this.layer) {\r\n this.layer.show();\r\n }\r\n },\r\n\r\n // 隐藏图层\r\n hide() {\r\n if (this.layer) {\r\n this.layer.hide();\r\n }\r\n },\r\n\r\n // 设置透明度\r\n setOpacity(opacity) {\r\n if (this.layer) {\r\n this.layer.setOpacity(opacity);\r\n }\r\n },\r\n\r\n // 设置Z轴顺序\r\n setZIndex(zIndex) {\r\n if (this.layer) {\r\n this.layer.setZIndex(zIndex);\r\n }\r\n },\r\n\r\n // 获取图层实例\r\n getLayer() {\r\n return this.layer;\r\n },\r\n },\r\n watch: {\r\n visible(newVal) {\r\n if (newVal) {\r\n this.show();\r\n } else {\r\n this.hide();\r\n }\r\n },\r\n opacity(newVal) {\r\n this.setOpacity(newVal);\r\n },\r\n zIndex(newVal) {\r\n this.setZIndex(newVal);\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-tile-layer {\r\n display: none;\r\n}\r\n</style>\r\n","import FyTileLayerComponent from \"./index.vue\";\r\n\r\nconst FyTileLayer = FyTileLayerComponent as any;\r\n\r\nFyTileLayer.install = function (Vue: any) {\r\n Vue.component(FyTileLayer.name || \"FyTileLayer\", FyTileLayer);\r\n};\r\n\r\nexport default FyTileLayer;\r\n","<template>\r\n <div class=\"fy-vector-layer\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\n\r\nexport default {\r\n name: \"FyVectorLayer\",\r\n props: {\r\n // 图层ID\r\n id: {\r\n type: String,\r\n default: \"vector-layer\",\r\n },\r\n // 渲染类型\r\n renderer: {\r\n type: String,\r\n default: \"canvas\", // canvas, dom\r\n },\r\n // 透明度\r\n opacity: {\r\n type: Number,\r\n default: 1,\r\n },\r\n // 可见性\r\n visible: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 最小缩放级别\r\n minZoom: {\r\n type: Number,\r\n default: null,\r\n },\r\n // 最大缩放级别\r\n maxZoom: {\r\n type: Number,\r\n default: null,\r\n },\r\n // 图层Z轴顺序\r\n zIndex: {\r\n type: Number,\r\n default: 10,\r\n },\r\n // 是否启用碰撞检测\r\n enableCollision: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n // 图层样式\r\n style: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n },\r\n data() {\r\n return {\r\n layer: null,\r\n };\r\n },\r\n inject: {\r\n mapInstance: {\r\n default: null,\r\n },\r\n },\r\n mounted() {\r\n if (this.mapInstance) {\r\n this.initLayer();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.removeLayer();\r\n },\r\n methods: {\r\n // 初始化图层\r\n initLayer() {\r\n const config = {\r\n id: this.id,\r\n renderer: this.renderer,\r\n opacity: this.opacity,\r\n visible: this.visible,\r\n zIndex: this.zIndex,\r\n enableCollision: this.enableCollision,\r\n style: this.style,\r\n };\r\n\r\n if (this.minZoom !== null) {\r\n config.minZoom = this.minZoom;\r\n }\r\n\r\n if (this.maxZoom !== null) {\r\n config.maxZoom = this.maxZoom;\r\n }\r\n\r\n this.layer = new maptalks.VectorLayer(this.id, config);\r\n this.mapInstance.addLayer(this.layer);\r\n this.$emit(\"ready\", this.layer);\r\n },\r\n\r\n // 移除图层\r\n removeLayer() {\r\n if (this.layer && this.mapInstance) {\r\n this.mapInstance.removeLayer(this.layer);\r\n this.layer = null;\r\n }\r\n },\r\n\r\n // 添加几何图形\r\n addGeometry(geometries) {\r\n if (this.layer && geometries) {\r\n if (Array.isArray(geometries)) {\r\n this.layer.addGeometry(geometries);\r\n } else {\r\n this.layer.addGeometry(geometries);\r\n }\r\n }\r\n },\r\n\r\n // 移除几何图形\r\n removeGeometry(geometries) {\r\n if (this.layer && geometries) {\r\n if (Array.isArray(geometries)) {\r\n this.layer.removeGeometry(geometries);\r\n } else {\r\n this.layer.removeGeometry(geometries);\r\n }\r\n }\r\n },\r\n\r\n // 清空图层\r\n clear() {\r\n if (this.layer) {\r\n this.layer.clear();\r\n }\r\n },\r\n\r\n // 显示图层\r\n show() {\r\n if (this.layer) {\r\n this.layer.show();\r\n }\r\n },\r\n\r\n // 隐藏图层\r\n hide() {\r\n if (this.layer) {\r\n this.layer.hide();\r\n }\r\n },\r\n\r\n // 设置透明度\r\n setOpacity(opacity) {\r\n if (this.layer) {\r\n this.layer.setOpacity(opacity);\r\n }\r\n },\r\n\r\n // 设置Z轴顺序\r\n setZIndex(zIndex) {\r\n if (this.layer) {\r\n this.layer.setZIndex(zIndex);\r\n }\r\n },\r\n\r\n // 设置样式\r\n setStyle(style) {\r\n if (this.layer) {\r\n this.layer.setStyle(style);\r\n }\r\n },\r\n\r\n // 获取图层实例\r\n getLayer() {\r\n return this.layer;\r\n },\r\n\r\n // 获取所有几何图形\r\n getGeometries() {\r\n if (this.layer) {\r\n return this.layer.getGeometries();\r\n }\r\n return [];\r\n },\r\n },\r\n watch: {\r\n visible(newVal) {\r\n if (newVal) {\r\n this.show();\r\n } else {\r\n this.hide();\r\n }\r\n },\r\n opacity(newVal) {\r\n this.setOpacity(newVal);\r\n },\r\n zIndex(newVal) {\r\n this.setZIndex(newVal);\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-vector-layer {\r\n display: none;\r\n}\r\n</style>\r\n","import FyVectorLayerComponent from \"./index.vue\";\r\n\r\nconst FyVectorLayer = FyVectorLayerComponent as any;\r\n\r\nFyVectorLayer.install = function (Vue: any) {\r\n Vue.component(FyVectorLayer.name || \"FyVectorLayer\", FyVectorLayer);\r\n};\r\n\r\nexport default FyVectorLayer;\r\n","<template>\r\n <div class=\"fy-marker\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\n\r\nexport default {\r\n name: \"FyMarker\",\r\n props: {\r\n // 位置坐标 [经度, 纬度]\r\n coordinates: {\r\n type: Array,\r\n required: true,\r\n },\r\n // 图标图片URL\r\n icon: {\r\n type: String,\r\n default: \"\",\r\n },\r\n // 图标尺寸\r\n iconSize: {\r\n type: Array,\r\n default: () => [32, 32],\r\n },\r\n // 图标偏移\r\n iconOffset: {\r\n type: Array,\r\n default: () => [0, 0],\r\n },\r\n // 旋转角度\r\n rotation: {\r\n type: Number,\r\n default: 0,\r\n },\r\n // 透明度\r\n opacity: {\r\n type: Number,\r\n default: 1,\r\n },\r\n // 可见性\r\n visible: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 可拖拽\r\n draggable: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n // 弹曲程度\r\n curve: {\r\n type: Number,\r\n default: 0,\r\n },\r\n // 自定义属性\r\n properties: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n // 层级\r\n zIndex: {\r\n type: Number,\r\n default: 1,\r\n },\r\n },\r\n data() {\r\n return {\r\n marker: null,\r\n };\r\n },\r\n inject: {\r\n mapInstance: {\r\n default: null,\r\n },\r\n },\r\n mounted() {\r\n if (this.mapInstance) {\r\n this.initMarker();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.removeMarker();\r\n },\r\n methods: {\r\n // 初始化 Marker\r\n initMarker() {\r\n const config = {\r\n coordinates: this.coordinates,\r\n visible: this.visible,\r\n draggable: this.draggable,\r\n curve: this.curve,\r\n properties: this.properties,\r\n zIndex: this.zIndex,\r\n };\r\n\r\n // 设置图标\r\n if (this.icon) {\r\n config.symbol = {\r\n markerFile: this.icon,\r\n markerWidth: this.iconSize[0],\r\n markerHeight: this.iconSize[1],\r\n markerDx: this.iconOffset[0],\r\n markerDy: this.iconOffset[1],\r\n markerOpacity: this.opacity,\r\n markerRotation: this.rotation,\r\n };\r\n } else {\r\n // 默认图标样式\r\n config.symbol = {\r\n markerType: \"ellipse\",\r\n markerFill: \"#ff0000\",\r\n markerFillOpacity: 1,\r\n markerLineColor: \"#ffffff\",\r\n markerLineWidth: 2,\r\n markerLineOpacity: 1,\r\n markerWidth: 30,\r\n markerHeight: 30,\r\n markerDx: 0,\r\n markerDy: 0,\r\n markerOpacity: this.opacity,\r\n };\r\n }\r\n\r\n this.marker = new maptalks.Marker(this.coordinates, config);\r\n\r\n // 绑定事件\r\n this.marker.on(\"click\", this.handleClick);\r\n this.marker.on(\"mouseover\", this.handleMouseover);\r\n this.marker.on(\"mouseout\", this.handleMouseout);\r\n this.marker.on(\"dragstart\", this.handleDragStart);\r\n this.marker.on(\"dragging\", this.handleDragging);\r\n this.marker.on(\"dragend\", this.handleDragEnd);\r\n\r\n // 添加到地图\r\n this.mapInstance.addMarker(this.marker);\r\n this.$emit(\"ready\", this.marker);\r\n },\r\n\r\n // 移除 Marker\r\n removeMarker() {\r\n if (this.marker && this.mapInstance) {\r\n this.marker.off(\"click\", this.handleClick);\r\n this.marker.off(\"mouseover\", this.handleMouseover);\r\n this.marker.off(\"mouseout\", this.handleMouseout);\r\n this.marker.off(\"dragstart\", this.handleDragStart);\r\n this.marker.off(\"dragging\", this.handleDragging);\r\n this.marker.off(\"dragend\", this.handleDragEnd);\r\n\r\n this.mapInstance.removeMarker(this.marker);\r\n this.marker = null;\r\n }\r\n },\r\n\r\n // 事件处理\r\n handleClick(e) {\r\n this.$emit(\"click\", e);\r\n },\r\n\r\n handleMouseover(e) {\r\n this.$emit(\"mouseover\", e);\r\n },\r\n\r\n handleMouseout(e) {\r\n this.$emit(\"mouseout\", e);\r\n },\r\n\r\n handleDragStart(e) {\r\n this.$emit(\"dragstart\", e);\r\n },\r\n\r\n handleDragging(e) {\r\n this.$emit(\"dragging\", e);\r\n },\r\n\r\n handleDragEnd(e) {\r\n this.$emit(\"dragend\", e);\r\n },\r\n\r\n // 设置位置\r\n setCoordinates(coordinates) {\r\n if (this.marker) {\r\n this.marker.setCoordinates(coordinates);\r\n }\r\n },\r\n\r\n // 设置图标\r\n setIcon(icon) {\r\n if (this.marker) {\r\n this.marker.setSymbol({\r\n markerFile: icon,\r\n });\r\n }\r\n },\r\n\r\n // 设置透明度\r\n setOpacity(opacity) {\r\n if (this.marker) {\r\n this.marker.setOpacity(opacity);\r\n }\r\n },\r\n\r\n // 显示\r\n show() {\r\n if (this.marker) {\r\n this.marker.show();\r\n }\r\n },\r\n\r\n // 隐藏\r\n hide() {\r\n if (this.marker) {\r\n this.marker.hide();\r\n }\r\n },\r\n\r\n // 打开信息窗口\r\n openInfoWindow(content, options = {}) {\r\n if (this.marker) {\r\n this.marker.openInfoWindow(content, options);\r\n }\r\n },\r\n\r\n // 关闭信息窗口\r\n closeInfoWindow() {\r\n if (this.marker) {\r\n this.marker.closeInfoWindow();\r\n }\r\n },\r\n\r\n // 获取 Marker 实例\r\n getMarker() {\r\n return this.marker;\r\n },\r\n },\r\n watch: {\r\n coordinates(newVal) {\r\n this.setCoordinates(newVal);\r\n },\r\n icon(newVal) {\r\n this.setIcon(newVal);\r\n },\r\n opacity(newVal) {\r\n this.setOpacity(newVal);\r\n },\r\n visible(newVal) {\r\n if (newVal) {\r\n this.show();\r\n } else {\r\n this.hide();\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-marker {\r\n display: none;\r\n}\r\n</style>\r\n","import FyMarkerComponent from \"./index.vue\";\r\n\r\nconst FyMarker = FyMarkerComponent as any;\r\n\r\nFyMarker.install = function (Vue: any) {\r\n Vue.component(FyMarker.name || \"FyMarker\", FyMarker);\r\n};\r\n\r\nexport default FyMarker;\r\n","<template>\r\n <div class=\"fy-label\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\n\r\nexport default {\r\n name: \"FyLabel\",\r\n props: {\r\n // 位置坐标 [经度, 纬度]\r\n coordinates: {\r\n type: Array,\r\n required: true,\r\n },\r\n // 文本内容\r\n content: {\r\n type: String,\r\n required: true,\r\n },\r\n // 文本框宽度\r\n boxWidth: {\r\n type: Number,\r\n default: 160,\r\n },\r\n // 文本样式\r\n textStyle: {\r\n type: Object,\r\n default: () => ({\r\n fontSize: 12,\r\n fill: \"#333\",\r\n weight: \"bold\",\r\n }),\r\n },\r\n // 背景样式\r\n boxStyle: {\r\n type: Object,\r\n default: () => ({\r\n padding: [4, 4],\r\n symbol: {\r\n markerType: \"square\",\r\n markerFill: \"rgba(255,255,255,0.8)\",\r\n markerFillOpacity: 1,\r\n markerLineColor: \"#ccc\",\r\n markerLineWidth: 1,\r\n markerLineOpacity: 1,\r\n markerLineDasharray: [],\r\n markerWidth: 40,\r\n markerHeight: 20,\r\n },\r\n }),\r\n },\r\n // 透明度\r\n opacity: {\r\n type: Number,\r\n default: 1,\r\n },\r\n // 可见性\r\n visible: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 文本方向\r\n textDirection: {\r\n type: String,\r\n default: \"right\", // right, left, center\r\n },\r\n // 自定义属性\r\n properties: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n // 层级\r\n zIndex: {\r\n type: Number,\r\n default: 10,\r\n },\r\n },\r\n data() {\r\n return {\r\n label: null,\r\n };\r\n },\r\n inject: {\r\n mapInstance: {\r\n default: null,\r\n },\r\n },\r\n mounted() {\r\n if (this.mapInstance) {\r\n this.initLabel();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.removeLabel();\r\n },\r\n methods: {\r\n // 初始化 Label\r\n initLabel() {\r\n const config = {\r\n coordinates: this.coordinates,\r\n content: this.content,\r\n visible: this.visible,\r\n properties: this.properties,\r\n zIndex: this.zIndex,\r\n };\r\n\r\n // 设置文本框样式\r\n const textSymbol = {\r\n textName: this.content,\r\n textSize: this.textStyle.fontSize || 12,\r\n textFill: this.textStyle.fill || \"#333\",\r\n textWeight: this.textStyle.weight || \"normal\",\r\n textOpacity: this.opacity,\r\n textHaloFill: \"#ffffff\",\r\n textHaloRadius: 2,\r\n textHaloOpacity: 1,\r\n textWrapWidth: this.boxWidth,\r\n textLineSpacing: 1,\r\n };\r\n\r\n // 设置背景框样式\r\n if (this.boxStyle && this.boxStyle.symbol) {\r\n textSymbol.markerType = this.boxStyle.symbol.markerType || \"square\";\r\n textSymbol.markerFill = this.boxStyle.symbol.markerFill || \"rgba(255,255,255,0.8)\";\r\n textSymbol.markerFillOpacity = this.boxStyle.symbol.markerFillOpacity || 1;\r\n textSymbol.markerLineColor = this.boxStyle.symbol.markerLineColor || \"#ccc\";\r\n textSymbol.markerLineWidth = this.boxStyle.symbol.markerLineWidth || 1;\r\n textSymbol.markerLineOpacity = this.boxStyle.symbol.markerLineOpacity || 1;\r\n textSymbol.markerDx = (this.boxStyle.padding && this.boxStyle.padding[0]) || 4;\r\n textSymbol.markerDy = (this.boxStyle.padding && this.boxStyle.padding[1]) || 4;\r\n }\r\n\r\n config.symbol = textSymbol;\r\n\r\n this.label = new maptalks.Label(this.content, this.coordinates, config);\r\n\r\n // 绑定事件\r\n this.label.on(\"click\", this.handleClick);\r\n this.label.on(\"mouseover\", this.handleMouseover);\r\n this.label.on(\"mouseout\", this.handleMouseout);\r\n\r\n // 添加到地图\r\n this.mapInstance.addLabel(this.label);\r\n this.$emit(\"ready\", this.label);\r\n },\r\n\r\n // 移除 Label\r\n removeLabel() {\r\n if (this.label && this.mapInstance) {\r\n this.label.off(\"click\", this.handleClick);\r\n this.label.off(\"mouseover\", this.handleMouseover);\r\n this.label.off(\"mouseout\", this.handleMouseout);\r\n\r\n this.mapInstance.removeLabel(this.label);\r\n this.label = null;\r\n }\r\n },\r\n\r\n // 事件处理\r\n handleClick(e) {\r\n this.$emit(\"click\", e);\r\n },\r\n\r\n handleMouseover(e) {\r\n this.$emit(\"mouseover\", e);\r\n },\r\n\r\n handleMouseout(e) {\r\n this.$emit(\"mouseout\", e);\r\n },\r\n\r\n // 设置内容\r\n setContent(content) {\r\n if (this.label) {\r\n this.label.setContent(content);\r\n }\r\n },\r\n\r\n // 设置位置\r\n setCoordinates(coordinates) {\r\n if (this.label) {\r\n this.label.setCoordinates(coordinates);\r\n }\r\n },\r\n\r\n // 设置样式\r\n setStyle(style) {\r\n if (this.label) {\r\n this.label.setStyle(style);\r\n }\r\n },\r\n\r\n // 设置透明度\r\n setOpacity(opacity) {\r\n if (this.label) {\r\n this.label.setOpacity(opacity);\r\n }\r\n },\r\n\r\n // 显示\r\n show() {\r\n if (this.label) {\r\n this.label.show();\r\n }\r\n },\r\n\r\n // 隐藏\r\n hide() {\r\n if (this.label) {\r\n this.label.hide();\r\n }\r\n },\r\n\r\n // 获取 Label 实例\r\n getLabel() {\r\n return this.label;\r\n },\r\n },\r\n watch: {\r\n content(newVal) {\r\n this.setContent(newVal);\r\n },\r\n coordinates(newVal) {\r\n this.setCoordinates(newVal);\r\n },\r\n opacity(newVal) {\r\n this.setOpacity(newVal);\r\n },\r\n visible(newVal) {\r\n if (newVal) {\r\n this.show();\r\n } else {\r\n this.hide();\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-label {\r\n display: none;\r\n}\r\n</style>\r\n","import FyLabelComponent from \"./index.vue\";\r\n\r\nconst FyLabel = FyLabelComponent as any;\r\n\r\nFyLabel.install = function (Vue: any) {\r\n Vue.component(FyLabel.name || \"FyLabel\", FyLabel);\r\n};\r\n\r\nexport default FyLabel;\r\n","<template>\r\n <div class=\"fy-popup\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\n\r\nexport default {\r\n name: \"FyPopup\",\r\n props: {\r\n // 位置坐标 [经度, 纬度]\r\n coordinates: {\r\n type: Array,\r\n required: true,\r\n },\r\n // 弹窗内容\r\n content: {\r\n type: String,\r\n required: true,\r\n },\r\n // 标题\r\n title: {\r\n type: String,\r\n default: \"\",\r\n },\r\n // 宽度\r\n width: {\r\n type: Number,\r\n default: 300,\r\n },\r\n // 高度\r\n height: {\r\n type: Number,\r\n default: null,\r\n },\r\n // 最小宽度\r\n minWidth: {\r\n type: Number,\r\n default: 200,\r\n },\r\n // 最小高度\r\n minHeight: {\r\n type: Number,\r\n default: null,\r\n },\r\n // 最大宽度\r\n maxWidth: {\r\n type: Number,\r\n default: 600,\r\n },\r\n // 自动关闭\r\n autoClose: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n // 自定义样式类名\r\n className: {\r\n type: String,\r\n default: \"\",\r\n },\r\n // 是否显示关闭按钮\r\n closeButton: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 偏移量\r\n offset: {\r\n type: Array,\r\n default: () => [0, 0],\r\n },\r\n // 自定义属性\r\n properties: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n },\r\n data() {\r\n return {\r\n popup: null,\r\n };\r\n },\r\n inject: {\r\n mapInstance: {\r\n default: null,\r\n },\r\n },\r\n mounted() {\r\n if (this.mapInstance) {\r\n this.initPopup();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.removePopup();\r\n },\r\n methods: {\r\n // 初始化 Popup\r\n initPopup() {\r\n const config = {\r\n content: this.content,\r\n width: this.width,\r\n minWidth: this.minWidth,\r\n maxWidth: this.maxWidth,\r\n autoClose: this.autoClose,\r\n className: this.className,\r\n closeButton: this.closeButton,\r\n offset: this.offset,\r\n properties: this.properties,\r\n };\r\n\r\n if (this.height !== null) {\r\n config.height = this.height;\r\n }\r\n\r\n if (this.minHeight !== null) {\r\n config.minHeight = this.minHeight;\r\n }\r\n\r\n if (this.title) {\r\n config.title = this.title;\r\n }\r\n\r\n this.popup = new maptalks.InfoWindow(config);\r\n this.popup.setCoordinates(this.coordinates);\r\n\r\n // 绑定事件\r\n this.popup.on(\"open\", this.handleOpen);\r\n this.popup.on(\"close\", this.handleClose);\r\n this.popup.on(\"click\", this.handleClick);\r\n\r\n this.$emit(\"ready\", this.popup);\r\n },\r\n\r\n // 移除 Popup\r\n removePopup() {\r\n if (this.popup) {\r\n this.popup.off(\"open\", this.handleOpen);\r\n this.popup.off(\"close\", this.handleClose);\r\n this.popup.off(\"click\", this.handleClick);\r\n\r\n this.popup.remove();\r\n this.popup = null;\r\n }\r\n },\r\n\r\n // 事件处理\r\n handleOpen(e) {\r\n this.$emit(\"open\", e);\r\n },\r\n\r\n handleClose(e) {\r\n this.$emit(\"close\", e);\r\n },\r\n\r\n handleClick(e) {\r\n this.$emit(\"click\", e);\r\n },\r\n\r\n // 显示弹窗\r\n show() {\r\n if (this.popup && this.mapInstance) {\r\n this.mapInstance.openInfoWindow(this.popup, this.coordinates);\r\n }\r\n },\r\n\r\n // 隐藏弹窗\r\n hide() {\r\n if (this.popup) {\r\n this.popup.hide();\r\n }\r\n },\r\n\r\n // 关闭弹窗\r\n close() {\r\n if (this.popup) {\r\n this.popup.close();\r\n }\r\n },\r\n\r\n // 设置内容\r\n setContent(content) {\r\n if (this.popup) {\r\n this.popup.setContent(content);\r\n }\r\n },\r\n\r\n // 设置位置\r\n setCoordinates(coordinates) {\r\n if (this.popup) {\r\n this.popup.setCoordinates(coordinates);\r\n }\r\n },\r\n\r\n // 设置标题\r\n setTitle(title) {\r\n if (this.popup) {\r\n this.popup.setTitle(title);\r\n }\r\n },\r\n\r\n // 设置尺寸\r\n setSize(width, height) {\r\n if (this.popup) {\r\n this.popup.setSize(width, height);\r\n }\r\n },\r\n\r\n // 是否打开\r\n isOpen() {\r\n if (this.popup) {\r\n return this.popup.isOpen();\r\n }\r\n return false;\r\n },\r\n\r\n // 获取 Popup 实例\r\n getPopup() {\r\n return this.popup;\r\n },\r\n },\r\n watch: {\r\n coordinates(newVal) {\r\n this.setCoordinates(newVal);\r\n },\r\n content(newVal) {\r\n this.setContent(newVal);\r\n },\r\n title(newVal) {\r\n this.setTitle(newVal);\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-popup {\r\n display: none;\r\n}\r\n</style>\r\n","import FyPopupComponent from \"./index.vue\";\r\n\r\nconst FyPopup = FyPopupComponent as any;\r\n\r\nFyPopup.install = function (Vue: any) {\r\n Vue.component(FyPopup.name || \"FyPopup\", FyPopup);\r\n};\r\n\r\nexport default FyPopup;\r\n","<template>\r\n <div class=\"fy-cluster-marker\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\n\r\nexport default {\r\n name: \"FyClusterMarker\",\r\n props: {\r\n // Marker 数据数组\r\n markers: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n // 图层ID\r\n id: {\r\n type: String,\r\n default: \"cluster-layer\",\r\n },\r\n // 最大缩放级别,超过此级别不再聚合\r\n maxZoom: {\r\n type: Number,\r\n default: 16,\r\n },\r\n // 是否显示文本\r\n showText: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 聚合 Marker 样式\r\n clusterStyle: {\r\n type: Object,\r\n default: () => ({\r\n symbol: {\r\n markerType: \"ellipse\",\r\n markerFill: \"#ff0000\",\r\n markerFillOpacity: 0.6,\r\n markerLineColor: \"#fff\",\r\n markerLineWidth: 3,\r\n markerLineOpacity: 1,\r\n },\r\n textSize: 14,\r\n textFill: \"#fff\",\r\n }),\r\n },\r\n // 单个 Marker 样式\r\n markerStyle: {\r\n type: Object,\r\n default: () => ({\r\n symbol: {\r\n markerType: \"ellipse\",\r\n markerFill: \"#3399ff\",\r\n markerFillOpacity: 1,\r\n markerLineColor: \"#fff\",\r\n markerLineWidth: 2,\r\n markerLineOpacity: 1,\r\n markerWidth: 24,\r\n markerHeight: 24,\r\n },\r\n }),\r\n },\r\n // 图层可见性\r\n visible: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 图层透明度\r\n opacity: {\r\n type: Number,\r\n default: 1,\r\n },\r\n },\r\n data() {\r\n return {\r\n layer: null,\r\n clusterMarkers: [],\r\n };\r\n },\r\n inject: {\r\n mapInstance: {\r\n default: null,\r\n },\r\n },\r\n mounted() {\r\n if (this.mapInstance) {\r\n this.initClusterLayer();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.removeClusterLayer();\r\n },\r\n methods: {\r\n // 初始化聚合图层\r\n initClusterLayer() {\r\n if (!this.mapInstance || this.markers.length === 0) return;\r\n\r\n // 创建矢量图层\r\n this.layer = new maptalks.VectorLayer(this.id, {\r\n visible: this.visible,\r\n opacity: this.opacity,\r\n });\r\n\r\n // 添加到地图\r\n this.mapInstance.addLayer(this.layer);\r\n\r\n // 创建聚合 Marker\r\n this.updateClusterMarkers();\r\n\r\n // 绑定事件\r\n this.layer.on(\"click\", this.handleClick);\r\n\r\n this.$emit(\"ready\", this.layer);\r\n },\r\n\r\n // 更新聚合 Marker\r\n updateClusterMarkers() {\r\n if (!this.layer) return;\r\n\r\n // 清除现有的聚合 Marker\r\n this.clearClusterMarkers();\r\n\r\n // 创建 marker 数组\r\n const markerList = this.markers.map(item => {\r\n return new maptalks.Marker(item.coordinates, {\r\n properties: item.properties || {},\r\n });\r\n });\r\n\r\n // 创建聚合\r\n this.clusterMarkers = new maptalks.ClusterLayer(this.id + \"-cluster\", markerList, {\r\n noClusterWithHowManyPoints: 1,\r\n maxZoom: this.maxZoom,\r\n symbol: this.getClusterSymbol(),\r\n });\r\n\r\n // 添加到地图\r\n this.mapInstance.addLayer(this.clusterMarkers);\r\n\r\n // 设置事件\r\n this.setupClusterEvents();\r\n },\r\n\r\n // 获取聚合符号\r\n getClusterSymbol() {\r\n return {\r\n markerType: \"ellipse\",\r\n markerFill: \"#ff0000\",\r\n markerFillOpacity: 0.6,\r\n markerLineColor: \"#fff\",\r\n markerLineWidth: 3,\r\n markerLineOpacity: 1,\r\n textFaceName: \"sans-serif\",\r\n textName: \"{count}\",\r\n textFill: \"#fff\",\r\n textSize: 12,\r\n textWeight: \"bold\",\r\n };\r\n },\r\n\r\n // 设置聚合事件\r\n setupClusterEvents() {\r\n if (!this.clusterMarkers) return;\r\n\r\n this.clusterMarkers.on(\"click\", this.handleClusterClick);\r\n this.clusterMarkers.on(\"mouseover\", this.handleClusterMouseover);\r\n this.clusterMarkers.on(\"mouseout\", this.handleClusterMouseout);\r\n },\r\n\r\n // 事件处理\r\n handleClick(e) {\r\n this.$emit(\"click\", e);\r\n },\r\n\r\n handleClusterClick(e) {\r\n const cluster = e.target;\r\n const markers = cluster.getGeometries();\r\n\r\n this.$emit(\"cluster-click\", {\r\n cluster,\r\n markers,\r\n coordinates: cluster.getCoordinates(),\r\n count: markers.length,\r\n });\r\n\r\n // 如果是聚合且缩放级别允许,则缩放到该区域\r\n if (markers.length > 1 && this.mapInstance.getZoom() < this.maxZoom) {\r\n this.mapInstance.fitExtent(cluster.getExtent(), {\r\n padding: [50, 50, 50, 50],\r\n });\r\n }\r\n },\r\n\r\n handleClusterMouseover(e) {\r\n const cluster = e.target;\r\n const markers = cluster.getGeometries();\r\n\r\n this.$emit(\"cluster-mouseover\", {\r\n cluster,\r\n markers,\r\n coordinates: cluster.getCoordinates(),\r\n count: markers.length,\r\n });\r\n },\r\n\r\n handleClusterMouseout(e) {\r\n const cluster = e.target;\r\n const markers = cluster.getGeometries();\r\n\r\n this.$emit(\"cluster-mouseout\", {\r\n cluster,\r\n markers,\r\n coordinates: cluster.getCoordinates(),\r\n count: markers.length,\r\n });\r\n },\r\n\r\n // 清除聚合 Marker\r\n clearClusterMarkers() {\r\n if (this.clusterMarkers) {\r\n this.clusterMarkers.off(\"click\", this.handleClusterClick);\r\n this.clusterMarkers.off(\"mouseover\", this.handleClusterMouseover);\r\n this.clusterMarkers.off(\"mouseout\", this.handleClusterMouseout);\r\n\r\n if (this.mapInstance) {\r\n this.mapInstance.removeLayer(this.clusterMarkers);\r\n }\r\n this.clusterMarkers = null;\r\n }\r\n },\r\n\r\n // 移除聚合图层\r\n removeClusterLayer() {\r\n this.clearClusterMarkers();\r\n\r\n if (this.layer) {\r\n this.layer.off(\"click\", this.handleClick);\r\n if (this.mapInstance) {\r\n this.mapInstance.removeLayer(this.layer);\r\n }\r\n this.layer = null;\r\n }\r\n },\r\n\r\n // 添加 Marker\r\n addMarker(markerData) {\r\n this.markers.push(markerData);\r\n this.updateClusterMarkers();\r\n },\r\n\r\n // 批量添加 Marker\r\n addMarkers(markerDataArray) {\r\n this.markers.push(...markerDataArray);\r\n this.updateClusterMarkers();\r\n },\r\n\r\n // 移除 Marker\r\n removeMarker(markerId) {\r\n const index = this.markers.findIndex(m => m.id === markerId);\r\n if (index > -1) {\r\n this.markers.splice(index, 1);\r\n this.updateClusterMarkers();\r\n }\r\n },\r\n\r\n // 清空所有 Marker\r\n clearMarkers() {\r\n this.markers = [];\r\n this.updateClusterMarkers();\r\n },\r\n\r\n // 显示图层\r\n show() {\r\n if (this.layer) {\r\n this.layer.show();\r\n }\r\n if (this.clusterMarkers) {\r\n this.clusterMarkers.show();\r\n }\r\n },\r\n\r\n // 隐藏图层\r\n hide() {\r\n if (this.layer) {\r\n this.layer.hide();\r\n }\r\n if (this.clusterMarkers) {\r\n this.clusterMarkers.hide();\r\n }\r\n },\r\n\r\n // 设置透明度\r\n setOpacity(opacity) {\r\n if (this.layer) {\r\n this.layer.setOpacity(opacity);\r\n }\r\n if (this.clusterMarkers) {\r\n this.clusterMarkers.setOpacity(opacity);\r\n }\r\n },\r\n\r\n // 获取图层实例\r\n getLayer() {\r\n return this.layer;\r\n },\r\n\r\n // 获取聚合实例\r\n getCluster() {\r\n return this.clusterMarkers;\r\n },\r\n },\r\n watch: {\r\n markers: {\r\n handler() {\r\n this.updateClusterMarkers();\r\n },\r\n deep: true,\r\n },\r\n visible(newVal) {\r\n if (newVal) {\r\n this.show();\r\n } else {\r\n this.hide();\r\n }\r\n },\r\n opacity(newVal) {\r\n this.setOpacity(newVal);\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-cluster-marker {\r\n display: none;\r\n}\r\n</style>\r\n","import FyClusterMarkerComponent from \"./index.vue\";\r\n\r\nconst FyClusterMarker = FyClusterMarkerComponent as any;\r\n\r\nFyClusterMarker.install = function (Vue: any) {\r\n Vue.component(FyClusterMarker.name || \"FyClusterMarker\", FyClusterMarker);\r\n};\r\n\r\nexport default FyClusterMarker;\r\n","<template>\r\n <div class=\"fy-draw-tool\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\nimport \"maptalks/dist/maptalks.css\";\r\n\r\nexport default {\r\n name: \"FyDrawTool\",\r\n props: {\r\n // 图层ID\r\n layerId: {\r\n type: String,\r\n default: \"draw-layer\",\r\n },\r\n // 默认绘制模式\r\n mode: {\r\n type: String,\r\n default: \"none\", // point, line, polygon, rectangle, circle, ellipse, none\r\n },\r\n // 绘制样式\r\n symbol: {\r\n type: Object,\r\n default: () => ({\r\n lineColor: \"#ff0000\",\r\n lineWidth: 2,\r\n lineOpacity: 0.8,\r\n polygonFill: \"#ff0000\",\r\n polygonOpacity: 0.3,\r\n markerFill: \"#ff0000\",\r\n markerFillOpacity: 1,\r\n markerLineColor: \"#ffffff\",\r\n markerLineWidth: 2,\r\n markerLineOpacity: 1,\r\n markerWidth: 16,\r\n markerHeight: 16,\r\n }),\r\n },\r\n // 是否允许编辑\r\n editable: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 是否允许删除\r\n deletable: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 是否显示提示信息\r\n showTooltip: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n data() {\r\n return {\r\n layer: null,\r\n drawTool: null,\r\n isDrawing: false,\r\n };\r\n },\r\n inject: {\r\n mapInstance: {\r\n default: null,\r\n },\r\n },\r\n mounted() {\r\n if (this.mapInstance) {\r\n this.initDrawTool();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.removeDrawTool();\r\n },\r\n methods: {\r\n // 初始化绘制工具\r\n initDrawTool() {\r\n if (!this.mapInstance) return;\r\n\r\n // 创建矢量图层\r\n this.layer = new maptalks.VectorLayer(this.layerId, {\r\n enableAltitude: true,\r\n altitudeProperty: \"altitude\",\r\n });\r\n\r\n // 添加到地图\r\n this.mapInstance.addLayer(this.layer);\r\n\r\n // 创建绘制工具\r\n this.drawTool = new maptalks.DrawTool({\r\n mode: this.mode,\r\n symbol: this.symbol,\r\n once: false,\r\n editable: this.editable,\r\n autoSurface: true,\r\n }).addTo(this.mapInstance);\r\n\r\n // 绑定事件\r\n this.bindDrawToolEvents();\r\n\r\n this.$emit(\"ready\", this.drawTool);\r\n },\r\n\r\n // 绑定绘制工具事件\r\n bindDrawToolEvents() {\r\n if (!this.drawTool) return;\r\n\r\n this.drawTool.on(\"drawstart\", this.handleDrawStart);\r\n this.drawTool.on(\"drawvertex\", this.handleDrawVertex);\r\n this.drawTool.on(\"mousemove\", this.handleMouseMove);\r\n this.drawTool.on(\"drawend\", this.handleDrawEnd);\r\n this.drawTool.on(\"disable\", this.handleDisable);\r\n this.drawTool.on(\"editend\", this.handleEditEnd);\r\n },\r\n\r\n // 事件处理\r\n handleDrawStart(param) {\r\n this.isDrawing = true;\r\n this.$emit(\"drawstart\", param);\r\n },\r\n\r\n handleDrawVertex(param) {\r\n this.$emit(\"drawvertex\", param);\r\n },\r\n\r\n handleMouseMove(param) {\r\n this.$emit(\"mousemove\", param);\r\n },\r\n\r\n handleDrawEnd(param) {\r\n this.isDrawing = false;\r\n this.$emit(\"drawend\", param);\r\n },\r\n\r\n handleDisable() {\r\n this.isDrawing = false;\r\n this.$emit(\"disable\");\r\n },\r\n\r\n handleEditEnd(param) {\r\n this.$emit(\"editend\", param);\r\n },\r\n\r\n // 设置绘制模式\r\n setMode(mode) {\r\n if (this.drawTool) {\r\n this.drawTool.setMode(mode);\r\n }\r\n },\r\n\r\n // 启用绘制\r\n enable() {\r\n if (this.drawTool) {\r\n this.drawTool.enable();\r\n }\r\n },\r\n\r\n // 禁用绘制\r\n disable() {\r\n if (this.drawTool) {\r\n this.drawTool.disable();\r\n }\r\n },\r\n\r\n // 获取当前模式\r\n getMode() {\r\n if (this.drawTool) {\r\n return this.drawTool.getMode();\r\n }\r\n return \"none\";\r\n },\r\n\r\n // 获取当前状态\r\n getStatus() {\r\n if (this.drawTool) {\r\n return this.drawTool.getStatus();\r\n }\r\n return null;\r\n },\r\n\r\n // 获取当前绘制的图形\r\n getCurrentGeometry() {\r\n if (this.drawTool) {\r\n return this.drawTool.getCurrentGeometry();\r\n }\r\n return null;\r\n },\r\n\r\n // 获取所有绘制的图形\r\n getGeometries() {\r\n if (this.layer) {\r\n return this.layer.getGeometries();\r\n }\r\n return [];\r\n },\r\n\r\n // 清除所有图形\r\n clear() {\r\n if (this.layer) {\r\n this.layer.clear();\r\n }\r\n this.$emit(\"clear\");\r\n },\r\n\r\n // 撤销上一步\r\n undo() {\r\n if (this.drawTool && this.isDrawing) {\r\n this.drawTool.undo();\r\n }\r\n },\r\n\r\n // 重做\r\n redo() {\r\n if (this.drawTool && this.isDrawing) {\r\n this.drawTool.redo();\r\n }\r\n },\r\n\r\n // 设置符号\r\n setSymbol(symbol) {\r\n if (this.drawTool) {\r\n this.drawTool.setSymbol(symbol);\r\n }\r\n },\r\n\r\n // 添加几何图形\r\n addGeometry(geometry) {\r\n if (this.layer && geometry) {\r\n this.layer.addGeometry(geometry);\r\n }\r\n },\r\n\r\n // 移除几何图形\r\n removeGeometry(geometry) {\r\n if (this.layer && geometry) {\r\n this.layer.removeGeometry(geometry);\r\n }\r\n },\r\n\r\n // 测距\r\n measureDistance(coordinates) {\r\n if (coordinates && coordinates.length >= 2) {\r\n let distance = 0;\r\n for (let i = 0; i < coordinates.length - 1; i++) {\r\n const p1 = new maptalks.Coordinate(coordinates[i]);\r\n const p2 = new maptalks.Coordinate(coordinates[i + 1]);\r\n distance += p1.distanceTo(p2);\r\n }\r\n return distance;\r\n }\r\n return 0;\r\n },\r\n\r\n // 测面积\r\n measureArea(coordinates) {\r\n if (coordinates && coordinates.length >= 3) {\r\n const polygon = new maptalks.Polygon(coordinates);\r\n return polygon.getArea();\r\n }\r\n return 0;\r\n },\r\n\r\n // 获取绘制工具实例\r\n getDrawTool() {\r\n return this.drawTool;\r\n },\r\n\r\n // 获取图层实例\r\n getLayer() {\r\n return this.layer;\r\n },\r\n },\r\n watch: {\r\n mode(newVal) {\r\n this.setMode(newVal);\r\n },\r\n symbol: {\r\n handler(newVal) {\r\n this.setSymbol(newVal);\r\n },\r\n deep: true,\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-draw-tool {\r\n display: none;\r\n}\r\n</style>\r\n","import FyDrawToolComponent from \"./index.vue\";\r\n\r\nconst FyDrawTool = FyDrawToolComponent as any;\r\n\r\nFyDrawTool.install = function (Vue: any) {\r\n Vue.component(FyDrawTool.name || \"FyDrawTool\", FyDrawTool);\r\n};\r\n\r\nexport default FyDrawTool;\r\n","<template>\r\n <div class=\"fy-draw-point\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\n\r\nexport default {\r\n name: \"FyDrawPoint\",\r\n props: {\r\n // 图层ID\r\n layerId: {\r\n type: String,\r\n default: \"draw-point-layer\",\r\n },\r\n // 点样式\r\n symbol: {\r\n type: Object,\r\n default: () => ({\r\n markerType: \"ellipse\",\r\n markerFill: \"#ff0000\",\r\n markerFillOpacity: 1,\r\n markerLineColor: \"#ffffff\",\r\n markerLineWidth: 2,\r\n markerLineOpacity: 1,\r\n markerWidth: 20,\r\n markerHeight: 20,\r\n }),\r\n },\r\n // 是否自动开始绘制\r\n autoStart: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 是否显示提示信息\r\n showTooltip: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n data() {\r\n return {\r\n layer: null,\r\n drawTool: null,\r\n points: [],\r\n };\r\n },\r\n inject: {\r\n mapInstance: {\r\n default: null,\r\n },\r\n },\r\n mounted() {\r\n if (this.mapInstance) {\r\n this.initDrawPoint();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.removeDrawPoint();\r\n },\r\n methods: {\r\n // 初始化绘制点工具\r\n initDrawPoint() {\r\n if (!this.mapInstance) return;\r\n\r\n // 创建矢量图层\r\n this.layer = new maptalks.VectorLayer(this.layerId);\r\n this.mapInstance.addLayer(this.layer);\r\n\r\n // 创建绘制工具\r\n this.drawTool = new maptalks.DrawTool({\r\n mode: \"point\",\r\n symbol: this.symbol,\r\n once: true,\r\n enableAltitude: true,\r\n }).addTo(this.mapInstance);\r\n\r\n // 绑定事件\r\n this.bindDrawToolEvents();\r\n\r\n if (this.autoStart) {\r\n this.enable();\r\n }\r\n\r\n this.$emit(\"ready\", this.drawTool);\r\n },\r\n\r\n // 绑定绘制工具事件\r\n bindDrawToolEvents() {\r\n if (!this.drawTool) return;\r\n\r\n this.drawTool.on(\"drawstart\", this.handleDrawStart);\r\n this.drawTool.on(\"drawend\", this.handleDrawEnd);\r\n this.drawTool.on(\"disable\", this.handleDisable);\r\n },\r\n\r\n // 事件处理\r\n handleDrawStart(param) {\r\n this.$emit(\"drawstart\", param);\r\n },\r\n\r\n handleDrawEnd(param) {\r\n const point = param.geometry;\r\n this.points.push(point);\r\n this.$emit(\"drawend\", {\r\n point,\r\n coordinates: point.getCoordinates(),\r\n allPoints: this.points,\r\n });\r\n },\r\n\r\n handleDisable() {\r\n this.$emit(\"disable\");\r\n },\r\n\r\n // 启用绘制\r\n enable() {\r\n if (this.drawTool) {\r\n this.drawTool.enable();\r\n }\r\n },\r\n\r\n // 禁用绘制\r\n disable() {\r\n if (this.drawTool) {\r\n this.drawTool.disable();\r\n }\r\n },\r\n\r\n // 获取所有绘制的点\r\n getPoints() {\r\n return this.points;\r\n },\r\n\r\n // 清除所有点\r\n clear() {\r\n this.points = [];\r\n if (this.layer) {\r\n this.layer.clear();\r\n }\r\n this.$emit(\"clear\");\r\n },\r\n\r\n // 添加点\r\n addPoint(coordinates) {\r\n const point = new maptalks.Marker(coordinates, {\r\n symbol: this.symbol,\r\n });\r\n this.layer.addGeometry(point);\r\n this.points.push(point);\r\n this.$emit(\"add-point\", { point, coordinates });\r\n },\r\n\r\n // 移除点\r\n removePoint(index) {\r\n if (index >= 0 && index < this.points.length) {\r\n const point = this.points[index];\r\n this.layer.removeGeometry(point);\r\n this.points.splice(index, 1);\r\n this.$emit(\"remove-point\", { point, index });\r\n }\r\n },\r\n\r\n // 设置样式\r\n setSymbol(symbol) {\r\n if (this.drawTool) {\r\n this.drawTool.setSymbol(symbol);\r\n }\r\n },\r\n\r\n // 获取绘制工具实例\r\n getDrawTool() {\r\n return this.drawTool;\r\n },\r\n\r\n // 获取图层实例\r\n getLayer() {\r\n return this.layer;\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-draw-point {\r\n display: none;\r\n}\r\n</style>\r\n","import FyDrawPointComponent from \"./index.vue\";\r\n\r\nconst FyDrawPoint = FyDrawPointComponent as any;\r\n\r\nFyDrawPoint.install = function (Vue: any) {\r\n Vue.component(FyDrawPoint.name || \"FyDrawPoint\", FyDrawPoint);\r\n};\r\n\r\nexport default FyDrawPoint;\r\n","<template>\r\n <div class=\"fy-draw-line\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\n\r\nexport default {\r\n name: \"FyDrawLine\",\r\n props: {\r\n // 图层ID\r\n layerId: {\r\n type: String,\r\n default: \"draw-line-layer\",\r\n },\r\n // 线样式\r\n symbol: {\r\n type: Object,\r\n default: () => ({\r\n lineColor: \"#ff0000\",\r\n lineWidth: 3,\r\n lineOpacity: 0.8,\r\n lineDasharray: [],\r\n }),\r\n },\r\n // 是否自动开始绘制\r\n autoStart: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 是否显示距离标注\r\n showDistance: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 是否显示提示信息\r\n showTooltip: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n data() {\r\n return {\r\n layer: null,\r\n drawTool: null,\r\n lines: [],\r\n };\r\n },\r\n inject: {\r\n mapInstance: {\r\n default: null,\r\n },\r\n },\r\n mounted() {\r\n if (this.mapInstance) {\r\n this.initDrawLine();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.removeDrawLine();\r\n },\r\n methods: {\r\n // 初始化绘制线工具\r\n initDrawLine() {\r\n if (!this.mapInstance) return;\r\n\r\n // 创建矢量图层\r\n this.layer = new maptalks.VectorLayer(this.layerId);\r\n this.mapInstance.addLayer(this.layer);\r\n\r\n // 创建绘制工具\r\n this.drawTool = new maptalks.DrawTool({\r\n mode: \"linestring\",\r\n symbol: this.symbol,\r\n once: true,\r\n enableAltitude: true,\r\n }).addTo(this.mapInstance);\r\n\r\n // 绑定事件\r\n this.bindDrawToolEvents();\r\n\r\n if (this.autoStart) {\r\n this.enable();\r\n }\r\n\r\n this.$emit(\"ready\", this.drawTool);\r\n },\r\n\r\n // 绑定绘制工具事件\r\n bindDrawToolEvents() {\r\n if (!this.drawTool) return;\r\n\r\n this.drawTool.on(\"drawstart\", this.handleDrawStart);\r\n this.drawTool.on(\"drawend\", this.handleDrawEnd);\r\n this.drawTool.on(\"disable\", this.handleDisable);\r\n },\r\n\r\n // 事件处理\r\n handleDrawStart(param) {\r\n this.$emit(\"drawstart\", param);\r\n },\r\n\r\n handleDrawEnd(param) {\r\n const line = param.geometry;\r\n this.lines.push(line);\r\n\r\n const result = {\r\n line,\r\n coordinates: line.getCoordinates(),\r\n distance: this.calculateDistance(line.getCoordinates()),\r\n allLines: this.lines,\r\n };\r\n\r\n // 如果需要显示距离,添加标注\r\n if (this.showDistance) {\r\n this.addDistanceLabel(line, result.distance);\r\n }\r\n\r\n this.$emit(\"drawend\", result);\r\n },\r\n\r\n handleDisable() {\r\n this.$emit(\"disable\");\r\n },\r\n\r\n // 计算距离\r\n calculateDistance(coordinates) {\r\n if (coordinates && coordinates.length >= 2) {\r\n let distance = 0;\r\n for (let i = 0; i < coordinates.length - 1; i++) {\r\n const p1 = new maptalks.Coordinate(coordinates[i]);\r\n const p2 = new maptalks.Coordinate(coordinates[i + 1]);\r\n distance += p1.distanceTo(p2);\r\n }\r\n return distance;\r\n }\r\n return 0;\r\n },\r\n\r\n // 添加距离标注\r\n addDistanceLabel(line, distance) {\r\n if (!this.layer) return;\r\n\r\n const coordinates = line.getCoordinates();\r\n const centerIndex = Math.floor(coordinates.length / 2);\r\n const center = coordinates[centerIndex];\r\n\r\n const label = new maptalks.Label(this.formatDistance(distance), center, {\r\n boxStyle: {\r\n padding: [2, 2],\r\n symbol: {\r\n markerType: \"square\",\r\n markerFill: \"rgba(255,255,255,0.9)\",\r\n markerLineColor: \"#666\",\r\n markerLineWidth: 1,\r\n },\r\n },\r\n textStyle: {\r\n fontSize: 12,\r\n fill: \"#333\",\r\n weight: \"bold\",\r\n },\r\n });\r\n\r\n this.layer.addGeometry(label);\r\n },\r\n\r\n // 格式化距离\r\n formatDistance(distance) {\r\n if (distance < 1000) {\r\n return Math.round(distance) + \"m\";\r\n } else {\r\n return (distance / 1000).toFixed(2) + \"km\";\r\n }\r\n },\r\n\r\n // 启用绘制\r\n enable() {\r\n if (this.drawTool) {\r\n this.drawTool.enable();\r\n }\r\n },\r\n\r\n // 禁用绘制\r\n disable() {\r\n if (this.drawTool) {\r\n this.drawTool.disable();\r\n }\r\n },\r\n\r\n // 获取所有绘制的线\r\n getLines() {\r\n return this.lines;\r\n },\r\n\r\n // 清除所有线\r\n clear() {\r\n this.lines = [];\r\n if (this.layer) {\r\n this.layer.clear();\r\n }\r\n this.$emit(\"clear\");\r\n },\r\n\r\n // 添加线\r\n addLine(coordinates) {\r\n const line = new maptalks.LineString(coordinates, {\r\n symbol: this.symbol,\r\n });\r\n this.layer.addGeometry(line);\r\n this.lines.push(line);\r\n\r\n const distance = this.calculateDistance(coordinates);\r\n\r\n if (this.showDistance) {\r\n this.addDistanceLabel(line, distance);\r\n }\r\n\r\n this.$emit(\"add-line\", { line, coordinates, distance });\r\n },\r\n\r\n // 移除线\r\n removeLine(index) {\r\n if (index >= 0 && index < this.lines.length) {\r\n const line = this.lines[index];\r\n this.layer.removeGeometry(line);\r\n this.lines.splice(index, 1);\r\n this.$emit(\"remove-line\", { line, index });\r\n }\r\n },\r\n\r\n // 设置样式\r\n setSymbol(symbol) {\r\n if (this.drawTool) {\r\n this.drawTool.setSymbol(symbol);\r\n }\r\n },\r\n\r\n // 获取绘制工具实例\r\n getDrawTool() {\r\n return this.drawTool;\r\n },\r\n\r\n // 获取图层实例\r\n getLayer() {\r\n return this.layer;\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-draw-line {\r\n display: none;\r\n}\r\n</style>\r\n","import FyDrawLineComponent from \"./index.vue\";\r\n\r\nconst FyDrawLine = FyDrawLineComponent as any;\r\n\r\nFyDrawLine.install = function (Vue: any) {\r\n Vue.component(FyDrawLine.name || \"FyDrawLine\", FyDrawLine);\r\n};\r\n\r\nexport default FyDrawLine;\r\n","<template>\r\n <div class=\"fy-draw-polygon\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\n\r\nexport default {\r\n name: \"FyDrawPolygon\",\r\n props: {\r\n // 图层ID\r\n layerId: {\r\n type: String,\r\n default: \"draw-polygon-layer\",\r\n },\r\n // 面样式\r\n symbol: {\r\n type: Object,\r\n default: () => ({\r\n lineColor: \"#ff0000\",\r\n lineWidth: 2,\r\n lineOpacity: 0.8,\r\n polygonFill: \"#ff0000\",\r\n polygonOpacity: 0.3,\r\n lineDasharray: [],\r\n }),\r\n },\r\n // 是否自动开始绘制\r\n autoStart: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 是否显示面积标注\r\n showArea: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 是否显示提示信息\r\n showTooltip: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n data() {\r\n return {\r\n layer: null,\r\n drawTool: null,\r\n polygons: [],\r\n };\r\n },\r\n inject: {\r\n mapInstance: {\r\n default: null,\r\n },\r\n },\r\n mounted() {\r\n if (this.mapInstance) {\r\n this.initDrawPolygon();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.removeDrawPolygon();\r\n },\r\n methods: {\r\n // 初始化绘制面工具\r\n initDrawPolygon() {\r\n if (!this.mapInstance) return;\r\n\r\n // 创建矢量图层\r\n this.layer = new maptalks.VectorLayer(this.layerId);\r\n this.mapInstance.addLayer(this.layer);\r\n\r\n // 创建绘制工具\r\n this.drawTool = new maptalks.DrawTool({\r\n mode: \"polygon\",\r\n symbol: this.symbol,\r\n once: true,\r\n enableAltitude: true,\r\n }).addTo(this.mapInstance);\r\n\r\n // 绑定事件\r\n this.bindDrawToolEvents();\r\n\r\n if (this.autoStart) {\r\n this.enable();\r\n }\r\n\r\n this.$emit(\"ready\", this.drawTool);\r\n },\r\n\r\n // 绑定绘制工具事件\r\n bindDrawToolEvents() {\r\n if (!this.drawTool) return;\r\n\r\n this.drawTool.on(\"drawstart\", this.handleDrawStart);\r\n this.drawTool.on(\"drawend\", this.handleDrawEnd);\r\n this.drawTool.on(\"disable\", this.handleDisable);\r\n },\r\n\r\n // 事件处理\r\n handleDrawStart(param) {\r\n this.$emit(\"drawstart\", param);\r\n },\r\n\r\n handleDrawEnd(param) {\r\n const polygon = param.geometry;\r\n this.polygons.push(polygon);\r\n\r\n const result = {\r\n polygon,\r\n coordinates: polygon.getCoordinates(),\r\n area: this.calculateArea(polygon),\r\n perimeter: this.calculatePerimeter(polygon.getCoordinates()[0]),\r\n allPolygons: this.polygons,\r\n };\r\n\r\n // 如果需要显示面积,添加标注\r\n if (this.showArea) {\r\n this.addAreaLabel(polygon, result.area);\r\n }\r\n\r\n this.$emit(\"drawend\", result);\r\n },\r\n\r\n handleDisable() {\r\n this.$emit(\"disable\");\r\n },\r\n\r\n // 计算面积\r\n calculateArea(polygon) {\r\n if (polygon) {\r\n return polygon.getArea();\r\n }\r\n return 0;\r\n },\r\n\r\n // 计算周长\r\n calculatePerimeter(coordinates) {\r\n if (coordinates && coordinates.length >= 2) {\r\n let perimeter = 0;\r\n for (let i = 0; i < coordinates.length - 1; i++) {\r\n const p1 = new maptalks.Coordinate(coordinates[i]);\r\n const p2 = new maptalks.Coordinate(coordinates[i + 1]);\r\n perimeter += p1.distanceTo(p2);\r\n }\r\n return perimeter;\r\n }\r\n return 0;\r\n },\r\n\r\n // 添加面积标注\r\n addAreaLabel(polygon, area) {\r\n if (!this.layer) return;\r\n\r\n const center = polygon.getCenter();\r\n\r\n const label = new maptalks.Label(this.formatArea(area), center, {\r\n boxStyle: {\r\n padding: [2, 2],\r\n symbol: {\r\n markerType: \"square\",\r\n markerFill: \"rgba(255,255,255,0.9)\",\r\n markerLineColor: \"#666\",\r\n markerLineWidth: 1,\r\n },\r\n },\r\n textStyle: {\r\n fontSize: 12,\r\n fill: \"#333\",\r\n weight: \"bold\",\r\n },\r\n });\r\n\r\n this.layer.addGeometry(label);\r\n },\r\n\r\n // 格式化面积\r\n formatArea(area) {\r\n if (area < 1000000) {\r\n return Math.round(area) + \"m²\";\r\n } else {\r\n return (area / 1000000).toFixed(2) + \"km²\";\r\n }\r\n },\r\n\r\n // 启用绘制\r\n enable() {\r\n if (this.drawTool) {\r\n this.drawTool.enable();\r\n }\r\n },\r\n\r\n // 禁用绘制\r\n disable() {\r\n if (this.drawTool) {\r\n this.drawTool.disable();\r\n }\r\n },\r\n\r\n // 获取所有绘制的面\r\n getPolygons() {\r\n return this.polygons;\r\n },\r\n\r\n // 清除所有面\r\n clear() {\r\n this.polygons = [];\r\n if (this.layer) {\r\n this.layer.clear();\r\n }\r\n this.$emit(\"clear\");\r\n },\r\n\r\n // 添加面\r\n addPolygon(coordinates) {\r\n const polygon = new maptalks.Polygon(coordinates, {\r\n symbol: this.symbol,\r\n });\r\n this.layer.addGeometry(polygon);\r\n this.polygons.push(polygon);\r\n\r\n const area = this.calculateArea(polygon);\r\n\r\n if (this.showArea) {\r\n this.addAreaLabel(polygon, area);\r\n }\r\n\r\n this.$emit(\"add-polygon\", { polygon, coordinates, area });\r\n },\r\n\r\n // 移除面\r\n removePolygon(index) {\r\n if (index >= 0 && index < this.polygons.length) {\r\n const polygon = this.polygons[index];\r\n this.layer.removeGeometry(polygon);\r\n this.polygons.splice(index, 1);\r\n this.$emit(\"remove-polygon\", { polygon, index });\r\n }\r\n },\r\n\r\n // 设置样式\r\n setSymbol(symbol) {\r\n if (this.drawTool) {\r\n this.drawTool.setSymbol(symbol);\r\n }\r\n },\r\n\r\n // 获取绘制工具实例\r\n getDrawTool() {\r\n return this.drawTool;\r\n },\r\n\r\n // 获取图层实例\r\n getLayer() {\r\n return this.layer;\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-draw-polygon {\r\n display: none;\r\n}\r\n</style>\r\n","import FyDrawPolygonComponent from \"./index.vue\";\r\n\r\nconst FyDrawPolygon = FyDrawPolygonComponent as any;\r\n\r\nFyDrawPolygon.install = function (Vue: any) {\r\n Vue.component(FyDrawPolygon.name || \"FyDrawPolygon\", FyDrawPolygon);\r\n};\r\n\r\nexport default FyDrawPolygon;\r\n","<template>\r\n <div class=\"fy-draw-circle\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\n\r\nexport default {\r\n name: \"FyDrawCircle\",\r\n props: {\r\n // 图层ID\r\n layerId: {\r\n type: String,\r\n default: \"draw-circle-layer\",\r\n },\r\n // 圆样式\r\n symbol: {\r\n type: Object,\r\n default: () => ({\r\n lineColor: \"#ff0000\",\r\n lineWidth: 2,\r\n lineOpacity: 0.8,\r\n polygonFill: \"#ff0000\",\r\n polygonOpacity: 0.3,\r\n }),\r\n },\r\n // 是否自动开始绘制\r\n autoStart: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 是否显示半径和面积标注\r\n showLabels: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 是否显示提示信息\r\n showTooltip: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n data() {\r\n return {\r\n layer: null,\r\n drawTool: null,\r\n circles: [],\r\n };\r\n },\r\n inject: {\r\n mapInstance: {\r\n default: null,\r\n },\r\n },\r\n mounted() {\r\n if (this.mapInstance) {\r\n this.initDrawCircle();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.removeDrawCircle();\r\n },\r\n methods: {\r\n // 初始化绘制圆工具\r\n initDrawCircle() {\r\n if (!this.mapInstance) return;\r\n\r\n // 创建矢量图层\r\n this.layer = new maptalks.VectorLayer(this.layerId);\r\n this.mapInstance.addLayer(this.layer);\r\n\r\n // 创建绘制工具\r\n this.drawTool = new maptalks.DrawTool({\r\n mode: \"circle\",\r\n symbol: this.symbol,\r\n once: true,\r\n enableAltitude: true,\r\n }).addTo(this.mapInstance);\r\n\r\n // 绑定事件\r\n this.bindDrawToolEvents();\r\n\r\n if (this.autoStart) {\r\n this.enable();\r\n }\r\n\r\n this.$emit(\"ready\", this.drawTool);\r\n },\r\n\r\n // 绑定绘制工具事件\r\n bindDrawToolEvents() {\r\n if (!this.drawTool) return;\r\n\r\n this.drawTool.on(\"drawstart\", this.handleDrawStart);\r\n this.drawTool.on(\"drawend\", this.handleDrawEnd);\r\n this.drawTool.on(\"disable\", this.handleDisable);\r\n },\r\n\r\n // 事件处理\r\n handleDrawStart(param) {\r\n this.$emit(\"drawstart\", param);\r\n },\r\n\r\n handleDrawEnd(param) {\r\n const circle = param.geometry;\r\n this.circles.push(circle);\r\n\r\n const result = {\r\n circle,\r\n center: circle.getCoordinates(),\r\n radius: this.calculateRadius(circle),\r\n area: this.calculateArea(circle),\r\n perimeter: this.calculatePerimeter(circle),\r\n allCircles: this.circles,\r\n };\r\n\r\n // 如果需要显示标注,添加半径和面积标注\r\n if (this.showLabels) {\r\n this.addCircleLabels(circle, result.radius, result.area);\r\n }\r\n\r\n this.$emit(\"drawend\", result);\r\n },\r\n\r\n handleDisable() {\r\n this.$emit(\"disable\");\r\n },\r\n\r\n // 计算半径\r\n calculateRadius(circle) {\r\n if (circle) {\r\n return circle.getRadius();\r\n }\r\n return 0;\r\n },\r\n\r\n // 计算面积\r\n calculateArea(circle) {\r\n if (circle) {\r\n return circle.getArea();\r\n }\r\n return 0;\r\n },\r\n\r\n // 计算周长\r\n calculatePerimeter(circle) {\r\n if (circle) {\r\n const radius = circle.getRadius();\r\n return 2 * Math.PI * radius;\r\n }\r\n return 0;\r\n },\r\n\r\n // 添加圆的标注\r\n addCircleLabels(circle, radius, area) {\r\n if (!this.layer) return;\r\n\r\n const center = circle.getCoordinates();\r\n\r\n // 半径标注\r\n const radiusLabel = new maptalks.Label(this.formatDistance(radius), center, {\r\n boxStyle: {\r\n padding: [2, 2],\r\n symbol: {\r\n markerType: \"square\",\r\n markerFill: \"rgba(255,255,255,0.9)\",\r\n markerLineColor: \"#666\",\r\n markerLineWidth: 1,\r\n },\r\n },\r\n textStyle: {\r\n fontSize: 12,\r\n fill: \"#333\",\r\n weight: \"bold\",\r\n },\r\n });\r\n\r\n this.layer.addGeometry(radiusLabel);\r\n\r\n // 面积标注(在圆的右上方)\r\n const angle = Math.PI / 4; // 45度\r\n const labelCoords = {\r\n x: center.x + radius * Math.cos(angle),\r\n y: center.y + radius * Math.sin(angle),\r\n };\r\n\r\n const areaLabel = new maptalks.Label(this.formatArea(area), labelCoords, {\r\n boxStyle: {\r\n padding: [2, 2],\r\n symbol: {\r\n markerType: \"square\",\r\n markerFill: \"rgba(255,255,255,0.9)\",\r\n markerLineColor: \"#666\",\r\n markerLineWidth: 1,\r\n },\r\n },\r\n textStyle: {\r\n fontSize: 11,\r\n fill: \"#666\",\r\n weight: \"normal\",\r\n },\r\n });\r\n\r\n this.layer.addGeometry(areaLabel);\r\n },\r\n\r\n // 格式化距离\r\n formatDistance(distance) {\r\n if (distance < 1000) {\r\n return Math.round(distance) + \"m\";\r\n } else {\r\n return (distance / 1000).toFixed(2) + \"km\";\r\n }\r\n },\r\n\r\n // 格式化面积\r\n formatArea(area) {\r\n if (area < 1000000) {\r\n return Math.round(area) + \"m²\";\r\n } else {\r\n return (area / 1000000).toFixed(2) + \"km²\";\r\n }\r\n },\r\n\r\n // 启用绘制\r\n enable() {\r\n if (this.drawTool) {\r\n this.drawTool.enable();\r\n }\r\n },\r\n\r\n // 禁用绘制\r\n disable() {\r\n if (this.drawTool) {\r\n this.drawTool.disable();\r\n }\r\n },\r\n\r\n // 获取所有绘制的圆\r\n getCircles() {\r\n return this.circles;\r\n },\r\n\r\n // 清除所有圆\r\n clear() {\r\n this.circles = [];\r\n if (this.layer) {\r\n this.layer.clear();\r\n }\r\n this.$emit(\"clear\");\r\n },\r\n\r\n // 添加圆\r\n addCircle(center, radius) {\r\n const circle = new maptalks.Circle(center, radius, {\r\n symbol: this.symbol,\r\n });\r\n this.layer.addGeometry(circle);\r\n this.circles.push(circle);\r\n\r\n const area = this.calculateArea(circle);\r\n\r\n if (this.showLabels) {\r\n this.addCircleLabels(circle, radius, area);\r\n }\r\n\r\n this.$emit(\"add-circle\", { circle, center, radius, area });\r\n },\r\n\r\n // 移除圆\r\n removeCircle(index) {\r\n if (index >= 0 && index < this.circles.length) {\r\n const circle = this.circles[index];\r\n this.layer.removeGeometry(circle);\r\n this.circles.splice(index, 1);\r\n this.$emit(\"remove-circle\", { circle, index });\r\n }\r\n },\r\n\r\n // 设置样式\r\n setSymbol(symbol) {\r\n if (this.drawTool) {\r\n this.drawTool.setSymbol(symbol);\r\n }\r\n },\r\n\r\n // 获取绘制工具实例\r\n getDrawTool() {\r\n return this.drawTool;\r\n },\r\n\r\n // 获取图层实例\r\n getLayer() {\r\n return this.layer;\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-draw-circle {\r\n display: none;\r\n}\r\n</style>\r\n","import FyDrawCircleComponent from \"./index.vue\";\r\n\r\nconst FyDrawCircle = FyDrawCircleComponent as any;\r\n\r\nFyDrawCircle.install = function (Vue: any) {\r\n Vue.component(FyDrawCircle.name || \"FyDrawCircle\", FyDrawCircle);\r\n};\r\n\r\nexport default FyDrawCircle;\r\n","<template>\r\n <div class=\"fy-point\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\n\r\nexport default {\r\n name: \"FyPoint\",\r\n props: {\r\n // 位置坐标 [经度, 纬度]\r\n coordinates: {\r\n type: Array,\r\n required: true,\r\n },\r\n // 图层ID\r\n layerId: {\r\n type: String,\r\n default: \"point-layer\",\r\n },\r\n // 点样式\r\n symbol: {\r\n type: Object,\r\n default: () => ({\r\n markerType: \"ellipse\",\r\n markerFill: \"#ff0000\",\r\n markerFillOpacity: 1,\r\n markerLineColor: \"#ffffff\",\r\n markerLineWidth: 2,\r\n markerLineOpacity: 1,\r\n markerWidth: 24,\r\n markerHeight: 24,\r\n markerDx: 0,\r\n markerDy: 0,\r\n }),\r\n },\r\n // 透明度\r\n opacity: {\r\n type: Number,\r\n default: 1,\r\n },\r\n // 可见性\r\n visible: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 层级\r\n zIndex: {\r\n type: Number,\r\n default: 10,\r\n },\r\n // 自定义属性\r\n properties: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n },\r\n data() {\r\n return {\r\n layer: null,\r\n point: null,\r\n };\r\n },\r\n inject: {\r\n mapInstance: {\r\n default: null,\r\n },\r\n },\r\n mounted() {\r\n if (this.mapInstance) {\r\n this.initPoint();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.removePoint();\r\n },\r\n methods: {\r\n // 初始化点\r\n initPoint() {\r\n if (!this.mapInstance) return;\r\n\r\n // 创建或获取图层\r\n this.layer = this.mapInstance.getLayer(this.layerId);\r\n if (!this.layer) {\r\n this.layer = new maptalks.VectorLayer(this.layerId, {\r\n zIndex: this.zIndex,\r\n });\r\n this.mapInstance.addLayer(this.layer);\r\n }\r\n\r\n // 创建点\r\n const config = {\r\n symbol: this.symbol,\r\n visible: this.visible,\r\n opacity: this.opacity,\r\n properties: this.properties,\r\n zIndex: this.zIndex,\r\n };\r\n\r\n this.point = new maptalks.Marker(this.coordinates, config);\r\n\r\n // 绑定事件\r\n this.point.on(\"click\", this.handleClick);\r\n this.point.on(\"mouseover\", this.handleMouseover);\r\n this.point.on(\"mouseout\", this.handleMouseout);\r\n this.point.on(\"dblclick\", this.handleDblClick);\r\n this.point.on(\"mousedown\", this.handleMouseDown);\r\n this.point.on(\"mouseup\", this.handleMouseUp);\r\n\r\n this.layer.addGeometry(this.point);\r\n this.$emit(\"ready\", this.point);\r\n },\r\n\r\n // 移除点\r\n removePoint() {\r\n if (this.point && this.layer) {\r\n this.point.off(\"click\", this.handleClick);\r\n this.point.off(\"mouseover\", this.handleMouseover);\r\n this.point.off(\"mouseout\", this.handleMouseout);\r\n this.point.off(\"dblclick\", this.handleDblClick);\r\n this.point.off(\"mousedown\", this.handleMouseDown);\r\n this.point.off(\"mouseup\", this.handleMouseUp);\r\n\r\n this.layer.removeGeometry(this.point);\r\n this.point = null;\r\n }\r\n },\r\n\r\n // 事件处理\r\n handleClick(e) {\r\n this.$emit(\"click\", e);\r\n },\r\n\r\n handleMouseover(e) {\r\n this.$emit(\"mouseover\", e);\r\n },\r\n\r\n handleMouseout(e) {\r\n this.$emit(\"mouseout\", e);\r\n },\r\n\r\n handleDblClick(e) {\r\n this.$emit(\"dblclick\", e);\r\n },\r\n\r\n handleMouseDown(e) {\r\n this.$emit(\"mousedown\", e);\r\n },\r\n\r\n handleMouseUp(e) {\r\n this.$emit(\"mouseup\", e);\r\n },\r\n\r\n // 设置位置\r\n setCoordinates(coordinates) {\r\n if (this.point) {\r\n this.point.setCoordinates(coordinates);\r\n }\r\n },\r\n\r\n // 设置样式\r\n setSymbol(symbol) {\r\n if (this.point) {\r\n this.point.setSymbol(symbol);\r\n }\r\n },\r\n\r\n // 设置透明度\r\n setOpacity(opacity) {\r\n if (this.point) {\r\n this.point.setOpacity(opacity);\r\n }\r\n },\r\n\r\n // 显示\r\n show() {\r\n if (this.point) {\r\n this.point.show();\r\n }\r\n },\r\n\r\n // 隐藏\r\n hide() {\r\n if (this.point) {\r\n this.point.hide();\r\n }\r\n },\r\n\r\n // 动画到指定位置\r\n animateTo(coordinates, options = {}) {\r\n if (this.point) {\r\n this.point.animateTo(\r\n {\r\n coordinates,\r\n },\r\n options\r\n );\r\n }\r\n },\r\n\r\n // 获取坐标\r\n getCoordinates() {\r\n if (this.point) {\r\n return this.point.getCoordinates();\r\n }\r\n return null;\r\n },\r\n\r\n // 获取点实例\r\n getPoint() {\r\n return this.point;\r\n },\r\n\r\n // 获取图层实例\r\n getLayer() {\r\n return this.layer;\r\n },\r\n },\r\n watch: {\r\n coordinates(newVal) {\r\n this.setCoordinates(newVal);\r\n },\r\n symbol: {\r\n handler(newVal) {\r\n this.setSymbol(newVal);\r\n },\r\n deep: true,\r\n },\r\n opacity(newVal) {\r\n this.setOpacity(newVal);\r\n },\r\n visible(newVal) {\r\n if (newVal) {\r\n this.show();\r\n } else {\r\n this.hide();\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-point {\r\n display: none;\r\n}\r\n</style>\r\n","import FyPointComponent from \"./index.vue\";\r\n\r\nconst FyPoint = FyPointComponent as any;\r\n\r\nFyPoint.install = function (Vue: any) {\r\n Vue.component(FyPoint.name || \"FyPoint\", FyPoint);\r\n};\r\n\r\nexport default FyPoint;\r\n","<template>\r\n <div class=\"fy-linestring\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\n\r\nexport default {\r\n name: \"FyLineString\",\r\n props: {\r\n // 线的坐标数组 [[经度, 纬度], ...]\r\n coordinates: {\r\n type: Array,\r\n required: true,\r\n },\r\n // 图层ID\r\n layerId: {\r\n type: String,\r\n default: \"linestring-layer\",\r\n },\r\n // 线样式\r\n symbol: {\r\n type: Object,\r\n default: () => ({\r\n lineColor: \"#3388ff\",\r\n lineWidth: 3,\r\n lineOpacity: 0.8,\r\n lineDasharray: [],\r\n lineCap: \"butt\", // butt, round, square\r\n lineJoin: \"miter\", // mitre, round, bevel\r\n }),\r\n },\r\n // 透明度\r\n opacity: {\r\n type: Number,\r\n default: 1,\r\n },\r\n // 可见性\r\n visible: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 层级\r\n zIndex: {\r\n type: Number,\r\n default: 10,\r\n },\r\n // 是否平滑曲线\r\n smooth: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n // 自定义属性\r\n properties: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n },\r\n data() {\r\n return {\r\n layer: null,\r\n lineString: null,\r\n };\r\n },\r\n inject: {\r\n mapInstance: {\r\n default: null,\r\n },\r\n },\r\n mounted() {\r\n if (this.mapInstance) {\r\n this.initLineString();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.removeLineString();\r\n },\r\n methods: {\r\n // 初始化线\r\n initLineString() {\r\n if (!this.mapInstance) return;\r\n\r\n // 创建或获取图层\r\n this.layer = this.mapInstance.getLayer(this.layerId);\r\n if (!this.layer) {\r\n this.layer = new maptalks.VectorLayer(this.layerId, {\r\n zIndex: this.zIndex,\r\n });\r\n this.mapInstance.addLayer(this.layer);\r\n }\r\n\r\n // 创建线\r\n const config = {\r\n symbol: this.symbol,\r\n visible: this.visible,\r\n opacity: this.opacity,\r\n properties: this.properties,\r\n zIndex: this.zIndex,\r\n };\r\n\r\n this.lineString = new maptalks.LineString(this.coordinates, config);\r\n\r\n // 绑定事件\r\n this.lineString.on(\"click\", this.handleClick);\r\n this.lineString.on(\"mouseover\", this.handleMouseover);\r\n this.lineString.on(\"mouseout\", this.handleMouseout);\r\n this.lineString.on(\"dblclick\", this.handleDblClick);\r\n this.lineString.on(\"mousedown\", this.handleMouseDown);\r\n this.lineString.on(\"mouseup\", this.handleMouseUp);\r\n\r\n this.layer.addGeometry(this.lineString);\r\n this.$emit(\"ready\", this.lineString);\r\n },\r\n\r\n // 移除线\r\n removeLineString() {\r\n if (this.lineString && this.layer) {\r\n this.lineString.off(\"click\", this.handleClick);\r\n this.lineString.off(\"mouseover\", this.handleMouseover);\r\n this.lineString.off(\"mouseout\", this.handleMouseout);\r\n this.lineString.off(\"dblclick\", this.handleDblClick);\r\n this.lineString.off(\"mousedown\", this.handleMouseDown);\r\n this.lineString.off(\"mouseup\", this.handleMouseUp);\r\n\r\n this.layer.removeGeometry(this.lineString);\r\n this.lineString = null;\r\n }\r\n },\r\n\r\n // 事件处理\r\n handleClick(e) {\r\n this.$emit(\"click\", e);\r\n },\r\n\r\n handleMouseover(e) {\r\n this.$emit(\"mouseover\", e);\r\n },\r\n\r\n handleMouseout(e) {\r\n this.$emit(\"mouseout\", e);\r\n },\r\n\r\n handleDblClick(e) {\r\n this.$emit(\"dblclick\", e);\r\n },\r\n\r\n handleMouseDown(e) {\r\n this.$emit(\"mousedown\", e);\r\n },\r\n\r\n handleMouseUp(e) {\r\n this.$emit(\"mouseup\", e);\r\n },\r\n\r\n // 设置坐标\r\n setCoordinates(coordinates) {\r\n if (this.lineString) {\r\n this.lineString.setCoordinates(coordinates);\r\n }\r\n },\r\n\r\n // 添加坐标点\r\n appendCoordinates(coordinates) {\r\n if (this.lineString) {\r\n this.lineString.appendCoordinates(coordinates);\r\n }\r\n },\r\n\r\n // 移除坐标点\r\n removeCoordinates(index, count = 1) {\r\n if (this.lineString) {\r\n this.lineString.removeCoordinates(index, count);\r\n }\r\n },\r\n\r\n // 插入坐标点\r\n insertCoordinates(index, coordinates) {\r\n if (this.lineString) {\r\n this.lineString.insertCoordinates(index, coordinates);\r\n }\r\n },\r\n\r\n // 设置样式\r\n setSymbol(symbol) {\r\n if (this.lineString) {\r\n this.lineString.setSymbol(symbol);\r\n }\r\n },\r\n\r\n // 设置透明度\r\n setOpacity(opacity) {\r\n if (this.lineString) {\r\n this.lineString.setOpacity(opacity);\r\n }\r\n },\r\n\r\n // 显示\r\n show() {\r\n if (this.lineString) {\r\n this.lineString.show();\r\n }\r\n },\r\n\r\n // 隐藏\r\n hide() {\r\n if (this.lineString) {\r\n this.lineString.hide();\r\n }\r\n },\r\n\r\n // 获取长度\r\n getLength() {\r\n if (this.lineString) {\r\n return this.lineString.getLength();\r\n }\r\n return 0;\r\n },\r\n\r\n // 获取坐标\r\n getCoordinates() {\r\n if (this.lineString) {\r\n return this.lineString.getCoordinates();\r\n }\r\n return [];\r\n },\r\n\r\n // 获取中心点\r\n getCenter() {\r\n if (this.lineString) {\r\n return this.lineString.getCenter();\r\n }\r\n return null;\r\n },\r\n\r\n // 获取范围\r\n getExtent() {\r\n if (this.lineString) {\r\n return this.lineString.getExtent();\r\n }\r\n return null;\r\n },\r\n\r\n // 获取线实例\r\n getLineString() {\r\n return this.lineString;\r\n },\r\n\r\n // 获取图层实例\r\n getLayer() {\r\n return this.layer;\r\n },\r\n },\r\n watch: {\r\n coordinates(newVal) {\r\n this.setCoordinates(newVal);\r\n },\r\n symbol: {\r\n handler(newVal) {\r\n this.setSymbol(newVal);\r\n },\r\n deep: true,\r\n },\r\n opacity(newVal) {\r\n this.setOpacity(newVal);\r\n },\r\n visible(newVal) {\r\n if (newVal) {\r\n this.show();\r\n } else {\r\n this.hide();\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-linestring {\r\n display: none;\r\n}\r\n</style>\r\n","import FyLineStringComponent from \"./index.vue\";\r\n\r\nconst FyLineString = FyLineStringComponent as any;\r\n\r\nFyLineString.install = function (Vue: any) {\r\n Vue.component(FyLineString.name || \"FyLineString\", FyLineString);\r\n};\r\n\r\nexport default FyLineString;\r\n","<template>\r\n <div class=\"fy-polygon\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\n\r\nexport default {\r\n name: \"FyPolygon\",\r\n props: {\r\n // 多边形的坐标数组 [[[经度, 纬度], ...], ...]\r\n coordinates: {\r\n type: Array,\r\n required: true,\r\n },\r\n // 图层ID\r\n layerId: {\r\n type: String,\r\n default: \"polygon-layer\",\r\n },\r\n // 多边形样式\r\n symbol: {\r\n type: Object,\r\n default: () => ({\r\n lineColor: \"#3388ff\",\r\n lineWidth: 2,\r\n lineOpacity: 0.8,\r\n polygonFill: \"#3388ff\",\r\n polygonOpacity: 0.3,\r\n lineDasharray: [],\r\n }),\r\n },\r\n // 透明度\r\n opacity: {\r\n type: Number,\r\n default: 1,\r\n },\r\n // 可见性\r\n visible: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 层级\r\n zIndex: {\r\n type: Number,\r\n default: 10,\r\n },\r\n // 自定义属性\r\n properties: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n },\r\n data() {\r\n return {\r\n layer: null,\r\n polygon: null,\r\n };\r\n },\r\n inject: {\r\n mapInstance: {\r\n default: null,\r\n },\r\n },\r\n mounted() {\r\n if (this.mapInstance) {\r\n this.initPolygon();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.removePolygon();\r\n },\r\n methods: {\r\n // 初始化多边形\r\n initPolygon() {\r\n if (!this.mapInstance) return;\r\n\r\n // 创建或获取图层\r\n this.layer = this.mapInstance.getLayer(this.layerId);\r\n if (!this.layer) {\r\n this.layer = new maptalks.VectorLayer(this.layerId, {\r\n zIndex: this.zIndex,\r\n });\r\n this.mapInstance.addLayer(this.layer);\r\n }\r\n\r\n // 创建多边形\r\n const config = {\r\n symbol: this.symbol,\r\n visible: this.visible,\r\n opacity: this.opacity,\r\n properties: this.properties,\r\n zIndex: this.zIndex,\r\n };\r\n\r\n this.polygon = new maptalks.Polygon(this.coordinates, config);\r\n\r\n // 绑定事件\r\n this.polygon.on(\"click\", this.handleClick);\r\n this.polygon.on(\"mouseover\", this.handleMouseover);\r\n this.polygon.on(\"mouseout\", this.handleMouseout);\r\n this.polygon.on(\"dblclick\", this.handleDblClick);\r\n this.polygon.on(\"mousedown\", this.handleMouseDown);\r\n this.polygon.on(\"mouseup\", this.handleMouseUp);\r\n\r\n this.layer.addGeometry(this.polygon);\r\n this.$emit(\"ready\", this.polygon);\r\n },\r\n\r\n // 移除多边形\r\n removePolygon() {\r\n if (this.polygon && this.layer) {\r\n this.polygon.off(\"click\", this.handleClick);\r\n this.polygon.off(\"mouseover\", this.handleMouseover);\r\n this.polygon.off(\"mouseout\", this.handleMouseout);\r\n this.polygon.off(\"dblclick\", this.handleDblClick);\r\n this.polygon.off(\"mousedown\", this.handleMouseDown);\r\n this.polygon.off(\"mouseup\", this.handleMouseUp);\r\n\r\n this.layer.removeGeometry(this.polygon);\r\n this.polygon = null;\r\n }\r\n },\r\n\r\n // 事件处理\r\n handleClick(e) {\r\n this.$emit(\"click\", e);\r\n },\r\n\r\n handleMouseover(e) {\r\n this.$emit(\"mouseover\", e);\r\n },\r\n\r\n handleMouseout(e) {\r\n this.$emit(\"mouseout\", e);\r\n },\r\n\r\n handleDblClick(e) {\r\n this.$emit(\"dblclick\", e);\r\n },\r\n\r\n handleMouseDown(e) {\r\n this.$emit(\"mousedown\", e);\r\n },\r\n\r\n handleMouseUp(e) {\r\n this.$emit(\"mouseup\", e);\r\n },\r\n\r\n // 设置坐标\r\n setCoordinates(coordinates) {\r\n if (this.polygon) {\r\n this.polygon.setCoordinates(coordinates);\r\n }\r\n },\r\n\r\n // 设置样式\r\n setSymbol(symbol) {\r\n if (this.polygon) {\r\n this.polygon.setSymbol(symbol);\r\n }\r\n },\r\n\r\n // 设置透明度\r\n setOpacity(opacity) {\r\n if (this.polygon) {\r\n this.polygon.setOpacity(opacity);\r\n }\r\n },\r\n\r\n // 显示\r\n show() {\r\n if (this.polygon) {\r\n this.polygon.show();\r\n }\r\n },\r\n\r\n // 隐藏\r\n hide() {\r\n if (this.polygon) {\r\n this.polygon.hide();\r\n }\r\n },\r\n\r\n // 获取面积\r\n getArea() {\r\n if (this.polygon) {\r\n return this.polygon.getArea();\r\n }\r\n return 0;\r\n },\r\n\r\n // 获取坐标\r\n getCoordinates() {\r\n if (this.polygon) {\r\n return this.polygon.getCoordinates();\r\n }\r\n return [];\r\n },\r\n\r\n // 获取中心点\r\n getCenter() {\r\n if (this.polygon) {\r\n return this.polygon.getCenter();\r\n }\r\n return null;\r\n },\r\n\r\n // 获取范围\r\n getExtent() {\r\n if (this.polygon) {\r\n return this.polygon.getExtent();\r\n }\r\n return null;\r\n },\r\n\r\n // 获取外轮廓\r\n getShell() {\r\n if (this.polygon) {\r\n return this.polygon.getShell();\r\n }\r\n return [];\r\n },\r\n\r\n // 获取内孔\r\n getHoles() {\r\n if (this.polygon) {\r\n return this.polygon.getHoles();\r\n }\r\n return [];\r\n },\r\n\r\n // 获取多边形实例\r\n getPolygon() {\r\n return this.polygon;\r\n },\r\n\r\n // 获取图层实例\r\n getLayer() {\r\n return this.layer;\r\n },\r\n },\r\n watch: {\r\n coordinates(newVal) {\r\n this.setCoordinates(newVal);\r\n },\r\n symbol: {\r\n handler(newVal) {\r\n this.setSymbol(newVal);\r\n },\r\n deep: true,\r\n },\r\n opacity(newVal) {\r\n this.setOpacity(newVal);\r\n },\r\n visible(newVal) {\r\n if (newVal) {\r\n this.show();\r\n } else {\r\n this.hide();\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-polygon {\r\n display: none;\r\n}\r\n</style>\r\n","import FyPolygonComponent from \"./index.vue\";\r\n\r\nconst FyPolygon = FyPolygonComponent as any;\r\n\r\nFyPolygon.install = function (Vue: any) {\r\n Vue.component(FyPolygon.name || \"FyPolygon\", FyPolygon);\r\n};\r\n\r\nexport default FyPolygon;\r\n","<template>\r\n <div class=\"fy-circle\"></div>\r\n</template>\r\n\r\n<script>\r\nimport * as maptalks from \"maptalks\";\r\n\r\nexport default {\r\n name: \"FyCircle\",\r\n props: {\r\n // 圆心坐标 [经度, 纬度]\r\n coordinates: {\r\n type: Array,\r\n required: true,\r\n },\r\n // 半径(米)\r\n radius: {\r\n type: Number,\r\n required: true,\r\n },\r\n // 图层ID\r\n layerId: {\r\n type: String,\r\n default: \"circle-layer\",\r\n },\r\n // 圆样式\r\n symbol: {\r\n type: Object,\r\n default: () => ({\r\n lineColor: \"#ff0000\",\r\n lineWidth: 2,\r\n lineOpacity: 0.8,\r\n polygonFill: \"#ff0000\",\r\n polygonOpacity: 0.3,\r\n }),\r\n },\r\n // 透明度\r\n opacity: {\r\n type: Number,\r\n default: 1,\r\n },\r\n // 可见性\r\n visible: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n // 层级\r\n zIndex: {\r\n type: Number,\r\n default: 10,\r\n },\r\n // 圆弧数量(控制圆的平滑度)\r\n numberOfPoints: {\r\n type: Number,\r\n default: 60,\r\n },\r\n // 自定义属性\r\n properties: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n },\r\n data() {\r\n return {\r\n layer: null,\r\n circle: null,\r\n };\r\n },\r\n inject: {\r\n mapInstance: {\r\n default: null,\r\n },\r\n },\r\n mounted() {\r\n if (this.mapInstance) {\r\n this.initCircle();\r\n }\r\n },\r\n beforeDestroy() {\r\n this.removeCircle();\r\n },\r\n methods: {\r\n // 初始化圆\r\n initCircle() {\r\n if (!this.mapInstance) return;\r\n\r\n // 创建或获取图层\r\n this.layer = this.mapInstance.getLayer(this.layerId);\r\n if (!this.layer) {\r\n this.layer = new maptalks.VectorLayer(this.layerId, {\r\n zIndex: this.zIndex,\r\n });\r\n this.mapInstance.addLayer(this.layer);\r\n }\r\n\r\n // 创建圆\r\n const config = {\r\n symbol: this.symbol,\r\n visible: this.visible,\r\n opacity: this.opacity,\r\n properties: this.properties,\r\n zIndex: this.zIndex,\r\n numberOfPoints: this.numberOfPoints,\r\n };\r\n\r\n this.circle = new maptalks.Circle(this.coordinates, this.radius, config);\r\n\r\n // 绑定事件\r\n this.circle.on(\"click\", this.handleClick);\r\n this.circle.on(\"mouseover\", this.handleMouseover);\r\n this.circle.on(\"mouseout\", this.handleMouseout);\r\n this.circle.on(\"dblclick\", this.handleDblClick);\r\n this.circle.on(\"mousedown\", this.handleMouseDown);\r\n this.circle.on(\"mouseup\", this.handleMouseUp);\r\n\r\n this.layer.addGeometry(this.circle);\r\n this.$emit(\"ready\", this.circle);\r\n },\r\n\r\n // 移除圆\r\n removeCircle() {\r\n if (this.circle && this.layer) {\r\n this.circle.off(\"click\", this.handleClick);\r\n this.circle.off(\"mouseover\", this.handleMouseover);\r\n this.circle.off(\"mouseout\", this.handleMouseout);\r\n this.circle.off(\"dblclick\", this.handleDblClick);\r\n this.circle.off(\"mousedown\", this.handleMouseDown);\r\n this.circle.off(\"mouseup\", this.handleMouseUp);\r\n\r\n this.layer.removeGeometry(this.circle);\r\n this.circle = null;\r\n }\r\n },\r\n\r\n // 事件处理\r\n handleClick(e) {\r\n this.$emit(\"click\", e);\r\n },\r\n\r\n handleMouseover(e) {\r\n this.$emit(\"mouseover\", e);\r\n },\r\n\r\n handleMouseout(e) {\r\n this.$emit(\"mouseout\", e);\r\n },\r\n\r\n handleDblClick(e) {\r\n this.$emit(\"dblclick\", e);\r\n },\r\n\r\n handleMouseDown(e) {\r\n this.$emit(\"mousedown\", e);\r\n },\r\n\r\n handleMouseUp(e) {\r\n this.$emit(\"mouseup\", e);\r\n },\r\n\r\n // 设置圆心坐标\r\n setCoordinates(coordinates) {\r\n if (this.circle) {\r\n this.circle.setCoordinates(coordinates);\r\n }\r\n },\r\n\r\n // 设置半径\r\n setRadius(radius) {\r\n if (this.circle) {\r\n this.circle.setRadius(radius);\r\n }\r\n },\r\n\r\n // 设置样式\r\n setSymbol(symbol) {\r\n if (this.circle) {\r\n this.circle.setSymbol(symbol);\r\n }\r\n },\r\n\r\n // 设置透明度\r\n setOpacity(opacity) {\r\n if (this.circle) {\r\n this.circle.setOpacity(opacity);\r\n }\r\n },\r\n\r\n // 显示\r\n show() {\r\n if (this.circle) {\r\n this.circle.show();\r\n }\r\n },\r\n\r\n // 隐藏\r\n hide() {\r\n if (this.circle) {\r\n this.circle.hide();\r\n }\r\n },\r\n\r\n // 获取半径\r\n getRadius() {\r\n if (this.circle) {\r\n return this.circle.getRadius();\r\n }\r\n return 0;\r\n },\r\n\r\n // 获取面积\r\n getArea() {\r\n if (this.circle) {\r\n return this.circle.getArea();\r\n }\r\n return 0;\r\n },\r\n\r\n // 获取周长\r\n getLength() {\r\n if (this.circle) {\r\n const radius = this.circle.getRadius();\r\n return 2 * Math.PI * radius;\r\n }\r\n return 0;\r\n },\r\n\r\n // 获取坐标\r\n getCoordinates() {\r\n if (this.circle) {\r\n return this.circle.getCoordinates();\r\n }\r\n return null;\r\n },\r\n\r\n // 获取中心点\r\n getCenter() {\r\n if (this.circle) {\r\n return this.circle.getCenter();\r\n }\r\n return null;\r\n },\r\n\r\n // 获取范围\r\n getExtent() {\r\n if (this.circle) {\r\n return this.circle.getExtent();\r\n }\r\n return null;\r\n },\r\n\r\n // 获取边界\r\n getBounds() {\r\n if (this.circle) {\r\n return this.circle.getBounds();\r\n }\r\n return null;\r\n },\r\n\r\n // 获取圆实例\r\n getCircle() {\r\n return this.circle;\r\n },\r\n\r\n // 获取图层实例\r\n getLayer() {\r\n return this.layer;\r\n },\r\n },\r\n watch: {\r\n coordinates(newVal) {\r\n this.setCoordinates(newVal);\r\n },\r\n radius(newVal) {\r\n this.setRadius(newVal);\r\n },\r\n symbol: {\r\n handler(newVal) {\r\n this.setSymbol(newVal);\r\n },\r\n deep: true,\r\n },\r\n opacity(newVal) {\r\n this.setOpacity(newVal);\r\n },\r\n visible(newVal) {\r\n if (newVal) {\r\n this.show();\r\n } else {\r\n this.hide();\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.fy-circle {\r\n display: none;\r\n}\r\n</style>\r\n","import FyCircleComponent from \"./index.vue\";\r\n\r\nconst FyCircle = FyCircleComponent as any;\r\n\r\nFyCircle.install = function (Vue: any) {\r\n Vue.component(FyCircle.name || \"FyCircle\", FyCircle);\r\n};\r\n\r\nexport default FyCircle;\r\n","import MyButton from \"./Button\";\r\nimport FyMap from \"./FyMap\";\r\nimport FyTileLayer from \"./FyTileLayer\";\r\nimport FyVectorLayer from \"./FyVectorLayer\";\r\nimport FyMarker from \"./FyMarker\";\r\nimport FyLabel from \"./FyLabel\";\r\nimport FyPopup from \"./FyPopup\";\r\nimport FyClusterMarker from \"./FyClusterMarker\";\r\nimport FyDrawTool from \"./FyDrawTool\";\r\nimport FyDrawPoint from \"./FyDrawPoint\";\r\nimport FyDrawLine from \"./FyDrawLine\";\r\nimport FyDrawPolygon from \"./FyDrawPolygon\";\r\nimport FyDrawCircle from \"./FyDrawCircle\";\r\nimport FyPoint from \"./FyPoint\";\r\nimport FyLineString from \"./FyLineString\";\r\nimport FyPolygon from \"./FyPolygon\";\r\nimport FyCircle from \"./FyCircle\";\r\n\r\n// 组件列表\r\nconst components: any[] = [\r\n MyButton,\r\n FyMap,\r\n FyTileLayer,\r\n FyVectorLayer,\r\n FyMarker,\r\n FyLabel,\r\n FyPopup,\r\n FyClusterMarker,\r\n FyDrawTool,\r\n FyDrawPoint,\r\n FyDrawLine,\r\n FyDrawPolygon,\r\n FyDrawCircle,\r\n FyPoint,\r\n FyLineString,\r\n FyPolygon,\r\n FyCircle,\r\n];\r\n\r\n// 统一导出\r\nexport {\r\n MyButton,\r\n FyMap,\r\n FyTileLayer,\r\n FyVectorLayer,\r\n FyMarker,\r\n FyLabel,\r\n FyPopup,\r\n FyClusterMarker,\r\n FyDrawTool,\r\n FyDrawPoint,\r\n FyDrawLine,\r\n FyDrawPolygon,\r\n FyDrawCircle,\r\n FyPoint,\r\n FyLineString,\r\n FyPolygon,\r\n FyCircle,\r\n};\r\n\r\n// 批量注册install方法\r\nexport default components;\r\n","// 引入全部组件\r\nimport components from \"./components\";\r\n// // 全局样式\r\nimport \"./style.css\";\r\n\r\n// 统一导出\r\n// 支持单独按需引入组件\r\nexport * from \"./components\";\r\n\r\n// 批量注册install方法\r\nexport default {\r\n install(Vue: any) {\r\n components.forEach(comp => {\r\n Vue.component(comp.name || comp.__name, comp);\r\n });\r\n },\r\n};\r\n"],"names":["_sfc_main","maptalks","index"],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@songcf/fy-map",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "this is components",
|
|
5
|
+
"main": "dist/fy-map.umd.js",
|
|
6
|
+
"module": "dist/fy-map.es.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"typesVersions": {
|
|
9
|
+
"*": {
|
|
10
|
+
"*": [
|
|
11
|
+
"./dist/types/*"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"package.json"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"dev": "vite dev",
|
|
21
|
+
"watch": "vite build --watch",
|
|
22
|
+
"build": "vite build",
|
|
23
|
+
"type:build": "vue-tsc",
|
|
24
|
+
"format": "prettier --write \"src/**/*.{js,ts,vue}\"",
|
|
25
|
+
"format:check": "prettier --check \"src/**/*.{js,ts,vue}\""
|
|
26
|
+
},
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"maptalks": "1.12.1",
|
|
29
|
+
"vue": "2.7.16"
|
|
30
|
+
},
|
|
31
|
+
"keywords": [],
|
|
32
|
+
"author": "",
|
|
33
|
+
"license": "ISC",
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@typescript/typescript6": "6.0.2",
|
|
36
|
+
"@vitejs/plugin-vue2": "2.3.4",
|
|
37
|
+
"prettier": "3.9.5",
|
|
38
|
+
"vite": "7.3.6",
|
|
39
|
+
"vite-plugin-dts": "2.3.0",
|
|
40
|
+
"vue-tsc": "^1.8.27"
|
|
41
|
+
},
|
|
42
|
+
"overrides": {
|
|
43
|
+
"@microsoft/api-extractor": "7.34.4"
|
|
44
|
+
},
|
|
45
|
+
"publishConfig": {
|
|
46
|
+
"access": "public"
|
|
47
|
+
}
|
|
48
|
+
}
|