Android:如何:显示带有移动当前位置指针的地图(静止图像文件)

时间:2011-08-15 06:06:59

标签: android geolocation imagemap android-wifi

我正在尝试创建一个可以引导一个人到达目的地的原型。

  • 地方是一栋宽敞的建筑,有几层楼。
  • 我可以获取/检索地图(静止图像)。的 e.g。当前:1F目的地:5F;所以我可以得到第1层,第2层和第5层的静止图像(5个图像文件)。

情境:

  1. 启动应用程序
  2. 输入当前位置(或可以使用当前位置自动设置)&目的地
  3. 点击搜索路线按钮搜索要使用的地图(静止图像)&标记当前位置&目的地
  4. 在移动/前往目的地时更新当前位置
  5. 问题:

    1. 我只需要一次显示1个图像文件(每个楼层),然后使用滚动条移动到其他楼层。但是......不知道如何展示它。
    2. 我可以通过WiFi获取当前位置坐标,但不知道如何将其放入静止图像以标记当前位置
    3. 当然,已经有类似的示例应用程序可用。 您能分享这些概念/想法,还是会包含代码段。我的论文帮助很大。

      对正确方向的任何指导表示赞赏。

1 个答案:

答案 0 :(得分:1)

您有几种可能性,创建自己的MapView对象,以便在Google Api上滚动或覆盖您的地图。可以通过Location dev guide获得MapView Api的示例用法。

如果您了解缩放和平移的基本图形编程和转换,通过您自己的视图执行此操作会更容易。 (如果你擅长数学,那么学习就没那么麻烦了)。使用带有android:scaleType="matrix"的ImageView覆盖MotionEvent处理程序以获取触摸,然后将它们处理为转换和缩放矩阵。

要将指标与图像相关联,请将两个像素转换为与真实生活纬度/长度相对应的锚点。通常是矩形图像的(0,0)和(宽度,高度)。让您的生活更轻松,并确保图像是可扩展的。然后使用第二个ImageView(用于指示器)将其绘制在顶部并将其移动到屏幕上的正确位置,并确保此视图中的背景是透明的,以及指示器的背景,或者您将有一个矩形块“卤代”。

务必检查LocationManager提供的每个位置的准确度。

其他内容

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);
}