关于openlayers:ol根据xyz确定地图瓦片位置

53次阅读

共计 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,因为官网文档并没有间接点明。

正文完
 0