日期:2014-05-16  浏览次数:20389 次

请教一个问题,如何把一个已知的经纬度转化为屏幕坐标?
请教一个问题,如何把一个已知的经纬度转化为屏幕坐标?
例如113.59,23.55如何把他转化为当前的屏幕坐标?
各位大哥能帮帮小弟吗?
------解决方案--------------------
你应该开发的是gis吧。查看它的api获取当前屏幕的上下左右四个点坐标,getExtent()类似的方法。这样就取得了地图模块的矩形,你可以轻易的获取地图div的top left 以及width和height。这样通过简单的运算就能算出。。
举个例子,比如说你的地图div width:500px,height:500px,left:100px,top:100px。。你通过地图api得到的当前地图范围四个点(110,20),(110,30),(120,20),(120,30)。。你所要取得点为(113,23)。。。。。该点的left:100+500*(113-110)/(120-110)         top:100+500*(23-20)/(30-20)。。。大概的思路就是这样,语文学的不好不会太表达,希望你能看懂。
------解决方案--------------------
不好意思,有点小问题,top应该是100+500*(30-23)/(30-20)
引用:
你应该开发的是gis吧。查看它的api获取当前屏幕的上下左右四个点坐标,getExtent()类似的方法。这样就取得了地图模块的矩形,你可以轻易的获取地图div的top left 以及width和height。这样通过简单的运算就能算出。。
举个例子,比如说你的地图div width:500px,height:500px,left:100px,top:100px。。你通过地图api得到的当前地……

------解决方案--------------------
说屏幕是不可能的。在浏览器窗口之外,或者是窗口标题条、滚动条上那些“屏幕”位置,你能画吗?
只要说在图片中定位就好了。对图片和屏幕来说,只有X,Y坐标。
不管你的图片是个地球仪还是某个地区的图片,你得搞清楚那个经纬度坐标应该对应你这图片上哪一个相对X,Y坐标所在的点。
可以到百度地图或谷歌地图里面输入经纬度坐标,找到在地图上的那一点,和你的图片进行比对,找出在你图片上对应的位置,然后通过CSS设置一个父DIV容器,在里面放置图片,和一个position=relative的DIV层,LEFT和TOP就设为前面你所找到的X,Y坐标,这个DIV里面放置一个透明的GIF图片(圆点或三角或其它坐标标注图形都可以,网上就能找到),就可以了。
如果想动态响应任何经纬度坐标(如果你的这个图片中能存在的话),可以进行计算,方法是根据你这个图片四个角对应的实际经纬度坐标,和你要响应显示的经纬度坐标进行缩比计算:
图片内目标X坐标=取绝对值(目标经度-图片左边对应经度)/取绝对值(图片右边经度-图片左边对应经度)* (图片的宽度)
因为经度是从子午线向两个相反方向分东经西经的,所以你的坐标要搞清是在东经范围,还是西经范围,任意一面都好说,只有当跨越子午线时需要注意东经30度减西经30度应该是正30减负30等于60度的关系,不要减成0度了。
纬度也类似,只是以赤道线分南北纬。如下就得到了目标点在图片内的Y坐标。
图片内目标Y坐标=取绝对值(目标纬度-图片上边对应纬度)/取绝对值(图片下边纬度-图片上边对应纬度)* (图片的高度)。

------解决方案--------------------
自动响应的,同我前面说的手工查找定位的CSS设置方法一样,只是通过JS计算之后把新的坐标点更新到这个点对应的DIV层CSS的TOP和LEFT属性就可以了。通过引用相同的CLASS,可以设置多个DIV显示多个坐标,只要分别设置不同的TOP,LEFT就行了。