繁体   English   中英

我想创建一个Android应用程序,其中包含提供路线的地图,但不包括Google地图

[英]I want to make an Android app with a map that provides directions, but not Google Maps

我想制作一个Android应用程序来加载我在建筑物内部创建的地图。 我想让它提供一个房间到另一个房间之间的路线。 如果可能的话,在楼层之间

我希望地图可以缩放,也可以点击。 即你可以点击你所在的位置,以及你想去的地方,应用程序将提供指示。 或者您在文本框中输入您所在的房间以及您想去的地方,并再次提供说明。

我偶然发现了允许您使用开源地图并将自己的节点添加到每个角落或参考地点的内容。 但经过一个小时的Google搜索后,我再也找不到该网站了。

有谁知道我怎么能做到这一点?

这是其中一个实例,其中的想法听起来很简单但实际上并非如此。 您需要解决许多任务,有些已经讨论过了。

1)如何塑造办公室。 这需要完成,以便您可以轻松建模,但文件很小。 它必须采用您的路径查找算法可以理解的格式。 这意味着在开发路径查找时,您将对数据进行更改。

2)位置查找/输入。 由硬件完成(gps不会削减它)或用户说出它们的位置。 可以通过放置在办公室周围的NFC和标签来完成,而不是理想的解决方案,标签必须是可见的。 用户可以输入他们的位置,但他们可能会丢失,不知道他们在哪里。

3)如何呈现数据,你可以写一个神奇的3D应用程序,显示任务不可能的建筑布局。 这将是六个月的自我工作! 请记住,您的地图是3D,道路地图往往是2D。 (有些飞过......)

4)进度跟踪。 该应用程序真的需要知道你是如何做到这一点,如果你走了它会告诉你回去的路线。 这在室内很难实现。 进度跟踪是PND(个人导航设备)制造商花费时间的一个领域,因为它真正影响用户对软件的信心。

在TomTom工作过,我可以说你可能会在这里工作多年。

由于这是一个拼贴项目,我可以建议一个更简单的项目吗?

使用2D地图,简单的基于网格的地图,有点像迷宫问题中的经典鼠标。 为路径查找实现A *。 完成后,如果您有时间延长原始计划,则可以。

我过去发现非常好的一本书是“通过实例编程游戏AI”。 ISBN 1-55622-078-2。 第8章是关于路径查找的,并且在A *上有很好的部分。

祝好运。 :)

虽然这可能不是您正在寻找的答案:

您总是可以编写一个执行此操作的应用程序。 如果您已经愿意在地图上定位节点,您可以假设编写一个使用(主要使用的)游戏路径算法的程序,例如A *,并从中找出路线。 这将是棘手的,但我认为通过放置节点和矢量映射它们与向量相关的成本(可能以英尺/米或类似的方式测量),您可能能够用A *设置它。 ..

很难说。 我尝试了一个快速的谷歌,也出现了空洞。

你可以创建一个MapActivity ,然后可以容纳一个MapViewMapView不能嵌入到任何其他Activity中 ),这是一个诚实的善良交互式地图,但它并不完全是全功能的。

MapView主要用于显示特定区域的地图,并在其上显示自定义叠加层。 您可以设置地图的焦点,缩放级别,是否显示流量数据以及其他一些次要选项。 但除此之外,你必须构建自己路线的叠加层。 转弯方向功能或任何东西都没有转弯。 它们只是“哑”的叠加。

Google DID最近更新了Google地图应用,以包含室内地图和导航。 他们提供了一个站点,您可以访问并提交建筑物的平面图 ,因此可以将其添加到官方应用程序中。

一旦您的平面图正式添加,您可以使用这样的Intent启动官方应用程序为您进行导航:

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("http://maps.google.com/maps?saddr=20.344,34.34&daddr=20.5666,45.345"));
startActivity(intent);

我在硕士项目期间遇到了同样的问题。 但是,我的解决方案并不是很完整,但这就是我计划的方式。 由于各种限制,我无论如何都无法完全实现它。 这可能听起来很复杂,但我不确定如何把它穿过。

  1. 静态地存储地图而不是动态存储 - 我的意思是,当有人想要从一个房间到另一个房间或从一个楼层到另一个房间时,图片/照片会弹出。 动态路由有点困难。 手动存放图片,以便弹出。

  2. 设计像Dijkstra算法那样的最短路径算法。 您将获得用于执行此算法的现成java程序。 使用此功能,您可以获取路线。 一旦地图可用,使其可点击并添加缩放选项应该不是一个大问题。

以某种方式结合这两个步骤(对不起,这里没有代码'因为我自己无法想出一个)。 正如理查德在上面所说,我在脑海中实现了它(我的整个项目都基于此)。 NFC基本上是RFID技术,因此是无线的。 您可以使用802.11 b / g / n来实现它的网络端。 如果您需要更多帮助,请告诉我。 将尽我所能帮助。

祝一切顺利。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM