OSMDroid偏移多边形

时间:2014-12-16 06:19:43

标签: android openstreetmap osmdroid

我使用类似于此的代码在地图上绘制多边形:

    GeoPoint pt1=new GeoPoint(13002798,77580000);
    GeoPoint pt2= new GeoPoint(pt1.getLatitudeE6()+diff, pt1.getLongitudeE6());
    GeoPoint pt3= new GeoPoint(pt1.getLatitudeE6()+diff, pt1.getLongitudeE6()+diff);
    GeoPoint pt4= new GeoPoint(pt1.getLatitudeE6(), pt1.getLongitudeE6()+diff);
    GeoPoint pt5= new GeoPoint(pt1);


    PathOverlay myOverlay= new PathOverlay(Color.RED, this);
    myOverlay.getPaint().setStyle(Paint.Style.FILL);

    myOverlay.addPoint(pt1);
    myOverlay.addPoint(pt2);
    myOverlay.addPoint(pt3);
    myOverlay.addPoint(pt4);
    myOverlay.addPoint(pt5);

    map.getOverlays().add(myOverlay);

现在我想将我的叠加多边形完全偏移 10px ,与缩放或其他参数无关。 我怎样才能做到这一点? 我需要这个在我的POI标记箭头上画线。

1 个答案:

答案 0 :(得分:1)

类似的东西:

Projection pj = mapView.getProjection();
Point pix = pj.toPixels(p);
pix.y -= 10; //10 pixels up
GeoPoint p2 = pj.fromPixels(pix2.x, pix2.y);
double offset = p2.getLatitude() - p.getLatitude();

然后,您可以通过添加偏移来偏移所有点的纬度。

然而,这个解决方案有点奇怪。相反,您还可以在POI标记“下”显示多边形。 osmdroid按照他们的顺序显示叠加:首先在底部,最新在顶部。

最新观点:永远不要对填充多边形使用PathOverlay,在某些情况下会出现奇怪的行为(当多边形的一部分位于视图内部时,部分位于外部)。您可以使用OSMBonusPack Polygon。