<template>
<div style="width: 100%;height: 600px;">
<div id="viewDiv" style="height: 600px;"></div>
</div>
</template>
<script>
import { loadModules } from 'esri-loader';
export default {
name:"test",
mounted() {
loadModules(["esri/Map", "esri/views/MapView", "esri/tasks/Locator"])
.then(([Map, MapView , Locator]) => {
var locatorTask = new Locator({
url: "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer"
});
// 创建地图
var map = new Map({
basemap: "streets-navigation-vector"
});
// 创建地图2D视图
var view = new MapView({
container: "viewDiv",
map: map,
center: [-71.6899, 43.7598],
zoom: 12
});
view.popup.autoOpenEnabled = false;
view.on("click", function(event) {
var lat = Math.round(event.mapPoint.latitude * 1000) / 1000;
var lon = Math.round(event.mapPoint.longitude * 1000) / 1000;
// 设置弹出层类容
view.popup.open({
title: "Reverse geocode: [" + lon + ", " + lat + "]",
location: event.mapPoint
});
});
var params = {
location: event.mapPoint
};
locatorTask
.locationToAddress(params)
.then(function(response) {
view.popup.content = response.address;
})
.catch(function(error) {
view.popup.content = "未知地名";
});
});
},
}
</script>
<style>
</style>
定位弹出层需要用到 Locator 它可以将地址转换为坐标,将坐标转换为地址,