谷歌墨卡托投影不是真正的墨卡托,如何在 SVG 上更正将 lat long 转换为 x,y
Posted
技术标签:
【中文标题】谷歌墨卡托投影不是真正的墨卡托,如何在 SVG 上更正将 lat long 转换为 x,y【英文标题】:Google Mercator projection is not a real Mercator, how to correct to convert lat long to x,y on SVG 【发布时间】:2013-11-30 16:05:36 【问题描述】:根据这篇帖子Convert lat/lon to pixel coordinate?,它适用于真正的墨卡托投影。
我在使用 openstreet 地图 的 svg 地图时遇到问题,它使用“Google Mercator projection with simplification on grid(1000)”。
我尝试在我的法国地图上绘制一些城市,所有点都在这里,但不完全是它们应该在哪里看到图片
如您所见,这些城市的位置并不好(如有必要,您可以在谷歌地图上进行比较)
关于如何调整 ref 中对帖子的响应中提供的代码,以考虑这 2 个不同的墨卡托投影之间的差异有什么想法吗?
提前致谢
编辑:
城市坐标:
var cities =
0:
cname: 'Paris',
lat: 48.856614,
lng: 2.3522219000000177
,
1:
cname: 'Lyon',
lat: 45.764043,
lng: 4.835658999999964
,
2:
cname: 'Bordeaux',
lat: 44.837789,
lng: -0.5791799999999512
,
3:
cname: 'Bastia',
lat: 42.697283,
lng: 9.450880999999981
,
4:
cname: 'Calais',
lat: 50.95129000000001,
lng: 1.8586860000000343
,
5:
cname: 'Menton',
lat: 43.774481,
lng: 7.497540000000072
,
6:
cname: 'Brest',
lat: 48.390394,
lng: -4.4860760000000255
; //EO cities
该 svg 是基于 openmapstreet 的 pdf 在 Inkscape 中创建的,代码有点长,我将它复制粘贴到这个小提琴中(因为我没有附加 Raphel,所以这不起作用)http://jsfiddle.net/dqsH3/4/。
您可以在此处查看原始 pdf openstreetmap.fr/f/France-regions-01-01-2013-1000.pdf
【问题讨论】:
您能否提供指向该 SVG 文件的链接,或有关如何重新创建它的说明?还包括你用来解冻城市的实际坐标。否则,我们将没有任何工作可做。 在帖子末尾查看我的编辑 小提琴不起作用。当我单击运行时,没有任何反应。这正常吗? 是的,RapahelJS 没有附加 为什么没有附加RaphaelJS?我们如何查看错误? 【参考方案1】:简化之处在于它使用 wgs 84 基准面,地图无法显示两极。您可以尝试来自法国的免费 shapefile。来源:http://en.wikipedia.org/wiki/Google_Maps。我得到了这张带有 Maxmind 数据库和您的积分的地图。
【讨论】:
在这种特殊情况下,我有一些限制:我不能像 GoogleMaps 那样使用形状文件和 Tiles 系统,并且必须同时使用 RaphaelJS 和 SVG,GoogleMaps API 或 3Djs 之类的替代方案是不可能的。 Vincently 公式计算 2 点之间的距离,这不是我所需要的。 谢谢,但正如我在之前的评论中所说,我不能使用多边形(像你一样)但是路径,我必须只使用带有 SVG 路径和 jQuery 1.8.3 的 RaphaelJS,其他使用其他工具的替代品在这种特定情况下是不可接受的(没有形状,没有多边形,所以没有形状文件)。以上是关于谷歌墨卡托投影不是真正的墨卡托,如何在 SVG 上更正将 lat long 转换为 x,y的主要内容,如果未能解决你的问题,请参考以下文章
google map中影像地图是墨卡托投影,矢量地图是高斯投影,请问这两种地图是如何匹配的?