【发布时间】:2013-01-30 19:43:10
【问题描述】:
我已经编写了一个与 overlay.getTileUrl(tileCoord,zoom) 一起使用的平铺图像生成器,该生成器对于地图类型 Road_Map 可按预期工作,缩放级别为 21
function tile2lng(x,z) { return (x/Math.pow(2,z)*360-180); }
function tile2lat(y,z) { var n=Math.PI-2*Math.PI*y/Math.pow(2,z);
return (180/Math.PI*Math.atan(0.5*(Math.exp(n)-Math.exp(-n)))); }
在 lat/lng 37.21 / -77.26
当卫星地图缩放到 18 级时,请求的叠加图块的图块坐标计算为 lat/lng 27.37 / -77.26
实际上,加载地图时似乎有两次传递。首先正确请求平铺 lat/lng,然后发生 Projection_Changed 事件,然后重新请求平铺但 lat/lng 计算不正确。在地图缩放 18 到 21 时显示的卫星图块的投影似乎不是标准的 Google 墨卡托投影。 overlay.getTileURL(coord,zoom) 应该如何检测到这种变化?
当地图缩放 18 到 21 时,计算卫星图块的纬度/经度的正确方法是什么?
【问题讨论】:
-
缩放 18 的投影与其他缩放级别没有区别。您使用的是哪种叠加类型? (我猜这是一个 ImageMapType )。如果是这样,您的 getTileUrl 函数应该接受 (Point: (x:number, y:number)) 作为参数并返回一个 URL 作为指向自定义图块的字符串。请发布您的完整 getTileUrl() 函数。
-
请参见 [link]vafwis.org/fwis/GoogleMaps/testLatLngZoom.html 的示例,该示例从缩放 17 开始。缩放到 18 并且平铺坐标到 lat/lng 给出了错误的位置
标签: google-maps-api-3 zooming satellite