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

杭州建设网站设计的公司亿网正品

杭州建设网站设计的公司,亿网正品,网站代码免费的,wordpress 超酷播放器uniapp结合Canvasrenderjs根据经纬度绘制轨迹 文章目录 uniapp结合Canvasrenderjs根据经纬度绘制轨迹效果图templaterenderjsjs数据结构 ​ 根据官方建议要想在 app-vue 流畅使用 Canvas 动画,需要使用 renderjs 技术,把操作canvas的js逻辑放到视图层运…

uniapp结合Canvas+renderjs根据经纬度绘制轨迹

文章目录

    • uniapp结合Canvas+renderjs根据经纬度绘制轨迹
      • 效果图
      • template
      • renderjs
      • js
      • 数据结构


  • 根据官方建议要想在 app-vue 流畅使用 Canvas 动画,需要使用 renderjs 技术,把操作canvas的js逻辑放到视图层运行,避免逻辑层和视图层频繁通信。
  • 这里呢结合 renderjs 技术实现绘制轨迹图形。

你可能需要先了解renderjs如何数据通讯:renderjs 与 app-vue之间数据交互

html中使用canvas根据经纬度绘制轨迹


效果图

在这里插入图片描述


template

  • coordsAll 监听数据变化,只要 coordsAll 数据改变,就是触发 initData 方法。
 <template><view class="map-track-wrap"><!-- xxx --><view class="track-list" :prop="coordsAll" :change:prop="canvas.initData"><!-- xxx --><view class="d-flex canvas-box"><canvas class="canvas" :class="`canvas${index}`"></canvas></view></view></view>
</template>

renderjs

<script module="canvas" lang="renderjs">export default {methods: {initData() {for (let i = 0; i < this.coordsAll.length; i++) {// 绘制图形this.draw(this.coordsAll[i], i);}},draw(locationList, idx) {let canvasHeight = 72,canvasWidth = 72,canvasEle = document.querySelectorAll(`.canvas${idx}>canvas`)[0],ctx = canvasEle.getContext('2d'),amuXArr = [],amuYArr = []for (let i = 0; i < locationList.length; i++) {amuXArr.push(locationList[i].lat);amuYArr.push(locationList[i].lng);}amuYArr = amuYArr.map((item) => {return item * -1;});let xMax = Math.max(...amuXArr);let xMin = Math.min(...amuXArr);let yMax = Math.max(...amuYArr);let yMin = Math.min(...amuYArr);let xScale = canvasWidth / (xMax - xMin);let yScale = canvasHeight / (yMax - yMin);let scale = xScale < yScale ? xScale : yScale;let xoffset = (canvasWidth - (xMax - xMin) * scale) / 2;let yoffset = (canvasHeight - (yMax - yMin) * scale) / 2;ctx.save(); // 保存状态ctx.translate(0, canvasHeight);ctx.rotate(-Math.PI / 2);ctx.beginPath();// 根据偏移量移动点位并画图ctx.moveTo((amuXArr[0] - xMin) * scale + xoffset,(yMax - amuYArr[0]) * scale + yoffset);for (let i = 1; i < amuXArr.length; i++) {ctx.lineTo((amuXArr[i] - xMin) * scale + xoffset,(yMax - amuYArr[i]) * scale + yoffset);}ctx.strokeStyle = '#1FE298';ctx.stroke();ctx.restore(); // 恢复状态}}}
</script>

js

  • renderjs中不支持uni.request,所以请求后台获取数据操作在script中进行,然后监听参数变化,将参数传递过来进行渲染。
searchList() {      	// 处理数据let list = this.dataList;if (list.length > 0) {for(let i = 0; i < list.length; i++) {let tmpLocation = list[i].locations;// 页面监听 coordsAll,把数据传递renderjs,会触发 initData 方法this.coordsAll.push(JSON.parse(tmpLocation));}}
}

数据结构

  • 测试数据,具体根据个人所需处理数据
[{locations: [{"lng": 113.980502,"lat": 22.54161},{"lng": 113.972839,"lat": 22.533976},{"lng": 113.98925,"lat": 22.524669},{"lng": 113.990034,"lat": 22.537097},{"lng": 114.00916,"lat": 22.534477}]},{locations: [{"lng": 113.924271,"lat": 22.537654},{"lng": 113.9367,"lat": 22.532806},{"lng": 113.928494,"lat": 22.518594},{"lng": 113.942673,"lat": 22.524502},{"lng": 113.944302,"lat": 22.538601}]},{locations: [{"lng": 113.98049,"lat": 22.54301},{"lng": 114.06374,"lat": 22.51134},{"lng": 114.06259,"lat": 22.50951},{"lng": 114.06178,"lat": 22.51031},{"lng": 113.96047,"lat": 22.54611}]}
]
http://www.yayakq.cn/news/954355/

相关文章:

  • 广州网站建站公司阐述建站流程
  • 建设网站的公司济南兴田德润o评价wordpress留言板页面怎么制作
  • 建设银行网站可以打印流水吗下载cmsv7
  • 医疗网站建设 飞沐wordpress变灰
  • 新手如何自己做网站北京哪里可以申请企业网站域名官网
  • 网站备案域名需要解析到备案服务器吗中兴的网站谁做的
  • 专业做数据的网站有哪些方面免费同城信息发布平台
  • 网址导航类网站如何做推广怎么制作ppt课件
  • 上海微网站制作建设网站建设主要工作内容
  • 免费手机wap建站我想帮别人做网站有这样的平台吗
  • 深圳网站建设选云聚达qq邮箱 wordpress
  • 如何做中介网站网线制作的标准及方法
  • 适合手机的网站企业网站尺寸
  • 贺州网站推广临西网站建设电话
  • 6731官方网站下载网页设计与网站建设设计报告
  • 东旭网站建设电子商务有哪些职业
  • 以网站做跳板入侵哈尔滨网站建设制作哪家便宜
  • 做专利网站的重要点网页游戏平台app
  • 大型集团网站建设公司品牌策划
  • 西安注册公司在哪个网站系统百度广告推广费用
  • 如何登录网站空间长春百度关键词搜索
  • 凯里网站设计哪家好网站网页设计模板下载
  • 袜子的网站建设方案手机网站搭建教程
  • 做网站需要学会什么电商网站的设计与实现视频教程
  • 大型淘宝客返利网站建设网站排名优化软件哪家好
  • 视频网站logo怎么做的个人网站要买多大的空间
  • 网站动图是怎么做的网站建设需要哪种人才
  • 山西省建设厅入晋备案网站网站开发时间
  • 个人 中小企业公司网站建设方案临沂外贸网站
  • 湖南网站建设报价网页设计课程培训机构