java-在JPanel上绘制近距离GPS坐标
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-在JPanel上绘制近距离GPS坐标,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2085字,纯文字阅读大概需要3分钟。
内容图文
我面临一个类的问题,在该类中,我需要将GPS坐标动态转换并绘制为JPanel.我在解析的文件中有此本地库数据.结构为ID,县,图书馆名称,纬度,经度.
R1,Ramsey,Maplewood,45.0327,-93.0262
R2,Ramsey,Mounds View,45.1059,-93.2104
R3,Ramsey,New Brighton,45.06604,-93.19125
R4,Ramsey,North St. Paul,45.0105,-92.9968
R5,Ramsey,Roseville,45.0072,-93.1558
R6,Ramsey,Shoreview,45.0805,-93.1345
R7,Ramsey,White Bear Lake,45.0831,-93.0092
如您所见,这些位置非常靠近(170平方英里中的7个位置,最大距离为:15.5英里).我的代码目前可以从硬编码坐标(而不是GPS数据)正确地绘制和链接节点.我已经找到了将GPS纬度和经度转换为XY坐标的算法,但是一旦计算完成,所有对象都将打印在彼此的顶部,因为计算会导致同一XY,因为它是如此接近.该过程必须是动态的,因为我预计要使用的测试文件将使用42个位置.我如何为一个方程式做些什么,该方程式将使我的XY坐标有足够的多样性来进行像样的图形渲染而不是使用随机点?
解决方法:
What can I do for an equation that will give me XY coordinates that have enough variety to make a decent graphic rendering instead of using random points?
找到边界框.换句话说,在列表中找到最小的x和y坐标.在列表中找到最大的x和最大y坐标.这两点定义了边界框.
现在,将这些位置x,y坐标转换为图形x,y坐标.您最小的位置x,y坐标变为绘图坐标0,0.您最大的位置x,y坐标变为绘图坐标的宽度,高度.
为了防止缩放使图像失真,我们必须首先计算x坐标和y坐标的缩放因子.
scaling factor x = drawing width / (location maximum x - location minimum x)
scaling factor y = drawing height / (location maximum y - location minimum y)
然后,我们使用两个比例因子中较小的一个.
scaling factor = Math.min(scaling factor x, scaling factor y)
将位置坐标转换为工程图坐标的公式为:
drawing x = location x * scaling factor
drawing y = location y * scaling factor
位置和比例因子是两倍,因此您不会降低任何精度.您必须将图形x和图形y转换为整数,以便可以绘制它们.
绘图x从西向东递增.位置x可能从西到东增加.
图y从北向南增加.如果位置y从南到北增加,则在进行转换时必须考虑到这一点.
drawing y = drawing height - drawing y
您可能会希望在绘图区域中添加边距,以便在绘图区域的边缘都不会绘制任何位置.
假设您要有10个像素的边距.这将使实际绘图区域的宽度增大20个像素,高度增大20个像素.
然后,在绘制位置之前,将10个像素添加到图形x和图形y.
内容总结
以上是互联网集市为您收集整理的java-在JPanel上绘制近距离GPS坐标全部内容,希望文章能够帮你解决java-在JPanel上绘制近距离GPS坐标所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。