作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我从谷歌静态 map API 请求这张图片
https://maps.googleapis.com/maps/api/staticmap?center=52.591370,-2.110748&zoom=18&size=600x600&maptype=satellite&markers=color:blue|52.591370,-2.110748
我得到一个以 52.591370,-2.110748 为中心的 600px x 600px 图像。给定中心、图像大小和缩放级别,我如何计算 lat lng 坐标中图像的边界框。更具体地说,如何计算左下角和右上角的 lat/lng。
我做了一些研究并查看了墨卡托投影,但文章一直提到在这种情况下不相关的瓷砖尺寸。
任何人都可以帮忙吗?
最佳答案
const _C = { x: 128, y: 128 };
const _J = 256 / 360;
const _L = 256 / (2 * Math.PI);
function tb(a) {
return 180 * a / Math.PI
}
function sb(a) {
return a * Math.PI / 180
}
function bounds(a, b, c) {
null != b && (a = Math.max(a, b));
null != c && (a = Math.min(a, c));
return a
}
function latlonToPt(ll) {
a = bounds(Math.sin(sb(ll[0])), -(1 - 1E-15), 1 - 1E-15);
return {
x: _C.x + ll[1] * _J,
y: _C.y + 0.5 * Math.log((1 + a) / (1 - a)) * - _L
}
}
function ptToLatlon(pt) {
return [tb(2 * Math.atan(Math.exp((pt.y - _C.y) / -_L)) - Math.PI / 2),(pt.x - _C.x) / _J]
}
function calculateBbox(ll, zoom, sizeX, sizeY) {
const cp = latlonToPt(ll);
const pixelSize = Math.pow(2, -(zoom+1));
const pwX = sizeX*pixelSize;
const pwY = sizeY*pixelSize;
return {
ne: ptToLatlon({x: cp.x + pwX, y: cp.y - pwY}),
sw: ptToLatlon({x: cp.x - pwX, y: cp.y + pwY})
}
}
关于google-maps - 计算静态谷歌地图图像的边界框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44784839/
leaflet:一个开源并且对移动端友好的交互式地图 JavaScript 库 中文文档: https://leafletjs.cn/reference.html 官网(英文): ht
我是一名优秀的程序员,十分优秀!