Jor*_*rge 26 gps geocoding latitude-longitude coordinates
如果我有一个尺寸为sizeX,sizeY的jpeg地图
和地图上的一些校准点(X,Y,Lon,Lat)
使用给定的经度/纬度对计算地图中相应XY点的算法是什么?
Gub*_*ron 19
这对我有用,没有那么多bs.
int x = (int) ((MAP_WIDTH/360.0) * (180 + lon));
int y = (int) ((MAP_HEIGHT/180.0) * (90 - lat));
Run Code Online (Sandbox Code Playgroud)
Android设备为我提供了lat,lon坐标.所以它们应该与所有Google Earth/Map产品使用的标准相同.
小智 11
如果使用等距圆柱投影类型地图,您需要执行以下操作:
互联网上有大量关于计算两对纬度和经度之间距离的信息.我们在公共网站上使用这些计算,并且理解/讨论并不容易(所以我不会在这里尝试覆盖它们).也就是说,它们很容易实现.
一旦你有一个返回距离的函数,你应该能够根据角之间的距离来计算地图的宽度和高度.
然后,您可以从左上角计算点的水平和垂直距离.
现在,您可以找出左侧和点之间的距离表示地图宽度的比率,将该比率应用于像素宽度,并确定左侧和点之间的像素数.重复y轴.
(左侧像素)=(总像素宽度)*((左侧和您的点之间的地理编码距离)/(左侧和右侧之间的地理编码距离))
(顶部像素)=(总像素高度)*((顶部和点之间的地理编码距离)/(顶部和底部之间的地理编码距离))
编辑:当你进一步研究时,你会注意到一些解决方案将提供比其他解决方案更准确的结果,因为你是近似球面上两点之间的距离并将其映射到平面上.随着距离的增加,精度会降低.对您提出的最佳建议是先尝试一下,看看它是否符合您的需求.
这是相当直接和简单的..让我解释它是如何可能的.
纬度和经度是在地球上绘制的虚线,以便您可以准确地确定世界上的任何位置.简单地说它们是飞机的X和Y坐标.纬度是一条从北向南延伸的垂直线,北极为90度,南极为-90度.
另一方面,经度是一条从东到南的水平线,西面为-180度,东面为180度.
您可以将latLng转换为像素坐标,因为假设html容器的宽度是世界的宽度,同样适用于高度.
公式 - 经度 - 像素
(givenLng*widthOfContainerElement)/360
Run Code Online (Sandbox Code Playgroud)
其中360是以度为单位的总经度
公式 - 纬度 - 像素
(givenLat*heightOfContainerElement)/180
Run Code Online (Sandbox Code Playgroud)
其中180是度数的总纬度
//Height is calculated from the bottom
Run Code Online (Sandbox Code Playgroud)
你可以在我的网站上找到这个公式的工作实现(它只使用JavaScript)
http://www.learntby.me/javascript/latLngconversion.php
如果您仍需要任何澄清,请与我们联系.