Javascript 打开的第5层包含XY不工作。检查坐标是否在多边形中
我试图检查一个点是否在多边形内。这是我的职责:Javascript 打开的第5层包含XY不工作。检查坐标是否在多边形中,javascript,openlayers-5,Javascript,Openlayers 5,我试图检查一个点是否在多边形内。这是我的职责: import { containsXY } from 'ol/extent'; isInside(polygon, longitude, latitude) { polygon = JSON.parse(polygon); // Polygon is originally = JSON.stringify([[long1, lat1],[long2, lat2], ...]) let poli = new Polygon(pol
import { containsXY } from 'ol/extent';
isInside(polygon, longitude, latitude) {
polygon = JSON.parse(polygon); // Polygon is originally = JSON.stringify([[long1, lat1],[long2, lat2], ...])
let poli = new Polygon(polygon);
// Try 1: Not working
console.log("Result --> ", containsXY(poli, latitude, longitude));
console.log("Result --> ", containsXY(poli, longitude, latitude));
console.log("Result --> ", containsXY(poli.getExtent(), latitude, longitude));
console.log("Result --> ", containsXY(poli.getExtent(), longitude, latitude));
// Try 2: Not working
let coordinate = this.to3857([longitude, latitude]);
console.log("Result --> ", containsXY(poli, coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli, coordinate[1], coordinate[0]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[1], coordinate[0]));
// Try 3: Not working
coordinate = this.to4326([longitude, latitude]);
console.log("Result --> ", containsXY(poli, coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli, coordinate[1], coordinate[0]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[1], coordinate[0]));
}
function isInside(polygon, longitude, latitude) {
let coordinate = ol.proj.fromLonLat([longitude, latitude]);
console.log("Result (in bounds) --> ", ol.extent.containsXY(polygon.getExtent(), coordinate[0], coordinate[1]));
}
function isInside(polygon, longitude, latitude) {
let coordinate = ol.proj.fromLonLat([longitude, latitude]);
console.log("Result (in polygon) --> ", polygon.intersectsCoordinate(coordinate));
}
所有结果均为false
。如何检查坐标是否在多边形中?OpenLayers API对我来说没有任何效果
提前感谢确定
点
几何体是否在多边形的边界/范围内使用:
ol.extent.containsXY(polygon.getExtent(), coordinate[0], coordinate[1])
更新的isInside
功能:
import { containsXY } from 'ol/extent';
isInside(polygon, longitude, latitude) {
polygon = JSON.parse(polygon); // Polygon is originally = JSON.stringify([[long1, lat1],[long2, lat2], ...])
let poli = new Polygon(polygon);
// Try 1: Not working
console.log("Result --> ", containsXY(poli, latitude, longitude));
console.log("Result --> ", containsXY(poli, longitude, latitude));
console.log("Result --> ", containsXY(poli.getExtent(), latitude, longitude));
console.log("Result --> ", containsXY(poli.getExtent(), longitude, latitude));
// Try 2: Not working
let coordinate = this.to3857([longitude, latitude]);
console.log("Result --> ", containsXY(poli, coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli, coordinate[1], coordinate[0]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[1], coordinate[0]));
// Try 3: Not working
coordinate = this.to4326([longitude, latitude]);
console.log("Result --> ", containsXY(poli, coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli, coordinate[1], coordinate[0]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[1], coordinate[0]));
}
function isInside(polygon, longitude, latitude) {
let coordinate = ol.proj.fromLonLat([longitude, latitude]);
console.log("Result (in bounds) --> ", ol.extent.containsXY(polygon.getExtent(), coordinate[0], coordinate[1]));
}
function isInside(polygon, longitude, latitude) {
let coordinate = ol.proj.fromLonLat([longitude, latitude]);
console.log("Result (in polygon) --> ", polygon.intersectsCoordinate(coordinate));
}
要确定点
几何体是否位于多边形
的内部(与多边形
的边界/范围内不同),请使用(来自相关问题:):
更新的isInside
功能:
import { containsXY } from 'ol/extent';
isInside(polygon, longitude, latitude) {
polygon = JSON.parse(polygon); // Polygon is originally = JSON.stringify([[long1, lat1],[long2, lat2], ...])
let poli = new Polygon(polygon);
// Try 1: Not working
console.log("Result --> ", containsXY(poli, latitude, longitude));
console.log("Result --> ", containsXY(poli, longitude, latitude));
console.log("Result --> ", containsXY(poli.getExtent(), latitude, longitude));
console.log("Result --> ", containsXY(poli.getExtent(), longitude, latitude));
// Try 2: Not working
let coordinate = this.to3857([longitude, latitude]);
console.log("Result --> ", containsXY(poli, coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli, coordinate[1], coordinate[0]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[1], coordinate[0]));
// Try 3: Not working
coordinate = this.to4326([longitude, latitude]);
console.log("Result --> ", containsXY(poli, coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli, coordinate[1], coordinate[0]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[1], coordinate[0]));
}
function isInside(polygon, longitude, latitude) {
let coordinate = ol.proj.fromLonLat([longitude, latitude]);
console.log("Result (in bounds) --> ", ol.extent.containsXY(polygon.getExtent(), coordinate[0], coordinate[1]));
}
function isInside(polygon, longitude, latitude) {
let coordinate = ol.proj.fromLonLat([longitude, latitude]);
console.log("Result (in polygon) --> ", polygon.intersectsCoordinate(coordinate));
}
代码片段:
函数isInside(多边形、经度、纬度、文本){
设坐标=LONLAT([经度,纬度])的ol.proj;
console.log(“用于“+text+”(边界内)-->”,ol.extent.containsXY(polygon.getExtent(),坐标[0],坐标[1])的结果);
console.log(“多边形中的“+text+”-->“、多边形相交坐标(坐标))的结果);
}
window.onload=函数(){
伊辛赛德(多边形,106.8060388,-6.5971469,“黑色标记”);
伊辛赛德(多边形,105.998544,-7.0553,“蓝色标记”);
}
var map=新ol.map({
图层:[
新的ol.layer.Tile({//TileLayer({
来源:new ol.source.OSM()
})
],
目标:“地图”,
视图:新ol.view({
中心:Lonlat的其他项目([106.044189,-6.840865]),
缩放:7
})
});
//修改自https://stackoverflow.com/questions/27210362/open-layers-3-how-to-draw-a-polygon-programmatically
var jsonData=[{
lat:-5.896423,
液化天然气:106.044189
},
{
lat:-6.840865,
液化天然气:105.192749
},
//{lat:-6.147714,lng:106.972534},
{
lat:-6.813594,
液化天然气:106.016724
},
{
纬度:-6.988102,
液化天然气:106.516601
},
{
lat:-7.36416,
液化天然气:106.406738
},
{
lat:-7.511228,
液化天然气:107.450439
},
{
lat:-6.093095,
液化天然气:106.989014
}
]
//环必须闭合,这是它的最后一个坐标
//应与其第一个坐标相同。
var环=[];
对于(var i=0;i
html,
身体{
身高:100%;
宽度:100%;
填充:0px;
边际:0px;
}
.地图{
身高:100%;
宽度:100%;
}
要确定点
几何体是否在多边形的边界/范围内,请使用:
ol.extent.containsXY(polygon.getExtent(), coordinate[0], coordinate[1])
更新的isInside
功能:
import { containsXY } from 'ol/extent';
isInside(polygon, longitude, latitude) {
polygon = JSON.parse(polygon); // Polygon is originally = JSON.stringify([[long1, lat1],[long2, lat2], ...])
let poli = new Polygon(polygon);
// Try 1: Not working
console.log("Result --> ", containsXY(poli, latitude, longitude));
console.log("Result --> ", containsXY(poli, longitude, latitude));
console.log("Result --> ", containsXY(poli.getExtent(), latitude, longitude));
console.log("Result --> ", containsXY(poli.getExtent(), longitude, latitude));
// Try 2: Not working
let coordinate = this.to3857([longitude, latitude]);
console.log("Result --> ", containsXY(poli, coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli, coordinate[1], coordinate[0]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[1], coordinate[0]));
// Try 3: Not working
coordinate = this.to4326([longitude, latitude]);
console.log("Result --> ", containsXY(poli, coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli, coordinate[1], coordinate[0]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[1], coordinate[0]));
}
function isInside(polygon, longitude, latitude) {
let coordinate = ol.proj.fromLonLat([longitude, latitude]);
console.log("Result (in bounds) --> ", ol.extent.containsXY(polygon.getExtent(), coordinate[0], coordinate[1]));
}
function isInside(polygon, longitude, latitude) {
let coordinate = ol.proj.fromLonLat([longitude, latitude]);
console.log("Result (in polygon) --> ", polygon.intersectsCoordinate(coordinate));
}
要确定点
几何体是否位于多边形
的内部(与多边形
的边界/范围内不同),请使用(来自相关问题:):
更新的isInside
功能:
import { containsXY } from 'ol/extent';
isInside(polygon, longitude, latitude) {
polygon = JSON.parse(polygon); // Polygon is originally = JSON.stringify([[long1, lat1],[long2, lat2], ...])
let poli = new Polygon(polygon);
// Try 1: Not working
console.log("Result --> ", containsXY(poli, latitude, longitude));
console.log("Result --> ", containsXY(poli, longitude, latitude));
console.log("Result --> ", containsXY(poli.getExtent(), latitude, longitude));
console.log("Result --> ", containsXY(poli.getExtent(), longitude, latitude));
// Try 2: Not working
let coordinate = this.to3857([longitude, latitude]);
console.log("Result --> ", containsXY(poli, coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli, coordinate[1], coordinate[0]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[1], coordinate[0]));
// Try 3: Not working
coordinate = this.to4326([longitude, latitude]);
console.log("Result --> ", containsXY(poli, coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli, coordinate[1], coordinate[0]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[0], coordinate[1]));
console.log("Result --> ", containsXY(poli.getExtent(), coordinate[1], coordinate[0]));
}
function isInside(polygon, longitude, latitude) {
let coordinate = ol.proj.fromLonLat([longitude, latitude]);
console.log("Result (in bounds) --> ", ol.extent.containsXY(polygon.getExtent(), coordinate[0], coordinate[1]));
}
function isInside(polygon, longitude, latitude) {
let coordinate = ol.proj.fromLonLat([longitude, latitude]);
console.log("Result (in polygon) --> ", polygon.intersectsCoordinate(coordinate));
}
代码片段:
函数isInside(多边形、经度、纬度、文本){
设坐标=LONLAT([经度,纬度])的ol.proj;
console.log(“用于“+text+”(边界内)-->”,ol.extent.containsXY(polygon.getExtent(),坐标[0],坐标[1])的结果);
console.log(“多边形中的“+text+”-->“、多边形相交坐标(坐标))的结果);
}
window.onload=函数(){
伊辛赛德(多边形,106.8060388,-6.5971469,“黑色标记”);
伊辛赛德(多边形,105.998544,-7.0553,“蓝色标记”);
}
var map=新ol.map({
图层:[
新的ol.layer.Tile({//TileLayer({
来源:new ol.source.OSM()
})
],
目标:“地图”,
视图:新ol.view({
中心:Lonlat的其他项目([106.044189,-6.840865]),
缩放:7
})
});
//修改自https://stackoverflow.com/questions/27210362/open-layers-3-how-to-draw-a-polygon-programmatically
var jsonData=[{
lat:-5.896423,
液化天然气:106.044189
},
{
lat:-6.840865,
液化天然气:105.192749
},
//{lat:-6.147714,lng:106.972534},