绘制叠加与Mapsforge



我试图画一个简单的方式,路线,在我的Android应用程序与Mapsforge。我遵循了一个例子,我创建了单个点,OverlayItems。但是当我试图画一条路线时,我在地图上什么也看不见。有人能帮帮我吗?下面是我的简单代码:

    Paint wayPaint = new Paint();
    wayPaint.setColor(color.Chocolate);
    ArrayWayOverlay wayOverlay = new ArrayWayOverlay(wayPaint,wayPaint);
    GeoPoint gp1 = new GeoPoint(41.38, 2.15);
    GeoPoint gp2 = new GeoPoint(41.39, 2.15);
    GeoPoint gp3 = new GeoPoint(41.40, 2.15);
    GeoPoint gp4 = new GeoPoint(41.41, 2.15);
    OverlayWay way = new OverlayWay(new GeoPoint[][] { { gp1, gp2, gp3, gp4 } });
    wayOverlay.addWay(way);
    mapView.getOverlays().add(wayOverlay);

我不知道我是否需要在某个地方做标记…

OverlayWay api在v-0.4.0时已弃用。因为我很难找到在地图上绘制叠加的新方法,所以我想把它贴在这里。Mapsforge现在添加了以下类型的叠加:

 1. Circle
 2. FixedPixelCircle
 3. Marker
 4. Polygon
 5. Polyline

所有的新类都扩展了Layer类,使其易于实现。您实例化所需的对象并将其添加到MapView中,如下所示。

// instantiating the paint object 
Paint paint = AndroidGraphicFactory.INSTANCE.createPaint();
paint.setColor(color);
paint.setStrokeWidth(strokeWidth);
paint.setStyle(style);
// instantiating the polyline object
Polyline polyline = new Polyline(paint, AndroidGraphicFactory.INSTANCE);
// set lat lng for the polyline
List<LatLong> coordinateList = polyline.getLatLongs();
coordinateList.add(latlng1);
coordinateList.add(latlng2);
coordinateList.add(latlng3);
coordinateList.add(latlng4);
coordinateList.add(latlng5);
// adding the layer to the mapview
mapView.getLayerManager().getLayers().add(polyline);

还有一个mapsforge示例链接。

尝试设置wayPaint样式和描边宽度,如下所示:

Paint wayPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
wayPaint.setStyle(Paint.Style.STROKE);
wayPaint.setColor(Color.BLUE);
wayPaint.setAlpha(192);
wayPaint.setStrokeWidth(6);
wayDefaultPaintFill.setStrokeJoin(Paint.Join.MITER);
ArrayWayOverlay wayOverlay = new ArrayWayOverlay(wayPaint,wayPaint);
//your points
OverlayWay way = new OverlayWay(new GeoPoint[][] { {geoPoint1,geoPoint2,... } });
wayOverlay.addWay(way);
mapView.Overlays().add(wayOverlay);

希望这对你有帮助!

最新更新