Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android osmdroid将边界设置为地图视图中图像覆盖的边缘_Android_Android Mapview_Osmdroid_Bounding Box_Overlays - Fatal编程技术网

Android osmdroid将边界设置为地图视图中图像覆盖的边缘

Android osmdroid将边界设置为地图视图中图像覆盖的边缘,android,android-mapview,osmdroid,bounding-box,overlays,Android,Android Mapview,Osmdroid,Bounding Box,Overlays,我已经制作了一个带有osmdroid mapview的应用程序,用户可以将jpeg作为地面覆盖导入地图,导入的图像将是建筑物的平面图,并填充地图视图。有人知道我将如何设置地图视图的滚动边界到地面覆盖的边缘,这样用户就不能滚动到地面覆盖/平面图之外。关于这方面的任何想法都很好。使用地图视图设置可视区域。SetScrollabealRealimit(地面覆盖边界框) 您可能还需要限制最小缩放级别(MapView#setMinZoomLevel) 现在,如何计算地面覆盖边界框 如果您的GroundO

我已经制作了一个带有osmdroid mapview的应用程序,用户可以将jpeg作为地面覆盖导入地图,导入的图像将是建筑物的平面图,并填充地图视图。有人知道我将如何设置地图视图的滚动边界到地面覆盖的边缘,这样用户就不能滚动到地面覆盖/平面图之外。

关于这方面的任何想法都很好。

使用
地图视图设置可视区域。SetScrollabealRealimit(地面覆盖边界框)

您可能还需要限制最小缩放级别(
MapView#setMinZoomLevel

现在,如何计算
地面覆盖
边界框

  • 如果您的
    GroundOverlay
    没有方向=>请查看
    GroundOverlay\draw
    源代码,在
    pEast
    pSouthEast
    计算。这应该是一个很好的起点
编辑-使用数学:

GeoPoint pEast = position.destinationPoint(width, 90.0f);   
GeoPoint pSouthEast = pEast.destinationPoint(height, -180.0f);
int north = position.getLatitudeE6()*2 - pSouthEast.getLatitudeE6();
int west = position.getLongitudeE6()*2 - pEast.getLongitudeE6();
BoundingBoxE6 bb = new BoundingBoxE6(north, pEast.getLongitudeE6(),
  pSouthEast.getLatitudeE6(), west);
  • 如果它有轴承。。。棘手的osmdroid中有一个用于旋转矩形的
    GeometryMath#GetBoundingBoxforRotatedRectangle
    ,这可能会有所帮助。但卷轴将无法与地面覆盖边缘完美匹配
我将groundoverlay放置在一个特定的地质点上,我还调整导入的jpeg的大小以精确地适应地图视图。我喜欢这个想法,我只是在获取groundoverlay区域的信息时遇到了困难。我将它作为“getBoundingBox”方法直接集成到groundoverlay类中。源代码已经提交。它将出现在lib的下一个版本中。