openlayers判断点击的经纬度坐标是否在图层中

8 篇文章 0 订阅

点击地图或者鼠标在地图上面滑动时所经过的坐标是否在否个图层上

map.on('pointermove', function (e) {
            isLocationArr = new Array();
                // 转换为web merctor投影
                var destinationPro = "EPSG:3857";
                // 地理原始投影
                var sourcePro = 'EPSG:4326';
                var featureCoords = ol.proj.transform(e.coordinate, destinationPro, sourcePro);//这里是把获取到的e.coordinate的值(鼠标滑动时在地图上产生的数值)转换为经纬度。
                locaLongitude = featureCoords[0];//经度
                localLatitude = featureCoords[1];//维度
                var _thisLayer = map.getLayerByName("localArea");//获取名为localArea的图层
                var features = _thisLayer.get('source').getFeatures();
                for (var j = 0; j < features.length; j++) {
                    var polygonGeometry = features[j].getGeometry();
                    if (polygonGeometry.intersectsCoordinate(e.coordinate)) {
                        isLocationArr.push("1");//如果坐标在图层上的时候则插入"1"
                    } else {
                        isLocationArr.push("0");//否则插入"0"
                    }
                }

 

OpenLayers 3 ,可以使用 `ol.source.OSM` 的 `getTile()` 方法获取指定经纬度的瓦片信息,进而判断是否在海洋上。 具体实现步骤如下: 1. 创建一个 OpenLayers 3 的地图对象,并设置地图的和缩放级别。 ```javascript var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ], view: new ol.View({ center: ol.proj.fromLonLat([0, 0]), zoom: 4 }) }); ``` 2. 定义一个函数,用于判断给定经纬度是否在海洋上。 ```javascript function isPointInOcean(lon, lat) { // 将经纬度转换为 OpenLayers 3 坐标系 var coord = ol.proj.fromLonLat([lon, lat]); // 获取包含该经纬度的瓦片信息 var tileInfo = map.getSource().getTile(14, 7937, -10175); // 判断该瓦片是否为海洋瓦片 if (tileInfo && tileInfo.getImage().src.indexOf('/0/0/0.png') !== -1) { return true; } else { return false; } } ``` 在上面的代码,`getTile()` 方法的参数分别为瓦片的缩放级别、行号和列号。这里以缩放级别为 14、行号为 7937、列号为 -10175 的瓦片为例,获取包含给定经纬度的瓦片信息。 3. 调用判断函数,判断给定经纬度是否在海洋上。 ```javascript var lon = 120.152; var lat = 30.278; var isOcean = isPointInOcean(lon, lat); console.log(isOcean); // true 或 false ``` 在上面的代码,给定经纬度为 `(120.152, 30.278)`,调用 `isPointInOcean()` 函数判断是否在海洋上。最终结果为 `true` 或 `false`,表示该是否在海洋上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值