【问题标题】:Draw OverlayWays with Mapsforge使用 Mapsforge 绘制 OverlayWays
【发布时间】:2018-01-23 18:18:37
【问题描述】:

我正在尝试使用 Mapsforge 在我的 Android 应用中绘制一种简单的方式,一条路线。我遵循了一个示例,并创建了单点 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);

我不知道我是否必须在某处放置标记...

【问题讨论】:

    标签: android maps


    【解决方案1】:

    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 示例 link 可用。

    【讨论】:

    • 链接好像失效了
    【解决方案2】:

    尝试设置 wayPaint Style 和笔画宽度,像这样:

    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);
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      相关资源
      最近更新 更多