如何创建控制台输出为仅含圆括号的POLYGON格式的Javascript对象
复现方法及原理说明
你遇到的是自定义了toString()方法的JavaScript对象,Firefox控制台打印这类对象时会优先展示toString()的返回值,而非默认的花括号键值对结构,你可以通过以下两种方式复现:
方式1:自定义几何类实现
// 定义多边形类 class Polygon { constructor(pointList) { this.points = pointList; } // 重写toString方法,返回WKT格式的多边形文本 toString() { const pointStr = this.points.map(point => `${point[0]} ${point[1]}`).join(','); return `POLYGON ((${pointStr}))`; } } // 实例化测试 const targetPolygon = new Polygon([ [138.5007, -34.82787], [138.51838, -34.82787], [138.51838, -35.01713], [138.5007, -35.01713], [138.5007, -34.82787] ]); console.log(targetPolygon); // Firefox控制台输出:POLYGON ((138.5007 -34.82787,138.51838 -34.82787,138.51838 -35.01713,138.5007 -35.01713,138.5007 -34.82787)) console.log(typeof targetPolygon); // 输出 object
方式2:普通对象挂载自定义toString方法
const polygonObj = { coordinates: [[138.5007, -34.82787],[138.51838, -34.82787],[138.51838, -35.01713],[138.5007, -35.01713],[138.5007, -34.82787]], toString() { return `POLYGON ((${this.coordinates.map(p => p.join(' ')).join(',')}))`; } } console.log(polygonObj); // 打印效果和你遇到的完全一致 console.log(typeof polygonObj); // 输出 object
补充说明
你看到的POLYGON(...)格式是地理空间领域通用的WKT(Well-Known Text)几何描述格式,常用的GIS类库生成的几何对象默认都会重写toString方法输出这类格式的字符串。
内容的提问来源于stack exchange,提问作者Finest Sites
相关产品推荐
相关产品推荐

