我计划为一个游戏的标记(PIN)建立一个在线地图,但我无法设置标记的正确纬度。
原始地图是一个2048*2048px的正方形
然后我得到了标记(成千上万)
地图坐标由0到100之间的x,y符号设置。0,0是地图的左上角,100,100是地图的右下角。x=50,y=50表示纬度=0°,lng=0°(图片中心)。
要将我的符号转换为经度,我使用这个JS函数,它工作得很好:
function longitude(x)
{
var lng = 0
if (x < 50) // Negative Longitude (West)
{
lng = (x - 50) / 50 * 180;
}
else // Positive Longitude (East)
{
lng = (50 - x) / 50 * 180;
}
return lng
}
但对于纬度,它不起作用,因为那些引擎使用墨卡托投影,而我不使用。
如果有人有正确的公式,我们将不胜感激:(
欢迎来到SO!
如果您使用的是Leaflet,您应该指定map选项crs
并使用L. CRS. Easy
:
一个简单的CRS,它将经度和纬度直接映射到x和y中。可用于平面地图(例如游戏地图)。请注意,y
轴仍然应该倒置(从下往上)。
这将避免万维网墨卡托投影,特别是纬度,这是一个特殊的计算,因为你已经计算出来了(见维基百科链接文章中的等式)。
然后,您就可以根据需要正确地映射x
和y
坐标,尤其是地图图像。
例如,假设您将地图图像设置为:
L.imageOverlay("imageUrl", [[0, 0], [256, 256]]).addTo(map);
(使其适合缩放级别0处的1个平铺)
然后你可以有这样的转换:
function longitude(x) {
return x / 100 * 256;
}
function latitude(y) {
return 256 - y / 100 * 256; // Still need to revert y.
}
我有完整的等矩形图像,可以很好地处理三个。js: 但我的图像实际上只包含180x180度(球体的一半),因此我尝试在不拉伸整个球体的情况下,在球形网格上部分应用方形纹理。我想这和纹理有关。抵消xyz参数,但我没有成功。虽然我可以继续填充图像以符合2x1等矩形标准,但我宁愿将此步骤从处理工作流中删除。 在下面,你会看到完整的等矩形图像和我正在努力工作的正方形图像。有人对如何做到这一点有任何线索吗?谢
我用的是Eigen v3。2.7. 我有一个中等大小的矩形矩阵(170x17)和行向量(170x1),我正试图用本征函数求解它们。Octave使用很好地解决了这个问题,但是Eigen为这些矩阵返回了不正确的值(但不是较小的值)-但是我怀疑这是我使用Eigen的方式,而不是Eigen本身。 根据Eigen文档,解算器适用于一般矩阵,并且非常健壮,但为了确保我也尝试过。结果是一致的。 Octave的是
我应该自己写方法吗?尽管我害怕不能解释一些事情,因为我的数学已经生疏了。或者我能为Java找到一个现成的实现吗?我有谷歌地图sdk在我的项目,但我找不到任何有用的东西。
我试图在现有画布中的特定框顶部添加一些红色矩形,与预期结果图像完全相同,但它们根本没有出现,因为我的代码显示了部署应用程序时当前不希望出现的结果。我的代码是在顶行和底行分别创建4个矩形,但我只想将其添加到框2-6的顶部,但我知道需要为框1顶部的红色矩形添加额外的代码 activity_main.xml MainActivity.java
我在AS3工作。 我有一个通用的矩形。这个矩形可以有任何长度、任何宽度和任何旋转。我正在尝试求解矩形四个角的x和y坐标。我知道矩形中心的坐标,我知道它的宽度、高度、最高点和最低点之间的y距离以及最远左侧和最远右侧之间的x距离,以及知道旋转。 我的代码目前看起来像这样(当然,对象是有问题的矩形,请记住,当我应用它时,它可以具有任何维度 - 这只是一种可能性。初始宽度和高度是实际的长度和宽度,而后面引
在我的应用程序中使用了谷歌地图V2。下面是描述映射片段的代码片段。 如何限制用户可以导航的地图?我试着用OnCamerachenglistener做这件事,但它看起来很丑,而且不稳定。(也许这是我的错)