gpt4 book ai didi

google-maps - 计算静态谷歌地图图像的边界框

转载 作者:行者123 更新时间:2023-12-03 23:56:42 25 4
gpt4 key购买 nike

假设我从谷歌静态 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 Map 客户端 map 。参见示例:
https://jsfiddle.net/1wy1mm7L/6/

关于google-maps - 计算静态谷歌地图图像的边界框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44784839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com