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