ArcGisMap

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2023-11-20 16:32:13 +07:00
parent dcc426268d
commit b98076ac6c
5 changed files with 143 additions and 1 deletions

119
src/components/AscMaps.vue Normal file
View file

@ -0,0 +1,119 @@
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import { loadModules } from 'esri-loader'
// import http from '@/plugins/http'
// import config from '@/app.config'
async function initMap() {
const [esriConfig, Map, MapView, Locate, Graphic, Locator] = await (
loadModules as any
)([
'esri/config',
'esri/Map',
'esri/views/MapView',
'esri/widgets/Locate',
'esri/Graphic',
'esri/tasks/Locator',
'esri/rest/locator',
])
esriConfig.apiKey =
'AAPK2385005bb90a4410ae22d55f6f735877JmnPjYMAxBHQFYLGaXAbZc39AdiWjFKpt-mbsaP50ceZwVH9FdT7WMZ80VanLLWs' // Replace with your actual API key
//typeMap
const map = new Map({
basemap: 'osm-streets-relief',
})
// // Check if the container element exists
const view = new MapView({
map: map,
center: [0, 0],
zoom: 13, // scale: 72223.819286
container: 'viewDiv',
constraints: {
snapToZoom: false,
},
})
//
const locateWidget = new Locate({
view: view,
useHeadingEnabled: false,
})
view.ui.add(locateWidget, 'top-left')
navigator.geolocation.getCurrentPosition(
(position) => {
const [longitude, latitude] = [
position.coords.longitude,
position.coords.latitude,
]
const locator = new Locator(
'https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/reverseGeocode/'
)
findNearestPlaceFromAPI(position, locator)
// Create a graphic for the current location
const point = {
type: 'point',
longitude: longitude,
latitude: latitude,
}
const marker = new Graphic({
geometry: point,
symbol: {
type: 'simple-marker',
color: [226, 119, 59],
outline: {
color: [255, 255, 255],
width: 2,
},
},
})
// Add the graphic to the view
view.graphics.removeAll() //
view.graphics.add(marker)
// Center the view on the current location
view.goTo({
center: [longitude, latitude],
zoom: 18,
})
},
(error) => {
console.error('Error getting current location:', error)
}
)
}
async function findNearestPlaceFromAPI(currentPosition: any, locator: any) {
console.log(currentPosition, locator)
//
const result = await locator.addressToLocations({
location: {
x: currentPosition.coords.longitude,
y: currentPosition.coords.latitude,
},
distance: 5000, // 5 ()
category: 'POI', //
})
console.log('test', result)
}
onMounted(async () => {
// Load the ArcGIS API modules
await initMap()
})
</script>
<template>
<div>
<div id="viewDiv" style="height: 50vh"></div>
</div>
</template>
<style scoped></style>