Android:如何:使用移动的当前位置指针显示地图(静态图像文件)

Android:如何:使用移动的当前位置指针显示地图(静态图像文件),android,geolocation,imagemap,android-wifi,Android,Geolocation,Imagemap,Android Wifi,我正在尝试创建一个原型,可以引导一个人到达他的目的地 这个地方是一座有几层楼的宽大建筑 我可以获取/检索地图(静态图像)例如当前:1F目的地:5F;因此,我可以获得1楼、2楼、5楼的静态图像(5个图像文件)。 场景: 启动应用程序 输入当前位置(或使用当前位置自动设置)和目的地 单击“搜索路线”按钮搜索要使用的地图(静止图像),并标记当前位置和目的地 在移动/前往目的地时更新当前位置 问题: 我只需要一次显示一个图像文件(每层),然后使用滚动条移动到另一层。但是我不知道如何显示它 我可以通过

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

  • 这个地方是一座有几层楼的宽大建筑
  • 我可以获取/检索地图(静态图像)<强>例如当前:1F目的地:5F;因此,我可以获得1楼、2楼、5楼的静态图像(5个图像文件)。
场景:

  • 启动应用程序
  • 输入当前位置(或使用当前位置自动设置)和目的地
  • 单击“搜索路线”按钮搜索要使用的地图(静止图像),并标记当前位置和目的地
  • 在移动/前往目的地时更新当前位置
  • 问题:

  • 我只需要一次显示一个图像文件(每层),然后使用滚动条移动到另一层。但是我不知道如何显示它
  • 我可以通过WiFi获取当前位置坐标,但不知道如何将其放入静止图像中以标记当前位置
  • 可以肯定的是,已经有一个类似的示例应用程序可用。 你能分享这些概念/想法吗,或者你会把代码片段包括进去。这对我的论文有很大帮助


    任何关于正确方向的指导都是值得赞赏的。

    您有两种可能,创建自己的MapView类对象,以便在Google Api上提供地图的滚动覆盖。MapView Api的示例用法可通过

    如果您了解缩放和平移的基本图形编程和转换,则通过自己的视图执行此操作将更容易。(如果你数学学得好,学起来就不麻烦了)。使用带有android:scaleType=“matrix”的ImageView覆盖MotionEvent处理程序以获得触摸,然后将其处理为转换和缩放矩阵

    要将指示器与图像关联,请将两个像素设置为锚定点,以响应现实生活中的lat/long。通常是矩形图像的(0,0)和(宽度、高度)。让您的生活更轻松,并确保图像可缩放。然后使用第二个图像视图(用于指示器)将其绘制在顶部,并将其移动到屏幕上的正确位置,确保此视图中的背景与指示器的背景一样透明,否则您将有一个矩形块“光晕”

    确保检查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);
    }
    

    您有两种可能,创建自己的类似MapView的对象,以便在Google Api上提供地图的滚动覆盖。MapView Api的示例用法可通过

    如果您了解缩放和平移的基本图形编程和转换,则通过自己的视图执行此操作将更容易。(如果你数学学得好,学起来就不麻烦了)。使用带有android:scaleType=“matrix”的ImageView覆盖MotionEvent处理程序以获得触摸,然后将其处理为转换和缩放矩阵

    要将指示器与图像关联,请将两个像素设置为锚定点,以响应现实生活中的lat/long。通常是矩形图像的(0,0)和(宽度、高度)。让您的生活更轻松,并确保图像可缩放。然后使用第二个图像视图(用于指示器)将其绘制在顶部,并将其移动到屏幕上的正确位置,确保此视图中的背景与指示器的背景一样透明,否则您将有一个矩形块“光晕”

    确保检查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);
    }
    

    我看过很多示例,但它使用动态地图(GoogleMap)。有人遇到过使用静止图像作为地图的问题吗?你有几个问题可以归结为一个问题。分而治之。哦,是的,我意识到需要隔离。我将创建一个新问题,让我回头看看。我看过很多示例,但它使用动态地图(谷歌地图)。有人遇到过使用静止图像作为地图的问题吗?你有几个问题可以归结为一个问题。分而治之。哦,是的,我意识到需要隔离。我将提出一个新的问题,让我回头看看。你能解释一下“将两个像素作为锚定点,以响应现实生活中的纬度/长度。通常是矩形图像的(0,0)和(宽度、高度)”的含义吗?想法是将图像上的两个点绑定到现实生活中的纬度和经度。使用图像的相对角(左上角和右下角),可以使用线性关系轻松地将指示器放置在用户所在的位置。例如,计算从左到右的距离除以总的从左到右的距离,然后将其作为百分比来标记图像上的位置。@eros,我添加了一些示例代码,以更好地表达整个部分的含义。您必须复制Y轴以获得垂直位置。@eros,检查您的trignometry,Y轴的
    Math.sin()
    。请您进一步解释“将两个像素作为锚定点,以响应真实生活中的lat/long。通常是矩形图像的(0,0)和(宽度,高度)”的含义其想法是将图像上的两个点绑定到现实生活中的纬度和经度。使用图像的相对角(左上角和右下角),可以使用线性关系轻松地将指示器放置在用户所在的位置。例如,计算从左到右的距离除以总的从左到右的距离,然后将其作为百分比来标记图像上的位置。@eros,我添加了一些示例代码,以更好地表达整个部分的含义。您必须复制Y轴以获得垂直位置。@eros,检查您的trignometry,Y轴的
    Math.sin()。