-
Notifications
You must be signed in to change notification settings - Fork 139
/
Copy pathGeoLocationDemo.vue
54 lines (49 loc) · 1.37 KB
/
GeoLocationDemo.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<template>
<ol-map
:loadTilesWhileAnimating="true"
:loadTilesWhileInteracting="true"
style="height: 400px"
ref="map"
>
<ol-view
ref="view"
:center="center"
:zoom="zoom"
:projection="projection"
/>
<ol-tile-layer>
<ol-source-osm />
</ol-tile-layer>
<ol-geolocation :projection="projection" @change:position="geoLocChange">
<template>
<ol-vector-layer :zIndex="2">
<ol-source-vector>
<ol-feature ref="positionFeature">
<ol-geom-point :coordinates="position"></ol-geom-point>
<ol-style>
<ol-style-icon :src="hereIcon" :scale="0.1"></ol-style-icon>
</ol-style>
</ol-feature>
</ol-source-vector>
</ol-vector-layer>
</template>
</ol-geolocation>
</ol-map>
</template>
<script setup lang="ts">
import hereIcon from "@/assets/here.png";
import { ref } from "vue";
import type { View } from "ol";
import type { ObjectEvent } from "ol/Object";
const center = ref([40, 40]);
const projection = ref("EPSG:4326");
const zoom = ref(12);
const view = ref<View>();
const map = ref(null);
const position = ref([]);
const geoLocChange = (event: ObjectEvent) => {
console.log("AAAAA", event);
position.value = event.target.getPosition();
view.value?.setCenter(event.target?.getPosition());
};
</script>