使用Proj4js转换EPSG:3857到EPSG:32633报未定义错误如何解决
Proj4js
Uncaught ReferenceError: Proj4js is not defined 报错解决方案 核心错误原因
你使用的proj4js 2.4.3属于2.x版本系列,该版本暴露的全局调用对象为小写的proj4,而非你代码中使用的大写开头Proj4js,这是触发未定义报错的直接原因。
其他注意事项
- 需保证业务转换代码在proj4.js加载完成后执行,不要将业务代码写在proj4.js引入标签之前
- 2.x版本简化了API调用逻辑,无需手动实例化Proj、Point对象
修正后完整代码
<script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.3/proj4.js"></script> <script> // 定义坐标系参数 proj4.defs("EPSG:3857", "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs"); proj4.defs("EPSG:32633", "+proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"); // 直接执行坐标转换,参数顺序为[源坐标系, 目标坐标系, 坐标数组[x,y]] const transXCoords = proj4('EPSG:3857', 'EPSG:32633', [minX, maxX]); const transYCoords = proj4('EPSG:3857', 'EPSG:32633', [minY, maxY]); </script>
额外提示
坐标转换时注意传入数组的顺序为x在前、y在后,不要颠倒参数顺序导致转换结果异常。
内容的提问来源于stack exchange,提问作者Lucijan Troha
相关产品推荐
相关产品推荐

