Je rencontre des problèmes avec les superpositions. J'ai dessiné une superposition de polygones sur la carte, cependant, lorsque j'effectue un zoom avant ou arrière, les bords ne s'alignent plus avec l'endroit où je le veux. Comment puis-je réparer cela?Comportement de superposition lors du zoom
Voici à quoi il ressemble quand je commence l'application (il couvre tout le terrain de stationnement parfaitement): Correct
Voici à quoi il ressemble quand je effectuer un zoom arrière (bords ne sont plus en ligne avec beaucoup de stationnement Le recouvrement semble un peu plus grand que le stationnement): Zoomed out
De plus, il ne s'aligne pas bien lorsque je zoome. Dans ce cas, la superposition est un peu plus petite que le stationnement. (Désolé, stackoverflow ne me laissera pas poster plus que 2 liens)
Des suggestions sur la façon de résoudre ce problème?
Voici le code:
private Projection projection;
private List<Overlay> mapOverlays;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MapView mapView = (MapView) findViewById(R.id.mapView);
mapView.setBuiltInZoomControls(true);
MapController mc = mapView.getController();
mc.setZoom(17);
mc.animateTo(new GeoPoint((int)(32.734248*1E6), (int)(-97.113448*1E6)));
mapOverlays = mapView.getOverlays();
projection = mapView.getProjection();
mapOverlays.add(new MyOverlay());
mapView.postInvalidate();
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
class MyOverlay extends Overlay{
public MyOverlay(){
}
public void draw(Canvas canvas, MapView mapv, boolean shadow){
super.draw(canvas, mapv, shadow);
Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setColor(Color.RED);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setAlpha(100);
GeoPoint gP1 = new GeoPoint(32733839,-97112976);
GeoPoint gP2 = new GeoPoint(32733875, -97113448);
GeoPoint gP3 = new GeoPoint(32734961,-97113455);
GeoPoint gP4 = new GeoPoint(32734953, -97112962);
Point p1 = new Point();
Point p2 = new Point();
Point p3 = new Point();
Point p4 = new Point();
Path path = new Path();
projection.toPixels(gP1, p1);
projection.toPixels(gP2, p2);
projection.toPixels(gP3, p3);
projection.toPixels(gP4, p4);
path.moveTo(p1.x, p1.y);
path.lineTo(p2.x,p2.y);
path.lineTo(p3.x,p3.y);
path.lineTo(p4.x,p4.y);
canvas.drawPath(path, mPaint);
}
}
}
Vous devriez publier du code car vous pourriez avoir des problèmes de précision. – bgs
J'ai ajouté le code ci-dessus. – Kvothe
Etes-vous sûr de avoir converti vos points [correctement] (http://stackoverflow.com/questions/2227816/how-to-give-double-value-to-geopoint-in-googlemap-overlays)? – bgs