Can “overlay” size be zoomed together with the google map on android?

后端 未结 2 813
囚心锁ツ
囚心锁ツ 2021-02-02 02:59

I have been able to use \"MapActivity\" and \"ItemizedOverlay\" to draw overlays on google maps on android with Eclipse. But when the map is zooming in and out, the overlay does

2条回答
  •  情话喂你
    2021-02-02 03:41

    Yes, there is. I had the same issue with my application. Here's an example and it works perfectly. The circle drawn here scales as you zoom in and out of the map.

    In your Overlay class:

    public class ImpactOverlay extends Overlay {
    
    private static int CIRCLERADIUS = 0;
    private GeoPoint geopoint;
    
    public ImpactOverlay(GeoPoint point, int myRadius) {
        geopoint = point;
        CIRCLERADIUS = myRadius;
    }
    
    @Override
    public void draw(Canvas canvas, MapView mapView, boolean shadow) {
        // Transfrom geoposition to Point on canvas
        Projection projection = mapView.getProjection();
        Point point = new Point();
        projection.toPixels(geopoint, point);
    
        // the circle to mark the spot
        Paint circle = new Paint();
        circle.setColor(Color.BLACK);
        int myCircleRadius = metersToRadius(CIRCLERADIUS, mapView, (double)geopoint.getLatitudeE6()/1000000);
        canvas.drawCircle(point.x, point.y, myCircleRadius, circle);
    }
    
    public static int metersToRadius(float meters, MapView map, double latitude) {
        return (int) (map.getProjection().metersToEquatorPixels(meters) * (1/ Math.cos(Math.toRadians(latitude))));         
    }
    }
    

    As your overlay re-draws from zoom, the marker will resize with it based on the metersToRadius scale. Hope it helps.

提交回复
热议问题