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

How to implement on-demand import and global import in element-plus

Table of contents Import on demand: Global Import...

MySQL 5.7.20 compressed version download and installation simple tutorial

1. Download address: http://dev.mysql.com/downloa...

Comprehensive understanding of Node event loop

Table of contents Node Event Loop Event loop diag...

Summary of MySQL date and time functions (MySQL 5.X)

1. MySQL gets the current date and time function ...

Steps to deploy Docker project in IDEA

Now most projects have begun to be deployed on Do...

JavaScript to implement simple tab bar switching content bar

This article shares the specific code of JavaScri...

Detailed explanation of keepAlive use cases in Vue

In development, it is often necessary to cache th...

JavaScript implements mouse drag to adjust div size

This article shares the specific code of JavaScri...

Introduction to /etc/my.cnf parameters in MySQL 5.7

Below are some common parameters of /etc/my.cnf o...

In-depth explanation of iterators in ECMAScript

Table of contents Preface Earlier iterations Iter...

52 SQL statements to teach you performance optimization

1. To optimize the query, try to avoid full table...

The pitfalls encountered when learning Vue.js

Table of contents Class void pointing ES6 Arrow F...

How to modify the root password of mysql in docker

The first step is to create a mysql container doc...