OSMdroid如何获取屏幕坐标?

时间:2014-09-30 07:19:37

标签: android openstreetmap osmdroid

我正在使用osmdroid在android上做app。我如何获得屏幕上显示的地图坐标(上,下,左,右)? 感谢名单。

3 个答案:

答案 0 :(得分:1)

你要问的是什么并不完全清楚,但我认为你要求的是lat / lon边界框。

BoundingBoxE6 boundingBox = mMapView.getProjection().getBoundingBox();

答案 1 :(得分:0)

"我是在onCreate中做的,如果它很重要" =>是的。

实际上,您无法访问onCreate中正确的mapview边界框。 这是"因为MapView的宽度和高度为零,因为它还没有调用onLayout"

这是一个(非常烦人的)osmdroid问题,在v4.2中没有修复。

此外,在onCreate中调用时,setCenter在v4.2中也无法正常工作。

请在此处查看更多解释和解决方法:https://github.com/osmdroid/osmdroid/issues/22

答案 2 :(得分:0)

在 react-native 中,我使用 onRegionChangeComplete 事件 (onRegionChangeComplete={e => properties.regionChange(e)})。此事件返回 MapView 的区域。所以:{"latitude": 4.50751184289841, "latitudeDelta": 0.09999884159289252, "longitude": -75.67515761717539, "longitudeDelta": 0.06323>7206p65因此,如果您需要计算具有屏幕面积的多边形,则应执行以下操作:

regionChange = (e) => {    
    areaLoadData = [
        {
            latitude: e.latitude + e.latitudeDelta,
            longitude: e.longitude - e.longitudeDelta
        },
        {
            latitude: e.latitude + e.latitudeDelta,
            longitude: e.longitude + e.longitudeDelta
        },
        {
            latitude: e.latitude - e.latitudeDelta,
            longitude: e.longitude + e.longitudeDelta
        },
        {
            latitude: e.latitude - e.latitudeDelta,
            longitude: e.longitude - e.longitudeDelta
        },
    ]
}