如何创建一个指针始终指向某个 GPS 位置的指南针? (在安卓系统中)

发布于 2024-11-25 08:53:41 字数 171 浏览 0 评论 0原文

我想在 Android 中编写一个应用程序,您可以在其中看到一个始终指向某个 GPS 位置的指针。因此,当您转动手机或驾车行驶时,指针仍会指向 GPS 位置。

但我不知道如何使用 GPS 位置和指南针传感器数据进行计算。

任何人都可以给我一些如何开始的指示,或者可以举一个如何执行此操作的示例吗?

I would like to write a app in Android where you see a pointer that always point to a certain GPS position. So when you are turning your phone or driving around the pointer will still point to the gps position.

But I have no idea how to do the calculations with the gps position and the compass sensordata.

Can anyone give me some pointers how to get started or maybe have a example of how to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猫烠⑼条掵仅有一顆心 2024-12-02 08:53:41

为了实现这一点,您需要了解几件事:

  • 您想要指向哪里。
  • 你在哪里。
  • 您正在使用什么地图投影(米、度等)

使用 android LocationManager 并注册位置更新。当这些更新到达时,您需要提取位置和方位(也可以使用指南针作为方位)并将其转换为您正在使用的地图格式。通常这将是谷歌地图球形墨卡托变体。

有了这些信息,您可以使用三角学来计算您和标记位置之间的角度,并使用它在地图上绘制方向箭头,或者使用方位数据告诉您转向哪个方向。

To achieve this you will need to know several things:

  • Where you want to point to.
  • Where you are.
  • What map projection you are using (metres, degrees etc)

Use the android LocationManager and register for position updates. When these updates arrive you need to extract the position and bearing (could also use compass for bearing) and convert them to the map format you are using. Commonly this will be the Google maps spherical Mercator variation.

With this information you can use trigonometry to calculate the angle between you and your tagged location and use this to draw your direction arrow on a map, or with the bearing data to tell you which way to turn.

避讳 2024-12-02 08:53:41

与上述答案相同的起点,但不需要三角计算。只需调用现有方法。

  • 从 onLocationChanged(Location 类的方法)
  • 获得了要指向的坐标(纬度/经度)

的实际位置。您现在可以

  • 在 googleMaps 上创建覆盖图,并从您的位置到要指向的点绘制一条线。

或者,如果您想要更短的线(或箭头),

  • “bearingTo()”(同样来自 Location 类)会为您提供指向的方向。画一条线(或箭头)并将其旋转到这个方向

Same starting point as above answer, but no trigonometry calculation required. Just calls of existing methods.

You have

  • your actual position from onLocationChanged (method of the Location class)
  • the coordinates (lat/lon) to point to

You can now

  • create an overlay on googleMaps, and draw a line from your position to the point to point to.

or if you want a shorter line (or arrow)

  • "bearingTo()" (again from the Location class)gives you the direction to point to. Draw a line (or arrow) and rotate it to this direction
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文