当前位置: 首页 > 知识库问答 >
问题:

地图投影像素到栅格比例?

谯嘉胜
2023-03-14

我已经使用Google Maps API V3创建了一个自定义地图。这是一幅虚构世界的矩形地图,而不是真实世界中的任何东西。

我一直在读关于如何在自定义谷歌地图中使用投影的文章。我需要使用投影,因为使用投影放置标记和区域,它们不会水平重复。总之,我从教程中提取了以下代码

var tilesize = 256;

function MyProjection(){}

MyProjection.prototype.fromLatLngToPoint = function(latLng)
{
    var x = latLng.lng() * tileSize;
    var y = latLng.lat() * tileSize;
    return new google.maps.Point(x, y);
};

MyProjection.prototype.fromPointToLatLng = function(point)
{
    var lng = point.x * (1.0 / tileSize);
    var lat = point.y * (1.0 / tileSize);
    return new google.maps.LatLng(lat, lng);
};

function LatLngToPixels(latLng)
{
    var pnt = MyProjection.prototype.fromLatLngToPoint(latLng);
    return [pnt.x * 8, pnt.y * 8];
}

function PixelsToLatLng(pxs)
{
    var pnt = {x: pxs[0] / 8, y: pxs[1] / 8};
    return MyProjection.prototype.fromPointToLatLng(pnt);
}

我已经把它应用到我的地图上,它似乎起作用了。然而,我正在试图弄清楚如何改变投影的比例。当我放置这样的标记时:

new google.maps.Marker(
{
    map: map,
    position: new google.maps.LatLng(0, 0)
});

标记被放置在地图的左上角。如果我这样做:

new google.maps.Marker(
{
    map: map,
    position: new google.maps.LatLng(1, 1)
});

标记被放置在右下方。

所以我基本上有一个最小的经度和纬度为0,最大的为1。我如何改变上面的函数,使规模更易于管理?比如0到90或者0到180?在真实世界的经度和纬度坐标上更有意义的东西?或者这是不可能与预测?我有点被预测的想法搞糊涂了,他们的最终目的到底是什么,所以也许我错过了重点...

共有1个答案

吕高昂
2023-03-14

投影的目的是将3D物体(如行星)显示在2D表面(如一张纸或计算机屏幕)上。

下面是一个包含墨卡托投影对象的Google示例。注意,Google Maps API V3使用了世界坐标的概念,在缩放级别为0的256x256像素的单个瓦片上用它表示整个世界,然后根据缩放级别放大,这样

像素坐标=世界坐标*Math.pow(2,zoomLevel)

 类似资料:
  • 有很多关于3D的opengl投影矩阵的很棒的教程,但我不是在做3D。我真的很难根据自己的喜好进行正交投影设置。 int宽=320;int高=480; 我使用这些设置创建了一个视图投影矩阵。 创建此视图和投影矩阵并将它们传递给gpu之后。 然后我创建一个从的四边形,以便它的原点位于中心。 然后我为四边形制作一个比例矩阵,这样我就可以在屏幕上看到它了。它呈现为一个完美的正方形,但当然glViewpor

  • 我必须将一些投影光栅(具有ndvi值)转换为csv或excel文件。我想保持网格形式,第一行作为公制lon值,第一列作为公制lat值。在交叉点应该有ndvi值。 我通常用“as”。数据frame(光栅,xy=T)将值导出为数据帧,但在这种情况下,我将获得一种值矩阵。 我想要的 安然后,write.csv....

  • D3默认包括了一些常见投影,如下所示。众多的(不太常用的)投影在扩展地理投影插件和多面体投影插件中是可用的。 由D3提供的大多数投影都是通过d3.geo.projection来创建并配置的,你可以旋转这个地球,缩放或转换画布等。除非你正在执行一个新的原始投影,否则你可能不会用D3.geo.projection来构造,但是你有可能使用这个配置方法。 d3.geo.projection(raw) 从指

  • 不是阅读或解释地图投影的专家。我有以下描述的数据集。 坐标在Albers等面积圆锥曲线投影中,投影设置如下:刻度=1;假Easting(m)=5000000;假北移(m)=0;经度原点=20;纬度原点=0;标准平行线1=45;标准平行线2=55,椭球为WGS 84。 它是+PROJ=LONLAT+DATUM=WGS84的等价物吗 谢谢你的帮助。

  • SuperMap iClient for OpenLayers 通过设置 map 中 view 属性的 projection 参数来支持多投影。例如: var map = new ol.Map({ view: new ol.View({ projection: 'EPSG:4326' }); }); projection 参数除了支持 EPSG code 字符串之

  • 我正在将Bostock的美国地图集(未过滤的美国各州shp文件)中的地图文件转换为topojson。最后我得到了这张地图。有人知道为什么吗? 我的投影代码:var svg=d3.select("#交互式")。插入("svg")。attr("宽度",w)。attr("高度",h); 我尝试过的原始文件(做同样的事情):12,转换文件:12,