0

如何在Google地圖中繪製鏈接。我目前正在將谷歌地圖V2整合到我的應用程序中。我能夠獲得當前位置,並且我可以在onLocationChange發生時獲取地理位置。但是我想在我得到的地理指針中標出一行。這可能與version2有關。你們能指導我嗎?我對這個主題很新穎。提前致謝。Android--如何在googlemap-v2中繪製線條

Marker startPerc = googleMap.addMarker(new MarkerOptions() .position(coordinate).title("On the way").snippet("Hello Apps").icon(BitmapDescriptorFactory.fromResource(R.drawable.myicon))); 
     // startPerc.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.my icon)); 

使用此代碼我可以將圖像映射到經度和緯度,但我想繪製一條線。

回答

0

我希望這可以幫助你: - 創建新的覆蓋類爲RoutePathOverlay: -

public class RoutePathOverlay extends Overlay { 

     private int _pathColor; 
     private final List<GeoPoint> _points; 
     private boolean _drawStartEnd; 

     public RoutePathOverlay(List<GeoPoint> points) { 
       this(points, Color.RED, true); 
     } 

     public RoutePathOverlay(List<GeoPoint> points, int pathColor, boolean drawStartEnd) { 
       _points = points; 
       _pathColor = pathColor; 
       _drawStartEnd = drawStartEnd; 
     } 

     private void drawOval(Canvas canvas, Paint paint, Point point) { 
       Paint ovalPaint = new Paint(paint); 
       ovalPaint.setStyle(Paint.Style.FILL_AND_STROKE); 
       ovalPaint.setStrokeWidth(2); 
       int _radius = 6; 
       RectF oval = new RectF(point.x - _radius, point.y - _radius, point.x + _radius, point.y + _radius); 
       canvas.drawOval(oval, ovalPaint);    
     } 

     public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) { 
       Projection projection = mapView.getProjection(); 
       if (shadow == false && _points != null) { 
         Point startPoint = null, endPoint = null; 
         Path path = new Path(); 
         //We are creating the path 
         for (int i = 0; i < _points.size(); i++) { 
           GeoPoint gPointA = _points.get(i); 
           Point pointA = new Point(); 
           projection.toPixels(gPointA, pointA); 
           if (i == 0) { //This is the start point 
             startPoint = pointA; 
             path.moveTo(pointA.x, pointA.y); 
           } else { 
             if (i == _points.size() - 1)//This is the end point 
               endPoint = pointA; 
             path.lineTo(pointA.x, pointA.y); 
           } 
         } 

         Paint paint = new Paint(); 
         paint.setAntiAlias(true); 
         paint.setColor(_pathColor); 
         paint.setStyle(Paint.Style.STROKE); 
         paint.setStrokeWidth(5); 
         paint.setAlpha(90); 
         if (getDrawStartEnd()) { 
           if (startPoint != null) { 
             drawOval(canvas, paint, startPoint); 
           } 
           if (endPoint != null) { 
             drawOval(canvas, paint, endPoint); 
           } 
         } 
         if (!path.isEmpty()) 
           canvas.drawPath(path, paint); 
       } 
       return super.draw(canvas, mapView, shadow, when); 
     } 

     public boolean getDrawStartEnd() { 
       return _drawStartEnd; 
     } 

     public void setDrawStartEnd(boolean markStartEnd) { 
       _drawStartEnd = markStartEnd; 
     } 
} 

然後調用這個類在你mapActivity: -

List<GeoPoint> path = new ArrayList<GeoPoint>(); //List of GeoPoints 

path.add(point); 

mapView.getOverlays().add(new RoutePathOverlay(path)); 
+0

覆蓋是過時V1的一部分地圖API。他特意要求V2。 –