自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 JavaScript笔记之indexedDB的轻量化使用(增删改查)

前些日子尝试使用 HTML5 的 indexedDB,发现标准提出来的非关系型数据库真的很难用,根据自己理解基于 indexedDB 封装了一个轻量级的数据库管理类,能够快速的建表、存数据。1.需求分析介于 indexedDB 不人性化的事务操作,以及神奇的建表逻辑(只能通过升级数据库,在升级事件内建表!),考虑自己实际需求做了以下的取舍:因为轻量级原因,我只需要建多张表而不需要建数据库,因此全局只要维护一个数据库实例即可;因其离谱的建表逻辑(也有可能我没把握住),通过多次尝试,最终选择在需要.

2022-05-04 22:17:25 2014

原创 JavaScript笔记之Promise接口封装(deffer)

近期工作需要大量封装 promise 对象异步访问接口,考虑到之前的接口封装过于冗余,在学习了一些项目源码后,结合自己理解编写了适合快速 promise 封装的接口形式。具体代码如下:1.原先的接口封装通过返回 promise 对象进行函数返回值的异步封装。/** 这种 `promise` 接口封装方法,优点是结构清晰,缺点是不利用做内部链式调用,通过代码风格较差*/function test (_items) { return new Promise((resolve, reject).

2022-05-03 11:05:54 1514

原创 JavaScript笔记之队列与事件队列

最近根据工作需要参考网上资料编写了 JavaScript 的队列,并根据实际需求增加事件队列机制。具体代码如下:1.构建 队列 数据结构对象按照以往原型实现方式构建接口。/** 队列*/let Queue = function () { // 存储 this._items = []}/** 元素添加到队列中*/Queue.prototype.enqueue = function (element) { this._items.push(element)}/**.

2022-05-02 18:03:42 1696

原创 JavaScript笔记之实现事件的发布订阅

最近根据工作需要重新梳理了旧的前端事件发布订阅机制,完善了订阅流程。具体代码如下:1.创建 event 父级对象因本人个人喜好,目前仍然使用 es5 的 原型继承模式 设计类,并未直接使用 es6 的 class。如有需要,简单适配下即可。/** 事件对象*/let Event = function () { // 订阅事件列表 // 通过对象存储事件的 key 与 value,方便进行存储与管理 this._eventHandlerList = {}}2.注册事件确保先.

2021-12-19 16:12:00 1236

原创 Openlayers笔记之图片偏移的完整解决方案

本文介绍 Openlayers 如何实现图片偏移标注的功能,同时提供在图片缩放比例变化时纠正偏移的解决方法。1.创建矢量图层// 创建矢量源window.vectorSource = new window.ol.source.Vector({ features: []})// 创建并添加矢量标注图层window.olMap.addLayer(new window.ol.layer.Vector({ source: window.vectorSource, zIndex: 2}).

2021-12-19 15:52:38 4951

原创 Openlayers笔记之实现卷帘查看功能

在 Web GIS 的开发中,总是会遇到很多新奇的需求,比如卷帘查看功能。卷帘查看是为了方便比较不同时间、不同类型的两张地图在同一地点的差异性,通过卷帘操作能够快速对比出两张地图的差异性。1.实现思路Openlayers API文档中提供了控制地图范围的接口(Extent)。通过加载两张地图,移动前端绘制的卷帘轴,实时获取卷帘轴当前的屏幕坐标(x, y),并实时控制上面层级地图的显示范围,即可实现该功能。2.具体实现首先创建图层,加载两张在线地图:/** 初始化地图*/function.

2021-08-16 16:24:31 1690

原创 Cesium笔记之加载GIF图

Ceisum 的 BillboardGraphics 方法支持加载并显示 jpeg png 等格式的图片资源。实际开发中我们经常会有 GIF 图加载的需求,而 Cesium 没有直接支持 GIF 格式的图片格式,那么怎么加载 GIF 图呢?1.解决思路GIF 图是通过时间轴叠加 N 张图片实现图片的动态变化。因此如果能够通过某种方式将 GIF 图再解构成一张张的图片,并通过 Cesium 的 BillboardGraphics 按照时间顺序更新图片,即能实现 GIF 图的加载!经过调研发现,第三方.

2021-08-13 17:04:03 3648

原创 利用iconv批量修改文件编码格式

iconv是linux系统命令,用于转换文件编码。当中文文件需要从gbk编码转为utf-8编码时,使用该命令能够快速的转换编码。使用如下:iconv -f 原编码 -t 新编码 originfile -o newfile利用bash脚本实现某个文件夹下批量文件的转码:#!/bin/bash# 转换编码方法function transferFile (){ for file...

2019-09-19 10:51:53 1002

原创 Python编码错误UnicodeEncodeError的一种解决方案

写完python自动构建脚本后,将其部署到docker中报了这么个错:UnicodeEncodeError: 'ascii' codec can't encode characters in position: ordinal not in range后来发现是python中zipFile压缩文件中有中文文件名,导致编码错误。一开始考虑是python自身的编码问题后,尝试:import ...

2019-09-19 10:05:08 1168

原创 一个简单的Node服务器

部署一个最简单的静态服务器'use strict';var url = require('url'), fs = require('fs'), http = require('http'), path = require('path');var server = http.createServer(function (req, res) { var pathn...

2019-07-24 18:55:07 178

原创 JavaScript笔记之简单实现一个ColorPicker

最近在开发中想要使用一个简单的颜色选择器,上网搜索之后发现大部分都是基于jQuery的,一些基于原生的选择器功能又很冗余。于是自己基于原生js写了一个只为实现简单pick功能的颜色选择器。1.创建面板容器// 创建一个div容器let edit_color_panel = document.createElement("div");2.简单设置容器样式edit_color_pan...

2019-05-05 14:58:27 832

原创 JavaScript笔记之对象赋值

前端开发中经常会遇到对象的拷贝赋值,因为JS对象的特殊原因,直接赋值其实传递的是地址而不是传值。很多时候我们并不希望传地址,下面介绍关于数组和对象的赋值小技巧:1.数组的赋值数组在JS中是一个特殊的对象,对数组的赋值操作实际上等同于对对象的赋值。// 循环赋值是最简单的一种赋值:let a_arrs = [1, 2, 3, 4, 5];let a_arrs_copy = [];...

2019-05-05 14:57:29 2325

原创 JavaScript笔记之编程规范

一份简洁自用的JavaScript编码规范。1.命名规范变量名、属性名、对象名、方法名等统一采用小驼峰式命名规范:let thisIsValue = "hello";let myObject = { firstKey: "", secondKey: ""};类名、文件名使用大驼峰命名规范:MyTest.jsclass MyClass { }function M...

2019-05-05 14:56:53 317

原创 Git笔记之简单入门

我所在的公司曾经长期使用SVN,SVN足够优秀但过于传统且多人合作效率很低。后来大佬们忍受不了低效的开发效率,在内网搭建了git服务器。Git无疑是现在最流行的版本控制系统,在全面推广使用git之后,大家开发都是:)的,少了很多不必要的麻烦和冲突。刚开始学习Git的时候,上网搜了很多教程发现介绍的都很复杂且晦涩(当然肯定有很多优秀的git入门教程,可能是我没有找到:( ),后来在自己琢磨下才慢...

2019-05-05 14:51:09 189

原创 Cesium笔记之地图清晰度解决方案

最近发现Cesium加载瓦片地图数据清晰度很差,特别是地图上的文字加载十分模糊,有的人说是Cesium引擎导致模糊,也有说是浏览器的原因导致模糊。在研究了很久之后,也找到了一些方法能够改善一下地图的清晰度。1.改善实体的文字和图片清晰度viewer.scene.fxaa = false;fxaa确实能够改善文本和图片的清晰度,API文档上fxaa属性的介绍:When true, ena...

2019-05-05 14:48:25 13165 6

原创 Cesium笔记之自定义镜头缩放

之前一直使用Cesium提供的官方插件进行镜头缩放控制,但是该插件居然有几千行代码,这中间包含了很多我用不到的功能。本文介绍如何利用Cesium接口,自定义开发一个简单的镜头缩放的插件。注:示例代码基于Vue框架1.思路要想实现镜头缩放控制,首先我们需要能够获取当前的镜头中心的位置,其次需要能够控制镜头根据指定中心位置和高度进行缩放。所幸的是这些Cesium都提供了接口给我们使用,虽然A...

2019-05-05 14:47:52 7752 5

原创 Cesium笔记之实体编辑

上文讲的是如何通过Cesium来完成一个实体的标绘,本文介绍如何对实体进行编辑。注:示例代码基于Vue框架。1.思路如果要对一个已经标绘完成的实体进行编辑,那么首先我需要获取到该实体的对象,同时应当生成编辑点进行拖拽编辑。Cesium提供了充分的监听器供我们使用,灵活的使用监听器和接口可以轻松的完成实体的编辑。下面是具体实现:2.初始化变量// 创建监听的handlerthis.h...

2019-05-05 14:47:07 5599 7

原创 Cesium笔记之标绘实体

在Ceisum开发中我们常常需要标绘实体,实体主要分为三类:点标(如点、图片、文本、音频、视频等)、线标(如多边形、贝塞尔等复杂曲线)、面标(如面、椭圆、矩形等)。本文主要介绍如何利用Cesium进行面的标绘,其他类似,具体可参考接口文档。注:示例代码基于Vue框架。1.理清标绘逻辑要在地球上标一个面标,那么首先需要开启一个监听器,监听地球的点击事件。点击事件获取点的位置后,应该转换成实...

2019-05-05 14:46:33 4581 3

原创 Cesium笔记之加载三维地图

Cesium提供了展示三维地形数据的接口,同时也提供了丰富的接口调用。但是由于API文档过于碎片,经过蛮长时间的研究学习,也算是掌握了如何利用Cesium在三维地形上进行标绘。注:示例代码基于Vue框架。1.加载三维地形地图网上可以下载多种高程数据,如果找不到也可以点击这个链接下载免费的数据gscloud.cn。下载好数据之后,调用接口加载地形数据。// 创建地形图层对象let t...

2019-05-05 14:45:42 3621

原创 Cesium笔记之小技巧

Cesium官方文档目前只支持全英文,加上大部分资料都是英文的,对于新手有些不太友好。鉴于在学习与工作中的经验,这边分享一些Cesium开发的小知识点和小技巧。1.去除Cesium图标和版本信息如果利用Cesium进行商业开发,那么Cesium的图标最好是要去掉的。viewer._cesiumWidget._creditContainer.style.display = "none"...

2019-05-02 20:36:35 5119

原创 Cesium笔记之快速入门

快速开始1.创建放置地图的容器<div id='map'></div>设置样式,使之全屏显示#map { position: absolute; width: 100%; height: 100%;}2.创建全局的Cesium视图对象window.viewer = new Cesium.Viewer('map', { animation...

2019-05-02 20:31:28 684

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除