Echarts结合百度地图绘制散点图,toolpit显示位置错位偏移问题终极解决方案

参考  Agger_chen  上学下达 两位,但有如下问题:

1.style要用class方式,使用原博主方式会出现tip出现在地图的上面或者下面(根据div先后顺序决定),而不是悬浮于地图之上。 
2.原博中tip位置的实现,若tip超出右边界或者下边界并不能完整显示,请参考以下代码:

position: function(point, params, dom, rect, size) { 
			var width = $(dom).width();     //获取tooltip原来的width
			var m = $("#mapStoreClass");    //获取我们自定义模拟的tooltip dom
			$(dom).css("position","initial");    //将原来的tooltip设置为initial *重要,为了不让原来的tooltip dom乱跑
			$(m).html(dom);                      //将更改好的dom放入我们模拟的tooltip dom
			//其中point为当前鼠标的位置,size中有两个属性:viewSize和contentSize,分别为外层div和tooltip提示框的大小
			var x = point[0];//
			var y = point[1];
			var viewWidth = size.viewSize[0];
			var viewHeight = size.viewSize[1];
			var boxWidth = size.contentSize[0];
			var boxHeight = size.contentSize[1];
			var posX = 0;//x坐标位置
			var posY = 0;//y坐标位置
			if (viewWidth-x < boxWidth) { // 右边放不下,放到鼠标左边
				$(m).css("left",x-boxWidth-10);
			} else {
				$(m).css("left",point[0]+20);
			}
			if (viewHeight-y < boxHeight) { // 下边放不下,放到鼠标上边
				$(m).css("top",y-boxHeight-10);
			} else {
				$(m).css("top",point[1]+20); 
			}
			//$(m).css("left",point[0]+20);        //设置模拟dom显示位置,此为鼠标位置
			//$(m).css("top",point[1]+20);         //设置模拟dom显示位置,此为鼠标位置
			$(m).css("width",width+15);          //设置模拟dom宽度
			//不用return 在此我们只是用来获取我们想要的point和dom,并不更改原来的位置,因为改了也没用,不然我就不用这么麻烦了。。
		}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ECharts是一个流行的开源可视化库,主要用于数据可视化,而FastAPI是一个用于构建RESTful API的高性能Python框架。如果你想结合ECharts在FastAPI中创建一个动态散点图,你可以按照以下步骤进行: 1. **安装依赖**: - 安装ECharts在前端:在HTML或TypeScript文件中引入ECharts库。 - 如果要在后端使用ECharts,可以通过npm安装`@antv/echarts`,这是AntV官方维护的ECharts for Web的封装。 2. **前端渲染**: - 使用JavaScript在前端渲染ECharts,通常在`<script>`标签或组件里创建图表实例,并发送请求获取数据。 - 可以用axios等HTTP库从FastAPI端口获取数据,数据格式如JSON。 3. **后端FastAPI处理**: - 在FastAPI中创建一个路由来提供数据,例如一个GET请求,返回包含散点图数据的JSON对象(包含x和y坐标数组)。 4. **传递数据到前端**: - 将前端需要的数据作为响应返回给前端请求。 5. **前端展示数据**: - 前端接收到数据后,设置ECharts实例的配置,如数据、图形类型(scatter,散点图),并更新图表。 6. **相关问题--:** 1. 如何在FastAPI中定义一个返回JSON数据的路由? 2. 如何使用ECharts API创建一个新的散点图实例? 3. ECharts如何处理异步数据加载? **示例代码片段**(简化版,未包含完整的前后端接口和模板): ```python # FastAPI后端 from fastapi import FastAPI, Response from pydantic import BaseModel app = FastAPI() @app.get("/scatter_data") async def get_scatter_data(): data = [{'x': 10, 'y': 20}, {'x': 30, 'y': 40}, ...] # 假设这是你的数据 return {"data": data} # 前端HTML/TypeScript import axios from 'axios' const chart = echarts.init(document.getElementById('chart')); axios.get('/scatter_data') .then(response => { const data = response.data.data; chart.setOption({ series: [ { name: 'Scatter', type: 'scatter', data: data } ] }); }); ``` 记得在实际项目中,你需要处理好数据格式转换,错误处理,以及可能的服务器渲染或静态文件部署问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值