共计 888 个字符,预计需要花费 3 分钟才能阅读完成。
问题
因为偶然有些奇怪的点位呈现在意料之外的地位,导致挪动到该点位所在位置没有下载对应的地图瓦片,所以须要判断该点位所处的地位(此时地图空白),作为参考信息。
解决思路
- 第一种是间接找出该点位,通过接口数据来查找对应的经纬度坐标,但比拟繁琐,特地是数据量大时,很麻烦
- 第二种是我曾经晓得那些缺失瓦片的信息(依据接口报错得悉瓦片的 [z,x,y]), 通过
tileCoord
来判断点位的大略地位。
import {createXYZ} from 'ol/tilegrid';
const tilecoord = [11, 1689, 886]
const tilegrid = createXYZ();
const center = tilegrid.getTileCoordCenter(tilecoord) // 瓦片的核心地位
- 源码剖析
/**
* @param {import("../tilecoord.js").TileCoord} tileCoord Tile coordinate.
* @return {import("../coordinate.js").Coordinate} Tile center.
*/
getTileCoordCenter(tileCoord) {const origin = this.getOrigin(tileCoord[0]);
const resolution = this.getResolution(tileCoord[0]);
const tileSize = toSize(this.getTileSize(tileCoord[0]), this.tmpSize_);
return [origin[0] + (tileCoord[1] + 0.5) * tileSize[0] * resolution,
origin[1] - (tileCoord[2] + 0.5) * tileSize[1] * resolution,
];
}
首先获取原点,分辨率,以及瓦片大小,在通过公式就算得出对应的瓦片中心点的经纬度坐标。
总结
记录下来得起因很简略,就是为了不便调试开发。尽管这个货色并不难,但须要你去理解 openlayer 的源码 api,因为官网文档并没有间接点明。
正文完
发表至: openlayers
2022-10-26