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},