123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- import config from "@/api/config.js";
- import * as KMap from "@/utils/ol-map/KMap";
- import * as util from "@/common/ol_common.js";
- import {
- newAreaFeature,
- newAreaPoint,
- newPoint,
- newPolymerFeature,
- } from "../../zhgl/map";
- import { base_img_url2 } from "../../../api/config";
- import Stroke from "ol/style/Stroke";
- import Style from "ol/style/Style";
- import Photo from "ol-ext/style/Photo";
- /**
- * @description 农事分析详情地图
- */
- class analysisMap {
- getRadius(zoom) {
- if (zoom >= 20) {
- return 70;
- }
- if (zoom >= 19) {
- return 30;
- }
- if (zoom >= 18) {
- return 15;
- }
- if (zoom >= 17) {
- return 10;
- }
- return 5;
- }
- constructor() {
- let that = this;
- let vectorStyle = new KMap.VectorStyle();
- this.areaLayer = new KMap.VectorLayer("areaLayer", 999, {
- style: (f) =>
- vectorStyle.getPolygonStyle(f.get("color") + "10", f.get("color"), 3),
- });
- this.subAreaLayer = new KMap.VectorLayer("subAreaLayer", 999, {
- style: (f) => vectorStyle.getPolygonStyle("#fba50410", "#fba504", 1),
- });
- this.areaPointLayer = new KMap.VectorLayer("areaPointLayer", 1000, {
- style: (f) =>
- vectorStyle.getPointTextStyle(
- f.get("name"),
- "#120046",
- "#FFFFFF",
- 2,
- 30
- ),
- });
- this.treeLayer = new KMap.VectorLayer("treeLayer", 999);
- this.imgStyleCache = {};
- this.imgTreeLayer = new KMap.VectorLayer("imgTreeLayer", 999, {
- minZoom: 15,
- maxZoom: 22,
- style: (feature) => {
- let zoom = that.kmap.view.getZoom();
- let r = that.getRadius(zoom);
- let img = feature.get("img");
- let k = img + r;
- if (img && img != "") {
- let style = that.imgStyleCache[k];
- if (!style) {
- style = new Style({
- image: new Photo({
- src: base_img_url2 + img,
- radius: r,
- shadow: 0,
- crop: true,
- kind: "circle",
- onload: function () {
- that.imgTreeLayer.layer.changed();
- },
- displacement: [0, 30 + 15],
- stroke: new Stroke({
- width: 3,
- color: "#fdfcfc",
- }),
- }),
- });
- that.imgStyleCache[k] = style;
- }
- return style;
- } else {
- return vectorStyle.getPointSimpleStyle(
- 10,
- "#00000000",
- "#00000000",
- 1
- );
- }
- },
- });
- this.imgTreeLayer.layer.setVisible(false);
- this.subAreaLayer.layer.setVisible(true);
- }
- initMap(location, target) {
- let level = 18;
- let coordinate = util.wktCastGeom(location).getFirstCoordinate();
- this.kmap = new KMap.Map(
- target,
- level,
- coordinate[0],
- coordinate[1],
- null,
- 10,
- 22
- );
- let xyz = config.base_img_url + "map/lby/{z}/{x}/{y}.png";
- this.kmap.addXYZLayer(xyz, { minZoom: 15, maxZoom: 22 });
- let xyz2 = config.base_img_url3 + "map/lby/{z}/{x}/{y}.png";
- this.kmap.addXYZLayer(xyz2, { minZoom: 12, maxZoom: 22 });
- this.kmap.addLayer(this.areaLayer.layer);
- this.kmap.addLayer(this.subAreaLayer.layer);
- this.kmap.addLayer(this.treeLayer.layer);
- this.kmap.addLayer(this.areaPointLayer.layer);
- this.kmap.addLayer(this.imgTreeLayer.layer);
- }
- initArea(organId) {
- let that = this;
- this.areaLayer.refresh();
- VE_API.area.list({ organId }).then(({ data, code }) => {
- for (let item of data) {
- that.areaLayer.addFeature(newAreaFeature(item));
- that.areaPointLayer.addFeature(newAreaPoint(item));
- }
- });
- }
- initSubArea(organId) {
- let that = this;
- this.subAreaLayer.refresh();
- VE_API.sub_area.list({ organId }).then(({ data, code }) => {
- for (let item of data) {
- that.subAreaLayer.addFeature(newPolymerFeature(item));
- }
- });
- }
- initTree(organId) {
- let that = this;
- this.treeLayer.refresh();
- this.imgTreeLayer.refresh();
- VE_API.tree
- .treeListAndGrowData({ organId, areaId: -1 })
- .then(({ data, code }) => {
- for (let item of data) {
- let point = newPoint(item);
- that.treeLayer.addFeature(point);
- that.imgTreeLayer.addFeature(point);
- }
- });
- }
- addSingleSelect(listener) {
- this.treeLayer.addSingleSelect(function (e) {
- if (e.selected.length > 0) {
- listener(e.selected[0]);
- }
- }, this.kmap.map);
- }
- setTreeStyle(style) {
- this.treeLayer.layer.setStyle(style);
- this.treeLayer.layer.changed();
- }
- fit(geomOrExtent) {
- this.kmap.fit(geomOrExtent);
- }
- openCloseImg() {
- this.imgTreeLayer.layer.setVisible(!this.imgTreeLayer.layer.getVisible());
- }
- openClosePolymer() {
- this.subAreaLayer.layer.setVisible(!this.subAreaLayer.layer.getVisible());
- }
- }
- export default analysisMap;
|