回答
互联网上有大量关于计算两对经纬度之间距离的信息。我们在我们的公共网站上使用这些计算,他们不是微不足道的理解/讨论(所以我不会在这里覆盖他们)。这就是说,它们很容易实现。
一旦你有一个返回距离的函数,你应该能够根据角之间的距离计算出地图的宽度和高度。
然后你可以从左上角计算你的点的水平和垂直距离。
现在,您可以通过左侧和您的点之间的距离来确定地图宽度的比例,并将该比率应用于像素宽度,并且左侧和点之间有像素点数量。对y轴重复。
(像素从左侧)=(以像素为单位的总宽度)*(左和您的点之间(地址解析距离)左侧和右侧之间/(地址解析距离))
(像素从顶部)= (以像素为单位的总高度)*((地理编码顶部和您的点之间的距离)/(顶部和底部之间的地理编码距离))
编辑:当您进一步研究时,您会注意到某些解决方案会呈现出比其他原因在于您近似于球面上两点之间的距离并将其映射到平面上。随着距离的增加,精确度会降低。对你最好的建议是首先尝试一下,看看它是否符合你的需求。
有许多不同的地图投影方案。你将不得不知道你的地图使用哪一个。
有关地图投影算法和正向/反向映射的更多信息,请查看this link。它提供了许多常用投影的公式。
我不需要太高的准确度,所以下面的解决方案可能就足够了。如果不是,转型将如何?哪些是projectino方案?到目前为止,我见过: UTM 横轴墨卡托投影 墨卡托 经度/纬度 – Jorge 2009-09-02 20:11:03
顺便说一句。我还编写了Lat/Lon和UTM转换公式。从Lat/Lon转换为UTM并以正确的方式应用解决方案(至少对于UTM投影)? – Jorge 2009-09-02 20:32:47
您的地图使用墨卡托吗?在选择正确的投影之前,您需要知道地图编码的内容。一旦你有正确的地理编码距离,mmayo的公式给你在地图上的正确像素。 – 2009-09-02 21:40:37
如果使用Equidistant Cylindrical Projection type map,这里是你需要做什么:
- 在这儿找到您的位置教程的纬度和经度:
http://lifehacker.com/267361/how-to-find-latitude-and-longitude - 输入的信息为以下公式:
x =(图像的总宽度,px)*(180 +纬度)/ 360
y =(图像的总高度,px)*(90-经度)/ 180
注意:当使用负经度的纬度时,确保加上或减去负数,即+( - 92)或 - ( - 35),这实际上是-92和+35 - 你现在有你的X和Y到你的图像上绘制
更多信息,关于这个公式和发现地图类型在这里:
http://www.progonos.com/furuti/MapProj/Dither/CartHow/HowER_W12/howER_W12.html#DeductionEquirectangular
你能告诉我如何计算从X,Y到纬度? – colin 2011-01-18 00:00:47
这里是为我工作,没有这么多的学士学位。
int x = (int) ((MAP_WIDTH/360.0) * (180 + lon));
int y = (int) ((MAP_HEIGHT/180.0) * (90 - lat));
lat,lon坐标是Android设备给我的。因此,它们应该与所有Google地球/地图产品使用的标准相同。
这是相当直接和简单的..让我解释它是如何可能的。
经纬度是在地球上绘制的虚线,以便您可以精确地查明世界上的任何位置。简单地说,它们是飞机的X和Y坐标。 纬度是一条从北到南的垂直线,北极90度,南极-90度。
另一方面,经度是一条从东到南的水平线,西部-180deg,东部180deg。
您可以将latLng转换为像素坐标,因为通过假设html容器的宽度是世界的宽度,同样适用于高度。
式 - 经度 - 像素
(givenLng*widthOfContainerElement)/360
其中360是在度总经度
式-Latitude - 像素
(givenLat*heightOfContainerElement)/180
其中180是总l atitude在程度
//Height is calculated from the bottom
你可以找到这个公式在这里的工作实施,在我的网站(它使用JavaScript只)
http://www.learntby.me/javascript/latLngconversion.php
让我知道如果你还需要什么澄清。
我已在此处添加了所需的信息 – 2012-12-22 14:00:47
就使这(对于墨卡托投影地图):
extension UIView
{
func addLocation(coordinate: CLLocationCoordinate2D)
{
// max MKMapPoint values
let maxY = Double(267995781)
let maxX = Double(268435456)
let mapPoint = MKMapPointForCoordinate(coordinate)
let normalizatePointX = CGFloat(mapPoint.x/maxX)
let normalizatePointY = CGFloat(mapPoint.y/maxY)
let pointView = UIView(frame: CGRectMake(0, 0, 5, 5))
pointView.center = CGPointMake(normalizatePointX * frame.width, normalizatePointY * frame.height)
pointView.backgroundColor = UIColor.blueColor()
addSubview(pointView)
}
}
我简单的项目添加协调的UIView:https://github.com/Glechik/MapCoordinateDrawer
<!DOCTYPE html>
<html>
<head>
<style>
#point{font-face:Arial; font-size:18px; color:#FFFF00; width:12px; height:12px;text-shadow: 2px 2px #000000}
#canvas {position: absolute; top: 0px; left: 0px; z-index: -2}
html,
body,
#canvas {
width: 100%;
height: 100%;
overflow: hidden;
margin: 0
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script>
$(window).on("load resize",function(e){
var w = $("#canvas").width();
var h = $("#canvas").height();
// New York, NY (https://maps.googleapis.com/maps/api/geocode/json?address=New%20York,%20NY)
var lat = 40.91525559999999;
var long = -73.70027209999999;
var x = ((w/360) * (180 + long)) - 9;
var y = ((h/180) * (90 - lat)) - 18;
$("#text").text('X:'+x+', Y:'+y);
$("#point").offset({ top: y, left: x });
});
</script>
</head>
<body>
<div id="text"></div>
<div id="point">▼</div>
<img id="canvas" border="0" src="http://friday.westnet.com/~crywalt/dymaxion_2003/earthmap10k.reduced.jpg">
</body>
</html>
- 1. 经度,纬度到XY坐标转换
- 2. 将纬度/经度转换为svg地图上的点
- 3. 在地图上将经度和纬度转换为X Y
- 4. 转换鼠标点击的经度和纬度上旋转球
- 5. 将MKMapRect.origin转换为经度和纬度
- 6. 地球纬度和经度在3D球体上的纬度和经度
- 7. 如何在2d世界地图上将经度和纬度转换为xy位置
- 8. 纬度和经度地址
- 9. Rails:Geokit错误地将IPv4地址转换为经度和纬度
- 10. 将纬度经度坐标转换为图像地图坐标
- 11. 谷歌地图经度和纬度
- 12. 从XY图像中找出纬度和经度
- 13. 黑莓<location>纬度和经度从谷歌地图纬度和经度
- 14. 将纬度经度转换为矩形上的x,y点
- 15. 在纬度/经度点之间更多地计算经度和纬度?
- 16. 用于在地图上显示地址的纬度和经度
- 17. 在谷歌地图上绘制多个纬度和经度
- 18. 计算距离另一纬度/经度点米的纬度和经度
- 19. 你如何确定地图上某个点的经度和纬度?
- 20. 如何转换经纬度?
- 21. 获取地图点击的纬度和经度
- 22. 绘制经度和纬度点的R地图
- 23. 将地址转换为经度和纬度
- 24. 如何将地址从Firebase转换为纬度和经度
- 25. 将地址转换为经度和纬度在php
- 26. 如何在arcgis android中将点转换为经度和纬度?
- 27. 转换经度/弧度的纬度/经度?
- 28. iphone谷歌地图 - 方向使用经度和纬度
- 29. 纬度经度的地址
- 30. 如何在Google地图中找到纬度和经度为一点的地址?
地图项目我们的3D到一个2D表面。由于无法将正方形完美地包裹到球体上,因此有不同的投影方法可以获得近似正确的结果。给定地图上的距离是非线性的,所以你的公式只是一个近似值。 – 2009-09-02 19:12:51
近似值适用于大多数距离。但我应该在帖子中澄清。 – Mayo 2009-09-02 19:15:17
是的,放大地图越多,结果就越准确。你应该看到一个城市级地图几乎没有差别,但是对于一个州级或更大的地图来说,这是显而易见的。 – 2009-09-02 21:39:24