【问题标题】:Draw a path following your location on Google Maps for Android在 Android 版 Google 地图上沿着您的位置绘制路径
【发布时间】:2011-05-06 16:26:11
【问题描述】:

我正在开发一个应用程序,当位置发生变化时,我需要在 Google 地图上绘制路径以显示用户所在的位置。我曾尝试使用 MyLocationOverlay 类,认为我可以重写绘制位置的方法,但我未能成功确定要重写的方法。此外,每次绘制位置时,MyLocationOverlay 似乎都会绘制一张新地图。我目前正在使用 ItemizedOverlay 并且每次位置更改时都会在列表中添加一个点。这行得通,当我走路时我会得到一条虚线的路径,但我真的很想要一条实心的路径。有什么建议吗?

我也看到了这个post,但我无法让它工作。您不需要叠加层才能将其显示在地图上吗?

【问题讨论】:

    标签: java android google-maps


    【解决方案1】:

    我认为最简单的方法是继承 Overlay 类,然后覆盖 draw 方法。 draw 方法非常开放,绘制路径应该不会太难。示例如下所示:

    public class PathOverlay extends Overlay{
    
        private List<GeoPoint> gpoints;
    
        public PathOverlay(List<GeoPoint> gpoints){
            this.gpoints = gpoints;
        }
    
        @Override
        public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) 
        {
            List<Point> mpoints = new ArrayList<Point>();
    
            // Convert to a point that can be drawn on the map.
            for(GeoPoint g : gpoints){
                Point tpoint = new Point();
                mapView.getProjection().toPixels(g, tpoint);
                mpoints.add(tpoint);
            }
    
            Path path = new Path();
    
            // Create a path from the points
            path.moveTo(mpoints.get(0).x, mpoints.get(0).y);
            for(Point p : mpoints){
                path.lineTo(p.x, p.y);
            }
    
            Paint paint = new Paint();
            paint.setARGB(255, 255, 0, 0);
            paint.setStyle(Style.STROKE);
            // Draw to the map
            canvas.drawPath(path,paint);
    
            return true;
    
        }
    }
    

    然后可以将此类的对象添加到 MapView.getOverlays() 返回的列表中以添加到地图中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-11
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 1970-01-01
      相关资源
      最近更新 更多