码迷,mamicode.com
首页 > 其他好文 > 详细

openlayers5实战--踩坑总结

时间:2018-12-05 20:46:13      阅读:693      评论:0      收藏:0      [点我收藏+]

标签:math   port   转化   测距   ams   rip   epo   圆形   使用   

1.接口返回圆心坐标和半径,直接通过new Circle(center,radius)添加圆形feature变小问题。

  解决办法:

  new  Feature()的geometry参数不能直接赋值new  Circel()得到的geometry,

  要通过‘ol/geom/Polygon.js’中的fromCircle方法将new  Circel()得到的geometry转化一遍然后赋值给new  Feature()的geometry。

  另:如果接口直接返回的坐标点画圆,则使用‘ol/geom/Polygon.js’中的circular方法。

import {circular as circularPolygon, fromCircle as fromCirclePolygon} from CC;
eg1:
let lng = parseFloat(d[0].lng); let lat = parseFloat(d[0].lat); let radius = parseFloat(d[0].radius); let circle = new Circle(transform([lng, lat], ‘EPSG:4326‘, ‘EPSG:3857‘), radius);
feature = new Feature({
   position: transform([lng, lat], ‘EPSG:4326‘, ‘EPSG:3857‘),
   radius: radius,
   type: ‘circle‘,
   id: ‘N‘,
   geometry: fromCirclePolygon(circle)
})

eg2:
let lng = item.coordinateList[0].lng;
let lat = item.coordinateList[0].lat;
let radius = item.coordinateList[0].radius;
let circle4326 = circularPolygon([lng, lat],radius,64);
let circle3857 = circle4326.clone().transform(‘EPSG:4326‘, ‘EPSG:3857‘);
feature = new Feature(circle3857);


  

2.测距不准问题。

  解决办法:

  使用‘ol/sphere.js‘中的getLength()方法计算。

  

/*格式化测量长度
       *@params line:  type geometry
       */
      formatLength (line) {
        //定义长度变量
        let length = getLength(line);
        let output;
        if (length > 100) {
          output = `${(Math.round(length / 1000 * 100) / 100)} 公里`;
        } else {
          output = `${(Math.round(length * 100) / 100)} 米`;
        }
        return output;
      },

  

openlayers5实战--踩坑总结

标签:math   port   转化   测距   ams   rip   epo   圆形   使用   

原文地址:https://www.cnblogs.com/zifayin/p/10072404.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!