如何为Android构建商场地图

5

我希望为一家商场构建一款Android应用程序,以便用户可以在代表商场每层楼的地图上进行导航,并计算出他的位置和所选位置之间的最短路径。该商场位于中东地区,我听说过Google室内地图,但我认为无法使用它,那么我需要什么来为该商场制作一个应用程序?我能把它做成3D的吗?任何有关此事的建议或文章都可以提供帮助。


看一下这个问题:https://dev59.com/N2XWa4cB1Zd3GeqPOpoA#11280176 - Igor F.
2个回答

3
这并不是对你问题的一个好回答,但我认为它会节省你一些工作。你所描述的应用程序将会有一些问题,主要是如果你想在商场地图上显示用户的位置并计算最短距离。如果你的商场是室内的,你如何获取用户的位置呢?除非到处都有窗户,否则室内GPS并不是很可靠。此外,你需要一个三维定位来确定用户所在的楼层。
作为@hsander思路的一个衍生,你可以让用户拍摄附近商店的标志/标识,并使用图像处理(例如Google Goggles)进行匹配,找出用户所在的位置。你无法实时显示用户的移动,但这将是一个"免费"的解决方案,而且你将能够解决多层楼的问题。
如果你有预算和安装东西在商场的能力,你可以在商场的屋顶上放置GPS天线,并使用中继器将信号广播到商场内部。我的公司就有这样的设置,我在室内获得了完美的GPS信号。通过他们的GPS坐标,你将能够知道用户更接近哪个中继器并相应地引导他们。

在显示方面,您可以使用简单的View或SurfaceView来显示地图楼层平面图。使用与地图相关的API可能会过度,如果没有用户位置,它甚至会更加无用。我建议为计算最短路径,您创建一个图形并使用 Dijkstra's shortest path algorithm。您可以使用Google地图帮助您创建具有实际距离的节点图。


1
除非墙壁周围有很多WiFi点,否则可能不行,但普通地图应该适用于测试。只需记录您的位置是否在变化即可。 - nuala
使用 GPS 天线,能否找到当前楼层?因为 GPS 只提供关于地球表面坐标的信息,所以对于所有楼层来说,地球表面坐标都是相同的。 - Wasim Ahmed
你可以通过GPS获得的最强定位被称为3D定位。它实际上会给你纬度、经度和海拔高度。这是通过使用4个不同卫星的读数来计算的。Location对象有一个getAltitude()方法,你可以用它来相对地预测用户在哪一层楼上。我不知道它在实践中有多有效。 - Samuel

2

正如Samuel所说,您将无法使用GPS。

我看到两个选择:

  1. 您需要安装某种硬件来向您的软件传递位置信息,这可能意味着在已知位置安装wifi接入点。这将很昂贵,并假设用户拥有wifi或您决定的任何通信类型。
  2. 在商场中经常间隔设置QR码(每个商店?),让用户扫描它们以找出他们在哪里。虽然不像实时了解您所在位置那样酷,但它很简单并且有效。

这些想法很酷 :) 尽管扫描QR码可能不太愉快,但这是一个相当新颖的想法。 - Samuel
这是一个想法:让他们拍摄附近商店的标志/招牌照片,应用程序将识别该商店。 - Samuel
@Samuel 如果你有多个相同的商铺(这种情况已经发生过),那就可能会变得棘手。 - hsanders
True。OP需要非常认真地走遍整个商场,确保他拥有所有的标志和商店,但他也可以使用像Google Goggles这样的服务来识别商标。 - Samuel
哦,我误解了你的意思。是的,那将是一个问题。应用程序可能需要询问用户要使用哪个商店。 - Samuel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接