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

头歌:共享单车之数据可视化

第1关 ​​​​​​绘制地图

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><style type="text/css">body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;}</style><script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script><title>step1</title></head><body><div id="allmap"></div></body></html><script type="text/javascript">var map = new BMap.Map("allmap");// 创建地图实例var point = new BMap.Point(116.10 ,38.98);// 创建点坐标map.centerAndZoom(point, 13);//设初始化地图。 如果center类型为Point时,zoom必须赋值,范围3-19级,若调用高清底图(针对移动端开发)时,zoom可赋值范围为3-18级。如果center类型为字符串时,比如“北京”,zoom可以忽略,地图将自动根据center适配最佳zoom级别map.addControl(new BMap.NavigationControl());//缩放平移控件map.enableScrollWheelZoom();//利用鼠标滚轮控制大小var start_longitude=116.233093;//开始经度var start_latitude=39.04607;//开始纬度var stop_longitude=116.235352;//结束经度var stop_latitude=39.041691;//结束纬度var address=["乡里乡情铁锅炖南228米","擎天矿用材料有限公司北609米"];/**********   Begin   **********///1.初始化路程线var start_longitude=116.233093;//开始经度var start_latitude=39.04607;//开始纬度var stop_longitude=116.235352;//结束经度var stop_latitude=39.041691;//结束纬度var polyline = new BMap.Polyline([  new BMap.Point(start_longitude, start_latitude),  new BMap.Point(stop_longitude, stop_latitude)  ],{strokeColor:"red",strokeWeight:3,strokeOpacity:0.5});//创建一条宽度为3外边框透明度为0.5的红色线  //2.将线添加到地图上map.addOverlay(polyline);//将线添加到地图上  //3.调用绘制箭头线函数addArrow(polyline,10,Math.PI/7);//4.设置起始点标注var marker = new BMap.Marker(new BMap.Point(start_longitude,start_latitude)); //创建开始位置标注  var marker1 = new BMap.Marker(new BMap.Point(stop_longitude,stop_latitude)); //创建开始位置标注  var label = new BMap.Label(address[0], {offset: new BMap.Size(20, 0)});//给标注设置文字描述  var label1 = new BMap.Label(address[1], {offset: new BMap.Size(20, 0)});//给标注设置文字描述marker.setLabel(label);//将文字描述设置到标注上  map.addOverlay(marker);//将标注添加到地图中  marker1.setLabel(label1);map.addOverlay(marker1);/**********   End   **********///绘制箭头的函数function addArrow(polyline,r,angle){var linePoint=polyline.getPath();//线的坐标串(里面存的就是起始点的坐标点)var arrowCount=linePoint.length;for(var i =1;i<arrowCount;i++){ //在拐点处绘制箭头var pixelStart=map.pointToPixel(linePoint[i-1]);var pixelEnd=map.pointToPixel(linePoint[i]);var pixelTemX,pixelTemY;//临时点坐标var pixelX,pixelY,pixelX1,pixelY1;//定义箭头两个点坐标var delta=(pixelEnd.y-pixelStart.y)/(pixelEnd.x-pixelStart.x);//主线斜率,垂直时无斜率var param=Math.sqrt(delta*delta+1);//代码简洁考虑if((pixelEnd.x-pixelStart.x)<0){ //第二、三象限pixelTemX=pixelEnd.x+ r/param;pixelTemY=pixelEnd.y+delta*r/param;}else{ //第一、四象限pixelTemX=pixelEnd.x- r/param;pixelTemY=pixelEnd.y-delta*r/param;}//已知直角三角形两个点坐标及其中一个角,求另外一个点坐标算法pixelX=pixelTemX+ Math.tan(angle)*r*delta/param;pixelY=pixelTemY-Math.tan(angle)*r/param;pixelX1=pixelTemX- Math.tan(angle)*r*delta/param;pixelY1=pixelTemY+Math.tan(angle)*r/param;var pointArrow=map.pixelToPoint(new BMap.Pixel(pixelX,pixelY));var pointArrow1=map.pixelToPoint(new BMap.Pixel(pixelX1,pixelY1));var Arrow = new BMap.Polyline([pointArrow,linePoint[i],pointArrow1], {strokeColor:"blue", strokeWeight:3, strokeOpacity:0.5});map.addOverlay(Arrow);return Arrow;}}</script>

第2关 绘制流量最高的五条线路的路程图 

//servlet里的代码
package com.educoder.servlet;import com.educoder.util.HBaseUtil;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;public class BickMapServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");/**********   Begin   **********///1.通过HbaseUtil类获取数据BickMap bickMap = HBaseUtil.scanTable(); //直接从左侧的提示栏中cv//2.遍历将数据以键值对的方式传给jspfor (String key : bickMap.getKeys()) {  request.setAttribute(key,bickMap.get(key));//遍历将最高五条流量的数据以“字段名-结果集合”形式传到后台  }    //直接从左侧的提示栏中cv/**********   End    **********/request.getRequestDispatcher("step2.jsp").forward(request,response);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Docker之数据卷和Dockerfile
  • 2024 年最新使用 Wechaty 开源框架搭建部署微信机器人(微信群智能客服案例)
  • 前端二维码工具小程序产品使用说明书
  • RISC-V特权架构 - 模式切换与委托
  • Leetcode 68. 文本左右对齐
  • GFS分布式 文件系统
  • 前端小白的学习之路(Vue2 一)
  • Excel全套213集教程
  • 【数据结构】考研真题攻克与重点知识点剖析 - 第 5 篇:树与二叉树
  • Rust 实现线程安全的 Lock Free 计数器
  • Springboot使用教程
  • c语言:操作符
  • 【远程桌面】Microsoft Remote Desktop 4 mac
  • 景芯2.5GHz A72训练营dummy添加(一)
  • 4.8作业
  • ESLint简单操作
  • IOS评论框不贴底(ios12新bug)
  • JavaScript实现分页效果
  • Js基础知识(一) - 变量
  • leetcode388. Longest Absolute File Path
  • mysql常用命令汇总
  • PAT A1120
  • vuex 笔记整理
  • 安装python包到指定虚拟环境
  • 给第三方使用接口的 URL 签名实现
  • 关于字符编码你应该知道的事情
  • 聊聊sentinel的DegradeSlot
  • 前端之Sass/Scss实战笔记
  • 如何在 Tornado 中实现 Middleware
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 学习JavaScript数据结构与算法 — 树
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​如何使用QGIS制作三维建筑
  • # 安徽锐锋科技IDMS系统简介
  • #vue3 实现前端下载excel文件模板功能
  • $refs 、$nextTic、动态组件、name的使用
  • (HAL库版)freeRTOS移植STMF103
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (一)80c52学习之旅-起始篇
  • ***测试-HTTP方法
  • ../depcomp: line 571: exec: g++: not found
  • .net core 的缓存方案
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .net mvc部分视图
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .NET 设计一套高性能的弱事件机制
  • .NET企业级应用架构设计系列之技术选型
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...