Supermap GIS地图知识点

2020-09-16 14:37:41 浏览数 (1)

Supermap GIS地图知识点

代码语言:javascript复制
Supermap
GIS地图的一个周边查询功能,我这个是一个简单版的。

周边查询就是在地图上随机点一个点,然后查询这个点的周边。我这里实现的是随机点一个点,然后你可以输入一个半径,就是你想搜索的范围有多大,输入的半径越大搜索的范围越大,搜索的范围会以一个圆的方式来搜索。

 

操作有以下几个步骤:

首先获取到你所填写的半径、

然后获取到你所选择的点的一个X轴坐标和Y轴坐标、

然后就是画出一个圆形,这是一个搜索的形式

下面这个是画圆的代码

注释:这个画圆的代码是网上找的资料,直接加以引用

function createCircle(origin,radius,sides,r,angel) {

           //
queryByDistance(origin, radius);//热点渲染的最大半径radius,多边形的中心origin

            var rR
= r * Math.PI / (180 * sides);//边数sidex

            var
rotatedAngle, x, y;

            var
points = [];

            for
(var i = 0; i < sides; i  ) {//用这个方法生成的圆是由内之外一个一个圆生成的

               
rotatedAngle = rR * i;

                x =
origin.x   (radius * Math.cos(rotatedAngle));

                y =
origin.y   (radius * Math.sin(rotatedAngle));

               
points.push(new SuperMap.Geometry.Point(x, y));

            }

           
rotatedAngle = r * Math.PI / 180;

            x =
origin.x   (radius * Math.cos(rotatedAngle));

            y =
origin.y   (radius * Math.sin(rotatedAngle));

           
points.push(new SuperMap.Geometry.Point(x, y));

            var
ring = new SuperMap.Geometry.LinearRing(points);

           
ring.rotate(parseFloat(angel), origin);

            var geo
= new SuperMap.Geometry.Collection([ring]);//ring环状图

           
geo.origin = origin;//中心

           
geo.radius = radius;//边数

            geo.r =
r;//半径

           
geo.angel = angel;//旋转角度

           
geo.sides = sides;//边数

           
geo.polygonType = "Curve";

           
console.log(geo);

            return
geo;//返

        }

然后就是给这个圆加上一点样式:

 

var circlep = createCircle(Point, BJid / 500000, 256,
360, 360);//createCircle画圆(这个画圆就是引用了上面的方法)

 

var circleVector = new
SuperMap.Feature.Vector(circlep);//获取计算后的值

       这个就是给圆加上一些样式,这些样式的官网有更详细的介绍:

               
circleVector.style = {//给圆加颜色

                   
strokeColor:"blue",//边框颜色

                   
fillColor: "blue",//面颜色

                   
strokeWidth: 2,//边框像素

                   
fillOpacity:0.3//填充不透明度

                }

               
vector.addFeatures(circleVector);

然后这个时候就可以查询以下这个圆范围内你所需要查询的内容,这个要看你自己要查什么了。

0 人点赞