arcgis js 4.24 点击测距 完整html代码
时间: 2024-10-18 15:21:12 浏览: 25
在 ArcGIS JavaScript API 4.24 中,要创建一个点击测距的功能,你需要结合 HTML、CSS 和 JavaScript 代码。以下是一个简单的示例,演示如何在地图上添加一个点击事件,计算点击点到鼠标位置的距离:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ArcGIS JS 4.24 点击测距</title>
<link rel="stylesheet" href="https://js.arcgis.com/4.24/esri/css/main.css">
<script src="https://js.arcgis.com/4.24/"></script>
</head>
<body>
<div id="mapView" style="width: 600px; height: 400px;"></div>
<script>
// 加载ArcGIS API for JavaScript
esriConfig.defaults.io.proxyUrl = "your-proxy-url"; // 如果有代理服务器,请替换此行
// 初始化地图视图
var mapView = new esri.View({
container: "mapView",
center: [0, 0], // 地理坐标中心,默认世界中心
zoom: 2, // 初始缩放级别
map: new esri.Map({
basemap: "streets" // 使用基础地图层(可以选择其他)
})
});
// 添加鼠标点击事件监听器
mapView.on("click", function (event) {
// 获取点击点的经纬度
var graphic = event.graphic;
if (graphic) {
var latLon = graphic.geometry.getPoint();
// 获取鼠标当前位置
var mousePos = map.toScreen(event.screenPoint);
// 计算距离
var distance = haversine(latLon.x, latLon.y, mousePos.x, mousePos.y);
console.log("Distance from click point to mouse: " + distance + " meters");
// 在这里添加显示距离的UI元素或更新现有元素
// ...
// 另外一种可能的计算方法(使用地图服务距离工具):
// var geometryService = new esri GeometryService();
// geometryService.distance({
// source: latLon,
// destination: mousePos,
// }).then(function(response) { ... });
}
});
// Haversine公式用于计算两点之间的大圆距离
function haversine(lat1, lon1, lat2, lon2) {
const earthRadius = 6371; // 单位为公里
const dLat = (lat2 - lat1) * Math.PI / 180;
const dLon = (lon2 - lon1) * Math.PI / 180;
const a =
Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return earthRadius * c; // 返回距离结果,单位为公里,可以根据需要转换
}
</script>
</body>
</html>
```
在这个示例中,我们首先加载了 ArcGIS JavaScript API,然后初始化了一个地图视图并添加了点击事件。每次地图被点击时,都会计算点击点到鼠标位置的距离,并在控制台打印出来。
记得替换 `esriConfig.defaults.io.proxyUrl` 的值为你自己的网络环境中的代理设置。如果你需要在网页上显示距离,你可以根据需要修改 UI 部分。
阅读全文