阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Vue+Openlayer中使用select选择要素

72次阅读
没有评论

共计 1807 个字符,预计需要花费 5 分钟才能阅读完成。

导读 本文通过实例代码给大家介绍 Vue+Openlayer 中使用 select 选择要素,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

效果图:
Vue+Openlayer 中使用 select 选择要素Vue+Openlayer 中使用 select 选择要素

实现代码:

&lttemplate&gt
  &ltdiv id="map" ref="map" style="width: 100vw; height: 100vh"&gt&lt/div&gt
&lt/template&gt
  
&ltscript&gt
import "ol/ol.css";
import {Map, View} from "ol";
import {OSM, Vector as VectorSource} from "ol/source";
import {Vector as VectorLayer, Tile as TileLayer} from "ol/layer";
import GeoJSON from "ol/format/GeoJSON";
  
import Select from "ol/interaction/Select";
import {altKeyOnly, click, pointerMove} from "ol/events/condition";
  
export default {
  name: "gif",
  data() {
    return {map: {},
      layer: {},
      geojsonData: {
        type: "FeatureCollection",
        features: [
          {
            type: "Feature",
            properties: {title: "警报 1",},
            geometry: {
              type: "Point",
              coordinates: [91.48879670091165, 37.83814884701121],
            },
          },
          {
            type: "Feature",
            properties: {title: "警报 2",},
            geometry: {
              type: "Point",
              coordinates: [99.19515576149941, 26.713646654711134],
            },
          },
          {
            type: "Feature",
            properties: {title: "警报 3",},
            geometry: {
              type: "Point",
              coordinates: [123.74363825288785, 44.363694825734726],
            },
          },
        ],
      },
      select: {},};
  },
  mounted() {this.initMap();
  },
  methods: {
    // 初始化地图
    initMap() {
      this.layer = new VectorLayer({
        source: new VectorSource({features: new GeoJSON().readFeatures(this.geojsonData),
        }),
      });
      this.map = new Map({
        target: "map",
        layers: [
          new TileLayer({source: new OSM(),
          }),
          this.layer,
        ],
        view: new View({
          projection: "EPSG:4326",
          center: [104.912777, 34.730746],
          zoom: 4.5,
        }),
      });
  
      this.select = new Select({condition: click, // 单击选择});
      this.map.addInteraction(this.select);
      this.select.on("select", (e) => {
        let coordinate = e.mapBrowserEvent.coordinate; // 获取选择的坐标
        let properties = e.selected[0].getProperties(); // 获取当前要素的所有属性});
  
      // 设置鼠标划过矢量要素的样式
      this.map.on("pointermove", (e) => {const isHover = this.map.hasFeatureAtPixel(e.pixel);
        this.map.getTargetElement().style.cursor = isHover ? "pointer" : "";});
    },
  },
};
&lt/script&gt

到此这篇关于 Vue+Openlayer 中使用 select 选择要素的实现代码的文章就介绍到这了

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计1807字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中