当前位置: 首页 > news >正文

openlayers4判断一个点是否在闭合图形的内部

在opanlayers4官方API已经有一个方法:intersectsCoordinate(coordinate),用于判断一个点coordinate是否在闭合图形的内部,返回值为布尔类型的,true表示点在多边形的内部,false表示点不在多边形的内部。
首先获得将要判断的几何元素信息,接下来获取坐标点的位置,然后调用API中的方法intersectsCoordinate进行判断,有两种处理方法:

第一种:
详细代码如下所示:(下面的代码仅支持鼠标点击获取地图上的要素,获取鼠标点的位置)

var geo = feature.getGeometry();//feture是几何元素
var isIn = geo.intersectsCoordinate(coordinate);
if(isIn) {
    console.log("该mark点在当前几何元素里。");
}

首先获得将要判断的几何元素信息(用getGeometry()方法取得),接下来获取坐标点的位置,然后调用API中的方法intersectsCoordinate进行判断,如果coordinate在多边形的内部,输出”该mark点在当前几何元素里。”

第二种
详细代码如下所示:(给出一个坐标点可以判断在不在多边形的内部,在的话,在哪个多边形的内部)

var feature1 = imageLayer1.getSource().getFeatures();//获取图层要素信息
var feature2 = imageLayer2.getSource().getFeatures();
var feature3 = imageLayer3.getSource().getFeatures();
var feature4 = imageLayer4.getSource().getFeatures();
var feature5 = imageLayer5.getSource().getFeatures();
array_feature.push(feature1);
array_feature.push(feature2);
array_feature.push(feature3);
array_feature.push(feature4);
array_feature.push(feature5);
for(var i=0;i<array_feature.length;i++){//循环遍历每个图层要素,分别调用intersectsCoordinate判断是否在多边形内
    if(array_feature[i][0].O.geometry.intersectsCoordinate(lonlat_arr)){
        console.log(array_feature[i][0].O.GNQ);
        /*下面是以弹框形式出现坐标点属于第几功能区*/
        result_popuptitle.innerHTML = "功能区信息";
        result_content.innerHTML = "<table class='popuptable' cellspacing='0'>" +
            "<tbody>" +
            "<tr>" +
            "<td width='260px' align='center'>功能区类型</td>" +
            "<td width='150px' align='center'>" + array_feature[i][0].O.GNQ + "类</td>" +
            "</tr>" +
            "</tbody>" +
            "</table>";
            $(".ol-popup").css("display", "block");
        result_overlay.setPosition(lonlat_arr);
    }
}

从上面的代码可以看出,我们只要通过鼠标交互的方式才可以获取地图上的要素(feature),但是如果单纯给出一个坐标点,直接根据坐标点判断这个点属于第几类功能区的话,就不能通过第一种方法来获取了,只能分别获取每个图层里面的要素信息,然后循环遍历,返回为true的图层信息,这样就可以实现了

相关文章:

  • 常见电脑屏幕分辨率
  • css3更改默认滚动条样式-webkit-scrollbar
  • GIS开发-天地图按照地名搜索定位
  • css3中的伪类before和after常见用法
  • openlayers4获取一个图形的边界
  • Vue.js小例子--tab选项卡切换
  • 使用openlayers3加载png格式图片
  • openalyers为自定义覆盖物overlay添加点击事件
  • absolute和float的区别
  • float定位对内联元素和块状元素的影响
  • javascript实现拖拽弹框高度,可调节弹框大小
  • vue中的template标签
  • SVN文件夹图标显示不正常的解决办法
  • 集中式开发和分布式开发的区别
  • SVN与GIT的优缺点对比
  • [deviceone开发]-do_Webview的基本示例
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • CSS中外联样式表代表的含义
  • ECMAScript6(0):ES6简明参考手册
  • Flannel解读
  • Linux快速复制或删除大量小文件
  • mysql_config not found
  • Python学习笔记 字符串拼接
  • Redis学习笔记 - pipline(流水线、管道)
  • VuePress 静态网站生成
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 聊聊flink的BlobWriter
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 排序算法之--选择排序
  • 前端面试题总结
  • 嵌入式文件系统
  • 学习笔记TF060:图像语音结合,看图说话
  • Android开发者必备:推荐一款助力开发的开源APP
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • #在 README.md 中生成项目目录结构
  • ()、[]、{}、(())、[[]]命令替换
  • (06)金属布线——为半导体注入生命的连接
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (九)One-Wire总线-DS18B20
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)Thymeleaf用法——Thymeleaf简介
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .Mobi域名介绍
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .Net6使用WebSocket与前端进行通信
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .net项目IIS、VS 附加进程调试
  • .net专家(高海东的专栏)
  • [16/N]论得趣
  • [2019/05/17]解决springboot测试List接口时JSON传参异常