原生JAVASCRIPT实现地球模型MAP效果 交互式WORLD INTERACTIVE

本文介绍用原生JavaScript实现交互式地球模型。涉及JavaScript中onmousemove、createElement及描点等基础知识,还给出了效果图和代码实现,原文可参考web前端中文站。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原生JavaScript实现的demo例子,web前端中文站在前面介绍不少的实例。今天,我们用原生js来实现地图领域的效果,交互式地球模型。

主要涉及到JavaScript中的onmousemove,createElement及描点等基础知识。

效果图

交互式地球模型

交互式地球模型

代码实现

<script type="text/javascript"> //www.lisa33xiaoq.net
var object = [];
var world = "001F8C0C400031F30E7FE000FF964FFFFF00FFB067FFFE001FF03FFFFA001FF07FFFFC003F806BFFF4001F8020FFF4001D007FFFF4000E80FFE7F0000600FFC6680001E07FC2180001F00FC0780001FC0F81730001FC0F80940000FC0F400F0020780F403F00007006001F00006000000640006000000080006000000000002000000000";
var xm  = -1000,
    ym  = -1000,
    xmb = 0,
    ymb = 0,
    nx  = 0,
    ny  = 0,
    sx,
    sy,
    sp,
    bv,
    bh,
    pt;
/* mouse events */
document.onmousemove = function(e){
	if (window.event) e = window.event;
	xm = (e.x || e.clientX) - nx;
	ym = (e.y || e.clientY) - ny;
	xm = Math.round(Math.round(xm/11)*11);
	ym = Math.round(Math.round(ym/11)*11);
}
function resize() {
	sx = sp.offsetLeft;
	sy = sp.offsetTop;
	nx = document.body.offsetWidth * .5 + sx;
	ny = document.body.offsetHeight * .5 + sy;
}
onresize = resize;
/* create pixel */
function CObj(x, y){
	var o = document.createElement("span");
	o.style.left = Math.round(x * 11)+"px";
	o.style.top  = Math.round(y * 11)+"px";
	sp.appendChild(o);
	o = document.createElement("span");
	sp.appendChild(o);
	this.obj  = o.style;
	this.x    = x;
	this.y    = y;
	this.x0   = x * 11;
	this.y0   = y * 11;
	this.anim = true;
} 
CObj.prototype.mainloop = function(){
 	var dx                 = xm - this.x0;
	var dy                 = ym - this.y0;
	var dist               = Math.sqrt(dx * dx + dy * dy);
	if (dist < 140) {
		/* globe */
		if(!this.anim){
			this.anim           = true;
			this.obj.background = (((this.x>16&&this.x<23&&this.y<8)&&!(this.x==22&&this.y==6))||(this.x==23&&this.y==3))?"#F80":"#FFF";
			this.obj.zIndex     = 5;
		}
		var M                   = Math.cos(.5 * Math.PI * dist / 140);
		this.obj.left           = Math.round(-sx -xm + this.x0 - dx * M)+"px";
		this.obj.top            = Math.round(-sy -ym + this.y0 - dy * M)+"px";
		this.obj.width          = this.obj.height = Math.round(M * 14)+"px";
	} else {
		if(this.anim){
			/* background */
			this.obj.left       = this.x0+"px";
			this.obj.top        = this.y0+"px";
			this.obj.width      = this.obj.height = "";
			this.obj.background = (((this.x>16&&this.x<23&&this.y<8)&&!(this.x==22&&this.y==6))||(this.x==23&&this.y==3))?"#C70":"#666";
			this.obj.zIndex     = 3;
			this.anim           = false;
		}
	}
}
function mainloop(){
	/* mainloop */
	if(xm!=xmb || ym!=ymb){
		bv.left = xm+"px";
		bh.top  = ym+"px";
		pt.left = xm+"px";
		pt.top  = ym+"px";
		for(i in object) object[i].mainloop();
	}
	xmb = xm;
	ymb = ym;
	setTimeout(mainloop, 16);
} 
onload = function(){
	/* pointers */
	bv = document.getElementById("bv").style;
	bh = document.getElementById("bh").style;
	pt = document.getElementById("pt").style;
	sp = document.getElementById("sp");
	/* decompress world */
	var bits = "";
	var o;
	for(var i=0, n=world.length; i<n; i+=2){
		o = parseInt(world.substring(i,i+2), 16).toString(2);
		bits += "00000000".substring(0, 8-o.length)+o;
	}
	/* create pixels */
	var k = 0;
	for(var y=0;y<22;y++){
		for(var x=0;x<48;x++){
			if(bits.charAt(k++)=="1")object.push(new CObj(x, y));
		}
	}
	/* run */
	resize();
	mainloop();
}
</script>

 原文链接:web前端中文站 https://www.lisa33xiaoq.net/1283.html

电动汽车数据集:2025年3K+记录 真实电动汽车数据:特斯拉、宝马、日产车型,含2025年电池规格和销售数据 关于数据集 电动汽车数据集 这个合成数据集包含许多品牌和年份的电动汽车和插电式车型的记录,捕捉技术规格、性能、定价、制造来源、销售和安全相关属性。每一行代表由vehicle_ID标识的唯一车辆列表。 关键特性 覆盖范围:全球制造商和车型组合,包括纯电动汽车和插电式混合动力汽车。 范围:电池化学成分、容量、续航里程、充电标准和速度、价格、产地、自主水平、排放、安全等级、销售和保修。 时间跨度:模型跨度多年(包括传统和即将推出的)。 数据质量说明: 某些行可能缺少某些字段(空白)。 几个分类字段包含不同的、特定于供应商的值(例如,Charging_Type、Battery_Type)。 各列中的单位混合在一起;注意kWh、km、hr、USD、g/km和额定值。 列 列类型描述示例 Vehicle_ID整数每个车辆记录的唯一标识符。1 制造商分类汽车品牌或OEM。特斯拉 型号类别特定型号名称/变体。型号Y 与记录关联的年份整数模型。2024 电池_类型分类使用的电池化学/技术。磷酸铁锂 Battery_Capacity_kWh浮充电池标称容量,单位为千瓦时。75.0 Range_km整数表示充满电后的行驶里程(公里)。505 充电类型主要充电接口或功能。CCS、NACS、CHAdeMO、DCFC、V2G、V2H、V2L Charge_Time_hr浮动充电的大致时间(小时),上下文因充电方法而异。7.5 价格_USD浮动参考车辆价格(美元).85000.00 颜色类别主要外观颜色或饰面。午夜黑 制造国_制造类别车辆制造/组装的国家。美国 Autonomous_Level浮点自动化能力级别(例如0-5),可能包括子级别的小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值