我在此链接从@DanS 获得了以下代码 如何显示-a-map-still-image-file-with-a-moving-current-location
I got the below code from @DanS at this link how-to-display-a-map-still-image-file-with-a-moving-current-location
onCurrentPosition(Location current){
double hypotenuse = upperLeft.distanceTo(current);
double bearing = upperLeft.bearingTo(current);
double currentDistanceX = Math.cos(bearing) * hypotenuse;
// "percentage to mark the position"
double currentPixelX = (currentDistanceX / upperLeft.distanceTo(lowerRight) * Math.cos(upperLeft.bearingTo(lowerRight))) * mapWidth;
moveIndicatorX(currentPixelX);
}
以下是值:
这是位置、斜边(距离)、方位角(方位角)的在线计算器
Here are the calculator online for Location, hypotenuse(Distance), bearing(Azimuths)
我得到了以下结果:
想请大家:
顺便说一句,我打算用它来计算给定现实生活 LatLng(current) 的位置,并与我的静止图像映射将静止图像的左上角和右下角结合到现实生活 LatLng 中.
By the way, I am planning to use that to compute the location of a given real life LatLng(current) against with my still image map which bonded the upperLeft and lowerRight corners of the still image into real life LatLng.
如果您想查看实际的 &预期的输出,并希望轻松了解整个情况.请参考此链接-> 如何将当前位置标记为静止图像地图
If you want to see the actual & expected output and want to easily understand the whole picture. Please refer to this link -> How to mark the current location into a still image map
这是我实际使用的代码,不是之前贴的伪代码:
This is the actual code I'm using, not pseudo code posted previously:
Location upperLeft = new Location("");
upperLeft.setLatitude(41.866514127810355);
upperLeft.setLongitude(-87.6720142364502);
Location lowerRight = new Location("");
lowerRight.setLatitude(41.83397145565242);
lowerRight.setLongitude(-87.62824058532715);
Location current = new Location("");
current.setLatitude(41.850033);
current.setLongitude(-87.65005229999997);
double hypotenuse = upperLeft.distanceTo(current);
double bearing = upperLeft.bearingTo(current);
double currentDistanceX = Math.cos(bearing * Math.PI / 180.0) * hypotenuse;
// "percentage to mark the position"
double totalHypotenuse = upperLeft.distanceTo(lowerRight);
double totalDistanceX = totalHypotenuse * Math.cos(upperLeft.bearingTo(lowerRight) * Math.PI / 180.0);
double currentPixelX = currentDistanceX / totalDistanceX * 512;
System.out.println(currentPixelX); // 259.3345493341548
您计算出来的答案看起来有点不对劲.要计算 Y 更改复制所有 X 标记的计算和变量以使用 Math.sin()
而不是 Math.cos()
.
Your calculated answer looks a bit off.
To calculate Y change copy all the X marked calculations and variables to use Math.sin()
instead of Math.cos()
.
这篇关于如何计算斜边和方位的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!