iClient for Leaflet 空间查询,圆形空间查询_程序猿小郑的博客-程序员宅基地

技术标签: GIS  Leaflet  vue.js  

代码片段如下:

function query(_center, _radius) {
    var point_new = L.CRS.EPSG3857.project(_center);
    var dx = point_new.x, dy = point_new.y;
    var radius = _radius;
    //点集
    var parts = [];
    //计算圆的边缘所有点
    for (var i = 0; i < 360; i++) {
        var radians = (i + 1) * Math.PI / 180;
        var circlePoint = [Math.cos(radians) * radius + dx, Math.sin(radians) * radius + dy];
        parts[i] = L.CRS.EPSG3857.unproject(L.point(circlePoint));
    }
    var polygon = L.polygon(parts, { color: 'red' });
    polygon.addTo(_this.map);
    var geometry = L.Util.transform(polygon, L.CRS.EPSG4326, L.CRS.EPSG3857);
    var geometryParam = new SuperMap.GetFeaturesByGeometryParameters({
        datasetNames: ["数据源名称:数据集名称"],
        geometry: geometry,
        spatialQueryMode: "INTERSECT"
    });
    var url = '数据服务地址', resultLayer;
    L.supermap
        .featureService(url)
        .getFeaturesByGeometry(geometryParam, function (serviceResult) {
            var iconSize = [48 * _this.rem, 48 * _this.rem], iconAnchor = [24 * _this.rem, 24 * _this.rem]
            var icon_0= L.icon({ iconUrl: "icon_0.png", iconSize, iconAnchor })
                , icon_1= L.icon({ iconUrl: "icon_1.png", iconSize, iconAnchor })
                , icon_2= L.icon({ iconUrl: "icon_2.png", iconSize, iconAnchor });
            resultLayer = L.geoJSON(serviceResult.result.features, {
                pointToLayer: function (feature, latlng) {
                    var _latlng = [feature.properties.T_LATITUDE, feature.properties.T_LONGITUDE];
                    var _type = Number(feature.properties.T_TYPE == null ? -1 : feature.properties.T_TYPE);
                    switch (_type) {
                        case 0: return L.marker(_latlng, { icon: icon_0});
                        case 1: return L.marker(_latlng, { icon: icon_1});
                        case 2: return L.marker(_latlng, { icon: icon_2});
                        default: return L.marker(_latlng);
                    }
                }
            }).addTo(_this.map);

        });

 

需求说明:
先要在地图上绘制一个正圆,得到圆形内所有的点要素。
问题描述:
       正常来说通过不管是通过leafletiClient for Leafletleaflet draw 中哪一个来绘制这个圆,得到的结果始终只有一个中心点(圆心)坐标位置。这里我地图服务用的是iServer,查询使用超图的L.supermap.featureService(url).getFeaturesByGeometry(params, callback, resultFormat)方法进行空间查询,然而超图的空间查询只支持以下几种几何查询。显然是没有可以直接用的圆形几何对象。

 问题解决:

       看起来并没有那么糟糕,这里还有一个中心点可以用。那么想想看圆形也是多边形,刚好这里有一个L.Polygon的几何对象,它只要一组点集就可以构成一个圆形多边形。那么我们可以通过这个点和半径来构成无数个点,将这些个点集组装起来,那么就得到了一个圆形多边形了。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34492913/article/details/107267457

智能推荐

【正点原子MP157连载】第十三章 外部中断实验-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南_iser icer ispr icpr ip_正点原子的博客-程序员宅基地

1)实验平台:正点原子STM32MP157开发板2)购买链接:https://item.taobao.com/item.htm?&id=6292707218013)全套实验源码+手册+视频下载地址:http://www.openedv.com/thread-318813-1-1.html4)正点原子官方B站:https://space.bilibili.com/3946208905)正点原子STM32MP157技术交流群:691905614第十三章 外部中断实验在前面几章的学习中,我们_iser icer ispr icpr ip

PTA7-7 田忌赛马_砖瓦程序猿的博客-程序员宅基地

首先回顾一下田忌赛马这个古老的故事: 齐使者如梁,孙膑以刑徒阴见,说齐使。齐使以为奇,窃载与之齐。齐将田忌善而客待之。忌数与齐诸公子驰逐重射。孙子见其马足不甚相远,马有上、中、下辈。于是孙子谓田忌曰:“君弟重射,臣能令君胜。”田忌信然之,与王及诸公子逐射千金。及临质,孙子曰:“今以君之下驷与彼上驷,取君上驷与彼中驷,取君中驷与彼下驷。”既驰三辈毕,而田忌一不胜而再胜,卒得王千金。于是忌进孙子于威王...

Volatile关键字_Evan_su的博客-程序员宅基地

一、Volatile关键字说明Volatile是Java提供的轻量级同步工具,它能保证可见性和做到禁止指令重排做到有序性,但是它不能保证原子性,如果你的程序必须做到原子性的话,那么可以考虑使用JUC的原子包下的原子类或者加锁的方式来保证,但是我们假设如果使用volatile来修饰共享变量,那么它能够保证的是一个线程对它所修饰的变量进行更改操作后总是能对其他线程可见,如下:对于如上代码,虽然我们对成员变量i使用volatile修饰,意味着,对于执行addOne()方法的任意线程来说,看到这个变量的值是一_volatile关键字

socket关闭: close()和shutdown()的差异_c 关闭socket shutdown和close区别_路人戊戌乙亥的博客-程序员宅基地

转:http://drmingdrmer.github.io/tech/programming/network/2015/07/28/close-shutdown.html对于一个tcp连接,在c语言里一般有2种方法可以将其关闭:close(sock_fd);或者shutdown(sock_fd, ...);多数情况下这2个方法的效果没有区别,可以互换使用。除了:c_c 关闭socket shutdown和close区别

Java volatile关键字_LaymanMu的博客-程序员宅基地

Java volatile的认识_java volatile关键字

随便推点

android io压力测试,C#模拟进行压力测试_小芋头君的博客-程序员宅基地

usingSystem;usingSystem.Diagnostics;usingSystem.IO;usingSystem.Net;usingSystem.Text;usingSystem.Threading;usingNewtonsoft.Json.Linq;namespaceTestKaiPing{classProgram{private static long _totalTimeCost..._android io 测试代码

Android-开源框架总结附带学习经验_circular positioning_普通网友的博客-程序员宅基地

前言说起IT行业,大多数人脑海里反应出的第一个标签一定是“高薪”,而说起程序员,大家更多想到的可能是:秃顶、木讷、格子衫;加班多、能赚钱、不花钱;没对象……这难道就是传说中的“国际驰名双标”?程序员难道就不是IT 行业的?上面的都还不是最让人担心的,关键是,网上还有很多人说“程序员在互联网行业里面是吃青春饭的,干到35岁就会被行业淘汰掉”。这下子戳到了大家心里的痛点。平时使用ConstraintLayout,断断续续的,基本都是在自己的小demo里面使用.公司的项目暂时还没有使用.这次公._circular positioning

rlcraft官方server包开服教程(萌新发帖,不喜勿喷)_rlcraft开服_xiaodemy的博客-程序员宅基地

本教程应该适用于curseforge上的一般serve包,毕竟我只试了rlcraft,其他的我在阿里云的学生服务器应该承受不住,就没试了。我这些都会放到我的ziy第一步你得有个服务器,如果你是一个大学生,那么你可以到阿里云,答题获得两个月的服务器,然后还可以通过答题再增加四个月的服务器,也就是六个月。[点击这里立刻传送到阿里云高校学生计划官网。]我这边选择的系统是CentOS7.6应该差别不大(https://developer.aliyun.com/adc/student/)第二步,你在cursef_rlcraft开服

中国移动日赚2.85亿很高?其实是5G难带来更多利润,那么钱去哪里了?_柏颖漫谈的博客-程序员宅基地

中国移动公布了一季度的业绩,业绩显示盈利有所增长,平均日赚约2.85亿元,看起来这个数据很惊人,不过与此前的赚钱能力相比,它的赚钱能力已有所下滑。中国移动2021年赚了1159亿元,日赚3.17亿,对比可以看出今年一季度日赚2.85亿比2021年低了一成多;如果与2017年的3.23亿更是低了11.8%,可见近几年它的赚钱能力已经出现较为显著的下滑。中国移动在2018年之..._移动公司赚的钱去哪了

Android逆向之绕过卡密实例_如何绕过卡密登录脚本_丶乳酸君的博客-程序员宅基地

前言因为疫情的缘故上学期在学校出校门需要用到请假软件,(虽然还是想吐槽一下,但还是算了吧)随之也就出现了各种假 假条软件,有部分需要收费。秉承能白嫖坚决不掏钱的原则,别问为什么,问就是穷。正好现在放假闲来无事就对其逆向分析,本人也是菜鸡一枚,仅仅来分享下逆向过程跟经验,大佬看看就好,如若能给点方向给点建议,那再好不过。(手动狗头)本篇文章只是来说一说我这个小白的逆向入门之路,仅用来学习交流之用!!!!帮助那些和我类似的小伙伴理解逆向,欢迎有此爱好的小伙伴交流、互相学习。废话不多说,进入正题:(PS:文中_如何绕过卡密登录脚本

VirtualAllocEx函数_wukubobo的博客-程序员宅基地

VirtualAllocEx2009-09-18 23:00[翻译整理] M4orz3r..Blog...Http://Hi.baidu.com/M4orz3r转载请注明... 水平有限,翻译错误之处请留言告知...功能:在指定进程的虚拟地址空间中保留或开辟一段区域..除非MEM_RESET被使用,否则这个函数将会初始化那段内存为0.函数原型:LPVOID WI_virtualallocex

推荐文章

热门文章

相关标签