html如何知道区域坐标,判断是否在某区域范围内.html

Leaflet1

integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=="

crossorigin=""/>

crossorigin="">

body {

margin: 0px;

padding: 0px;

}

/**

* 单独设置mapid为100%不显示,可能float坍塌

*/

html,

body,

#mapDiv {

height: 100%;

width: 100%;

}

// 使用算法

//地图地址

var url = 'https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw';

var attr = ' Map data © OpenStreetMap contributors, © CartoDB';

var map = L.map('mapDiv').setView([26, 101], 5);

//图层

L.tileLayer(url, {

maxZoom: 18,

attribution: attr,

id: 'mapbox.streets'

}).addTo(map);

//标记点

L.marker([24, 100]).addTo(map)

.bindPopup("Hello world!
我是一个冒泡窗").openPopup();

L.circle([24, 100], 500, {

color: 'red',

fillColor: '#f03',

fillOpacity: 0.5

}).addTo(map).bindPopup("我是一个圆");

L.polygon([{

lat: 26,

lng: 101

}, {

lat: 24,

lng: 120

}, {

lat: 35,

lng: 110

}]).addTo(map);

var popup = L.popup();

function points() {

var points = [{

lat: 26,

lng: 101

}, {

lat: 24,

lng: 120

}, {

lat: 35,

lng: 110

}]

return points;

}

function onMapClick(e) {

popup

.setLatLng(e.latlng)

.setContent("你刚点击的坐标是 " + e.latlng.toString())

.openOn(map);

/*var hh = IsPtInPoly(119.44336,25.20494, points());*/

var hh = IsPtInPoly(e.latlng.lng, e.latlng.lat, points());

alert(hh);

}

map.on('click', onMapClick);

function IsPtInPoly(ALon, ALat, APoints) {

var iSum = 0,

iCount;

var dLon1, dLon2, dLat1, dLat2, dLon;

if (APoints.length < 3) return false;

iCount = APoints.length;

for (var i = 0; i < iCount; i++) {

if (i == iCount - 1) {

dLon1 = APoints[i].lng;

dLat1 = APoints[i].lat;

dLon2 = APoints[0].lng;

dLat2 = APoints[0].lat;

} else {

dLon1 = APoints[i].lng;

dLat1 = APoints[i].lat;

dLon2 = APoints[i + 1].lng;

dLat2 = APoints[i + 1].lat;

}

//以下语句判断A点是否在边的两端点的水平平行线之间,在则可能有交点,开始判断交点是否在左射线上

if (((ALat >= dLat1) && (ALat < dLat2)) || ((ALat >= dLat2) && (ALat < dLat1))) {

if (Math.abs(dLat1 - dLat2) > 0) {

//得到 A点向左射线与边的交点的x坐标:

dLon = dLon1 - ((dLon1 - dLon2) * (dLat1 - ALat)) / (dLat1 - dLat2);

if (dLon < ALon)

iSum++;

}

}

}

if (iSum % 2 != 0)

return true;

return false;

}

//————————————————

//版权声明:本文为CSDN博主「neil89」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

//原文链接:https://blog.csdn.net/neil89/article/details/50240481

一键复制

编辑

Web IDE

原始数据

按行查看

历史

在Spring Boot中判断GIS坐标点是否在某地理区域内,你可以使用Java的Geometry库来实现。下面是一个简单的示例代码: 首先,你需要引入相关的依赖: ```xml <dependency> <groupId>org.locationtech.jts</groupId> <artifactId>jts-core</artifactId> <version>1.18.0</version> </dependency> ``` 然后,你可以创建一个方法来判断坐标点是否在指定的地理区域内: ```java import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.GeometryFactory; import org.locationtech.jts.geom.Point; import org.locationtech.jts.geom.Polygon; public class GisUtils { public static boolean isPointInPolygon(double lat, double lon, double[] polygonCoordinates) { GeometryFactory geometryFactory = new GeometryFactory(); // 创建坐标点 Coordinate coordinate = new Coordinate(lon, lat); Point point = geometryFactory.createPoint(coordinate); // 创建多边形 Coordinate[] coordinates = new Coordinate[polygonCoordinates.length / 2]; for (int i = 0; i < polygonCoordinates.length; i += 2) { coordinates[i / 2] = new Coordinate(polygonCoordinates[i + 1], polygonCoordinates[i]); } Polygon polygon = geometryFactory.createPolygon(coordinates); // 判断点是否在多边形内 return polygon.contains(point); } } ``` 在上面的代码中,`isPointInPolygon`方法接受一个纬度(lat)、经度(lon)以及地理区域坐标数组(polygonCoordinates)。它会创建一个坐标点和一个多边形,并使用JTS库的`contains`方法来判断点是否在多边形内部。 你可以在Spring Boot应用中使用该方法来判断坐标点是否在指定的地理区域内。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值