问题标签 [mercator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1127 浏览

d3.js - 计算墨卡托 d3 缩放以匹配传单缩放级别

给定 Leaflet 缩放级别 (0..22),我将如何计算 geoMercator 投影的 D3 缩放值?在 zoom=0 时,整个世界都适合单个图块 (256x256)。在瓦片中,世界大小为 2^zoom x 2^zoom 瓦片。

0 投票
0 回答
591 浏览

php - 使用 PHP 将纬度/经度转换为 Web 墨卡托像素

我正在尝试使用网络墨卡托投影将 WGS 84 坐标转换为像素。我想在给定的地图上打印位置。如果地图是整个世界的图像,我遇到了一个 PHP 函数,它可以正常工作。我一直在努力扩展此功能,因此如果地图只是一个剪辑(例如北美),它也可以工作。我已经找到了计算宽度的解决方案,但我未能调整高度计算。我该如何更改功能?

$top是地图图像的左上角[Array]$bottom右下角/$this->width是地图宽度,$this->height是地图高度)

首先十分感谢!:)

0 投票
0 回答
315 浏览

javascript - google maps api瓦片坐标计算错误

下面的代码是计算一个位置的像素和瓦片坐标。使用 256 像素的瓷砖效果很好。但是,如果您使用 512px 平铺世界和像素坐标可以正常工作,但平铺坐标不会改变,这是不可能的。

256px 平铺大小

512px 平铺尺寸

这是计算瓷砖坐标的代码

我试图修改它,但我相信如果坐标靠近瓷砖的边缘,它可能会给出错误的瓷砖坐标(比如旁边的瓷砖)。可能是因为太多的分裂和四舍五入。

有人遇到过这个问题并知道解决方案吗?

https://developers.google.com/maps/documentation/javascript/examples/map-coordinates

https://jsfiddle.net/ergec/yyat3gux/

0 投票
1 回答
428 浏览

google-maps - Google Maps API 中的其他预测?

我正在使用 lat/lons 和 Google Maps API 绘制数据。但是,我的一些数据位于高纬度,并且没有绘制出来,因为谷歌地图使用了 85 度截断的墨卡托投影。有没有办法解决?

这是我目前的地图:http ://erbweather.com/choosestation_GSOD_global.html

对于南极洲,我使用的是完全不同的地图:http: //erbweather.com/choosestation_GSOD_Antarctica.html

有没有办法将所有数据都放在一个(美观且响应迅速)的地图上?

0 投票
1 回答
134 浏览

r - 从 R 中的范围对象列表中获取墨卡托坐标

我有一个包含多个多边形的形状文件,我需要在不同的文件或列表文件中 获取每个多边形的墨卡托坐标。在这里,我的 shapefile 中每个多边形的范围列表

我需要为列表中的每个范围生成一个墨卡托坐标列表,或者一个包含每个文件的坐标的文件。到目前为止,我唯一的选择是栅格化每个范围,分配 CRS 坐标,然后转换为墨卡托,如下所示

mbb 类:RasterLayer 尺寸:12、12、144(nrow、ncol、ncell)分辨率:50、50.3(x、y)范围:-8869218、-8868618、34170.81、34774.41(xmin、xmax、ymin、ymax)坐标。参考。: +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs

这种方法的唯一问题是速度很慢,特别是当我需要获取数百个多边形范围的墨卡托坐标时。

编辑:我想要的是将投影从 UTM 更改为墨卡托,我正在考虑一个允许为范围列表执行此操作的函数,而不是如上例所示单独执行。

0 投票
1 回答
83 浏览

javascript - 如何将地图转换为 10 平方英里的瓷砖并找出哪个瓷砖纬度/经度属于哪个瓷砖?

事实证明这比我想象的要复杂……地图投影、墨卡托坐标、EPSG:4326 等。

我想做的事。

  1. 给定 lat, long 找出它们属于哪个图块。
  2. 给定一个瓦片,找到它的经纬度范围。
  3. 瓷砖应该长约 10 英里。

我不能简单地将纬度/经度除以某个数字以获得 10 英里的瓷砖,因为从赤道到两极的经度之间的距离变化。

如果我放弃 10 英里街区的概念,只使用虚拟街区,那就没问题了。

试过看看谷歌地图是怎么做的,没有意义。

他们基本上以某种方式将纬度/经度转换为 0-256、0-256。然后计算某种称为像素值的值,不确定那是什么,coords * 2 ^ zoom level。然后将其除以 256 得到图块编号。

0 投票
0 回答
252 浏览

swift - openstreetmap 数据的墨卡托投影

我正在尝试为 iOS 设备开发塞浦路斯地图。我使用了http://openstreetmapdata.com中的数据来绘制海岸线(我使用了墨卡托投影导出的数据,如网页中所示)。我还使用了来自https://www.openstreetmap.org的数据来绘制地图的道路。我使用 Swift 函数 MKMapPointForCoordinate() 将后者转换为笛卡尔坐标。此函数使用墨卡托投影将地理坐标转换为笛卡尔坐标。但是,这些派生数据与https://www.openstreetmap.org中的数据不匹配(即,它们位于不同的区域)。在http://openstreetmapdata.com/info/projections#mercator据说 EPSG 代码 3857 用于墨卡托投影。此外,在Apple Map (MKMapView) Mercator Projection 的 EPSG中指出,Apple 的上述功能使用相同的 EPSG 代码。有谁知道到底是什么问题?

0 投票
2 回答
335 浏览

javascript - 创建没有中间字符串的复杂 SVG

我正在实时创建/编辑大量(100 到 1000 秒)SVG 路径元素,它们具有整数坐标,以响应用户输入(拖动)。

我可以并且确实汇集了路径元素,因此在这方面它可以最大限度地减少对象+垃圾的创建。但是,似乎很多中间字符串是通过重复使用+=. 此外,将坐标作为数字,将它们转换为字符串,然后系统必须在内部将它们解析回数字,这似乎有点奇怪。

这似乎有点浪费,我担心会出现卡顿,因为在拖动每个鼠标鼠标的过程中都会重复上述操作。以上任何一种情况都可以避免吗?


上下文:这是http://projections.charemza.name/的一部分 ,来自https://github.com/michalc/projections,它可以在应用墨卡托投影之前旋转世界地图。

0 投票
1 回答
162 浏览

c# - 使用 MapControl 的 UWP 应用程序中的迷你概览图

我正在尝试构建一个与完整 MapControl 视图同步的迷你概览/方向图,如下所示:(全屏截图

这张照片

我在尝试根据 MapControl 的大小、位置和缩放来计算迷你地图内的红色小矩形的宽度、高度和位置时遇到了麻烦。

它应该与 MapControl 的视图同步,点击小地图也应该改变 MapControl 的 CenterPoint。

完整地图是 UWP 中的 MapControl,而迷你地图只是静态图像上的 Border UIElement。

我正在使用以下公式。它们有效但不准确。误差幅度非常明显,特别是对于大变焦。

计算红色矩形的位置和大小:

以下是用于将 MapControl 导航到在概览图上单击的点。XY是相对于概览图单击的点。

我的计算有什么问题?为什么会有相当明显的误差幅度?

0 投票
0 回答
163 浏览

three.js - 如何计算关于墨卡托投影的地球轨道?

我正在尝试在 three.js 中创建一个小型交互式 UFO 绕地球飞行的场景。

我认为最好在地图的 2D 投影(如小地图)上控制 UFO,将像素坐标转换为 lat/lng 坐标,最后将 lat/lng 转换为可用于 3D 场景的向量。

事实证明,事实并非如此。

如果 UFO 绕赤道飞行(+/- 几度),效果很好,但可以肯定的是,我忘记将投影应用于我的 2D 控件:

在此处输入图像描述

现在我有点迷路了。我的控件(WASD 键)基本上设置了小地图上 UFO 的速度和旋转,但我必须为播放器添加某种“校正”。这就是目前设置值的方式:

有没有办法创造一个“真实”的轨道,这样我的 UFO 就不会总是飞过两极?或者是否有更好的方法来处理 UFO 的轨道(可能没有小地图)?

到目前为止,这是完整的动画代码: