frontend/src/views/Home.vue

71 lines
1.4 KiB
Vue
Raw Normal View History

2023-07-15 15:03:08 +07:00
<template>
<searchbar/>
2023-07-15 17:52:21 +07:00
<ol-map
:loadTilesWhileAnimating="true"
:loadTilesWhileInteracting="true"
style=
2023-08-02 01:51:43 +07:00
"
height: 100%;
width: 100%;
2023-08-02 01:34:46 +07:00
position: fixed;
"
@click="handleMapClick"
2023-07-15 17:52:21 +07:00
>
<ol-view
ref="view"
:center="center"
:rotation="rotation"
:zoom="zoom"
:projection="projection"
/>
<ol-tile-layer>
<ol-source-osm />
</ol-tile-layer>
</ol-map>
2023-07-15 15:03:08 +07:00
</template>
2023-07-15 17:52:21 +07:00
2023-07-15 15:03:08 +07:00
<script setup>
import searchbar from '@/components/searchbar.vue';
2023-07-15 17:52:21 +07:00
import { ref } from "vue";
import axios from "axios";
2023-07-15 17:52:21 +07:00
const center = ref([100.538611, 13.764722]);
2023-07-15 17:52:21 +07:00
const projection = ref("EPSG:4326");
const zoom = ref(19);
2023-07-15 17:52:21 +07:00
const rotation = ref(0);
const handleMapClick = async event => {
const clickedCoordinate = event.coordinate;
console.log("Clicked coordinate:", clickedCoordinate);
try {
const response = await axios.get(
`https://nominatim.openstreetmap.org/reverse?format=json&lat=${clickedCoordinate[1]}&lon=${clickedCoordinate[0]}`
);
console.log("API response:", response.data);
const nearestStructureData = response.data;
console.log("Nearest structure:", nearestStructureData);
} catch (error) {
console.error("Error fetching reverse geocoding data:", error);
}
};
2023-08-02 01:34:46 +07:00
</script>
<style>
.ol-zoom{
top: 40px;
}
2023-08-02 01:51:43 +07:00
.ol-attribution ul{
padding:1px .5em;
margin-bottom: 8em;
}
2023-08-02 01:34:46 +07:00
</style>