Implementation code of using select to select elements in Vue+Openlayer

Implementation code of using select to select elements in Vue+Openlayer

Effect picture:

Implementation code:

<template>
  <div id="map" ref="map" style="width: 100vw; height: 100vh"></div>
</template>
 
<script>
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: "Alarm 1",
            },
            geometry:
              type: "Point",
              coordinates: [91.48879670091165, 37.83814884701121],
            },
          },
          {
            type: "Feature",
            properties:
              title: "Alarm 2",
            },
            geometry:
              type: "Point",
              coordinates: [99.19515576149941, 26.713646654711134],
            },
          },
          {
            type: "Feature",
            properties:
              title: "Alarm 3",
            },
            geometry:
              type: "Point",
              coordinates: [123.74363825288785, 44.363694825734726],
            },
          },
        ],
      },
      select: {},
    };
  },
  mounted() {
    this.initMap();
  },
  methods: {
    // Initialize the map 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, //Click to select});
      this.map.addInteraction(this.select);
      this.select.on("select", (e) => {
        let coordinate = e.mapBrowserEvent.coordinate; //Get the selected coordinates let properties = e.selected[0].getProperties(); //Get all properties of the current feature });
 
      // Set the style of the mouse over the vector element this.map.on("pointermove", (e) => {
        const isHover = this.map.hasFeatureAtPixel(e.pixel);
        this.map.getTargetElement().style.cursor = isHover ? "pointer" : "";
      });
    },
  },
};
</script>

This is the end of this article about the implementation code of using select elements in Vue+Openlayer. For more relevant Vue Openlayer selection elements content, please search 123WORDPRESS.COM's previous articles or continue to browse the following related articles. I hope everyone will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Vue+openlayers draws provincial and municipal boundaries
  • Openlayers draws administrative divisions in the Vue project
  • vue-openlayers realizes the map coordinates pop-up box effect
  • Vue+Openlayers custom track animation
  • Vue uses openlayers to implement moving point animation

<<:  Detailed explanation of three ways to connect Docker containers to each other

>>:  Detailed explanation of MySQL replication principles and practical applications

Recommend

WeChat applet wxs date and time processing implementation example

Table of contents 1. Timestamp to date 2. Convert...

WeChat applet calculator example

WeChat applet calculator example, for your refere...

JS implements the sample code of decimal conversion to hexadecimal

Preface When we write code, we occasionally encou...

How to make a tar file of wsl through Docker

I've been playing with the remote development...

Mysql case analysis of transaction isolation level

Table of contents 1. Theory SERIALIZABLE REPEATAB...

JS ES new feature of variable decoupling assignment

Table of contents 1. Decoupled assignment of arra...

HTML&CSS&JS compatibility tree (IE, Firefox, Chrome)

What is a tree in web design? Simply put, clicking...

Vue-CLI multi-page directory packaging steps record

Page directory structure Note that you need to mo...

Detailed explanation of Vue router routing

Table of contents 1. Basic use 2. Several points ...

Trash-Cli: Command-line Recycle Bin Tool on Linux

I believe everyone is familiar with the trashcan,...

mysql uses stored procedures to implement tree node acquisition method

As shown in the figure: Table Data For such a tre...

Pure js to achieve the effect of carousel

This article shares the specific code of js to ac...

How to encapsulate the table component of Vue Element

When encapsulating Vue components, I will still u...