c# - 指南针通常向我指示北方。但我想从中展示另一种方式(?)

标签 c# windows-phone-7 compass-geolocation

我正在用 C# 为我的 Windows Phone 7 开发一个应用程序。 我想用指南针向我展示朝拜方向(或我想要的方向)。 我怎样才能做到?我可以用 lang 和 latitute 从我的位置计算朝拜方向的度数。(例如结果是北偏东 150 度)

但是,我无法为其绘制方向线。它显示的是北方,而不是我想要的方向。 所以现在我使用这段代码来画线:

magneticLine.X2 = magneticLine.X1 - (200 * Math.Sin(MathHelper.ToRadians((float)compassReading.MagneticHeading)));

magneticLine.Y2 = magneticLine.Y1 - (200 * Math.Cos(MathHelper.ToRadians((float)compassReading.MagneticHeading)));

你能帮我看看我该怎么做吗?谢谢。

最佳答案

目前您构建它的方式只是使用屏幕中心作为原点,然后渲染一条长度始终为 200 像素的线。在画线之前,您需要调整/篡改度数读数(这就是为什么它没有指向正确的方向)。

此外,一旦您认为正确,就可以使用 Windows Phone 模拟器在麦加的 Kaaba 周围绘制 GPS 点(即在 Kaaba 周围画一圈点,然后运行模拟)。这将允许您查看您的解决方案是否适用于 360* 半径范围内的个人。

此外,这个增强现实工具包可以帮助您,因为它在根据您的 GPS 位置计算方向时为您做一些数学运算:http://gart.codeplex.com/

希望对您有所帮助。如果看完上面的内容你还是卡住了,我可以码出来给你,让你有更好的理解。

最后,确定范围:http://www.jeffblankenburg.com/2011/11/04/31-days-of-mango-day-4-compass/

这是一个关于如何制作指南针的教程,在文章的底部可以下载可用的源代码。祝你好运!

关于c# - 指南针通常向我指示北方。但我想从中展示另一种方式(?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13792346/

相关文章:

c# - 如何在不影响 "last write time"的情况下更改文件

windows-phone-7 - window 电话 8 : "The drive cannot locate a specific area or track on the disk."

java - 准确(方位角)罗盘方向 Android 3.2 平板电脑

c# - 如何获取本地网络上运行我的程序的主机的 IP 地址

c# - 数据库设计头脑 Storm : Sale Prices

drag-and-drop - 在 Windows Phone 7 Mango 中拖放

android - 使用方向传感器指向特定位置

c# - 目标航向的转向

c# - 检测Canvas上的两个控件是否发生碰撞

c# - 处理后退按钮,在 WP7 中更改页面