我想构建一个使用GPS数据的应用程序和我提供的建筑地图,以向用户显示他们在地图上的建筑物的位置。这将在我已经知道获得GPS和小区服务的特定建筑物中完成。
起初我认为最简单的方法是看看我是否可以使用Google地图绘制用户位置,然后在Google地图上“覆盖”我的自定义建筑地图,这样我就不必处理对于任何gps信息或映射的复杂性,我只需要缩放我的“叠加层”以适合Google地图的顶部,以便用户显示在建筑物的正确房间中。我想知道是否有人可以提供有关如何执行此操作的任何信息,或者是否有更简单的方法来完成我的地图。任何信息都是有帮助的!
答案 0 :(得分:1)
没有可能使用比标准GMap更近的缩放级别,即在浏览器中。其他问题是谷歌使用基于基数微度等级的GeoPoint类来绘制叠加,并且它的准确性很低。 您可以查看jGarminImg - 它的java库 - 不幸的是编写用于使用swing,但它应该相对容易使它与android一起工作。另一方面 - 你必须制作自己的地图。 您可以使用标准叠加层,也可以以kml格式制作地图,并使用this示例进行显示。
答案 1 :(得分:1)
你想...... Google Map View
...更具体地说,您可能希望阅读适当标题为“第2部分:添加叠加项目”的小节。
编辑:哎呀!没关系!我误解了你的问题......只有你想在地图上叠加一个项目。遗憾...答案 2 :(得分:1)
您可以通过自定义视图实现此目的,该视图显示您的建筑计划并了解建筑物每个角落的精确坐标。
当您收到位置更新时,您可以使用以下内容将现实世界位置转换为图像中的位置,从而为自定义视图添加标记:
伪代码:
markerX = realWorldX - mapStartX;
markerY = realWorldY - mapStartY;
if( isOnMap( markerX, markerY ) )
{
drawMarker( markerX, markerY );
}
答案 3 :(得分:0)
是的,您可以在Google MapView上叠加位图图像。
您所要做的就是为Overlay类创建子类,重写draw方法,并在画布上绘制。您必须提供一个GeoPoints矩形(可能是左上角和右下角)来将构建位图锚定在MapView之上。您可以使用mapView.getProjection()将纬度和经度转换为画布上的xy坐标。
我认为drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)在这里很有用。请记住,src和paint可以为null。如果您使用的GeoPoints是准确的,位图将自动调整为平移和缩放,但如果用户放大太多,它可能会像素化。
编辑:我不太相信Google地图会让您的建筑物保持不同缩放级别的完全相同的GeoPoints,因此您可能需要针对不同的缩放级别调整这些值
答案 4 :(得分:0)
如果您只需要建筑物的地图,那么在不使用Google地图的情况下在图像上绘制位置应该不会太困难,只要您可以将您的位置确定为建筑物内的坐标。
您需要知道两个坐标:您正在使用的建筑地图的西北角和东南角。当您获得GPS位置更新时,可以根据这些角坐标轻松计算地图图像上的正确位置。
答案 5 :(得分:0)
我会这样做,
在Google地图上放置一个标记,以指示建筑物的位置
向下钻取建筑物会将建筑物地图加载为自定义视图。在自定义视图上绘制用户位置
我认为尝试在Google地图上叠加您的建筑地图可能会比通过自定义视图进行编码更复杂。
同样将最低缩放级别与建筑地图重叠,除非你有一个重型大楼,否则不会给你足够的分辨率。整块都很小
您可能已经考虑过的一个问题是设备将在建筑物内部恢复到手机信号塔和wifi的位置,从而为您提供不太准确的位置修复。