Bonjour,
J'ai un problème pour dessiner un itinéraire avec deux départs sur une carte.
je dessine du premier départ jusqu'au croisement avec le deuxième puis je dessine le deuxième jusqu'à l'arrivée.
le problème c'est que ça dessine le trait entre le croisement et le deuxième départ.
la récupération des points de l'itinéraire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 pos = xpp.getText().split(","); for (int j = 0; j < pos.length-1; j=j+2) { try { String lat; if (j == 0)lat = pos[j]; else lat = (pos[j].split(" "))[1]; latitude = Double.parseDouble(lat); longitude = Double.parseDouble(pos[j+1]); listePos.add(longitude); listePos.add(latitude); } catch (NumberFormatException e) { Log.i("erreur",""+e.getMessage()); latitude = 0; longitude = 0; } } ArrayList<GeoPoint> listGeo= new ArrayList<GeoPoint>(); for (int i = 0; i < listePos.size()-1; i = i + 2) { GeoPoint geo = BoiteAOutils.makeGeoPoint(listePos.get(i),listePos.get(i+1)); listGeo.add(geo); } Itineraire iti = new Itineraire(listGeo); listeIti.add(iti);
la classe itinéraire:
et l'ajout à la carte:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 public class Itineraire extends Overlay { private ArrayList<GeoPoint> listGeo; public Itineraire(ArrayList<GeoPoint> list) { listGeo = list; } @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { Projection projection = mapView.getProjection(); for (int i = 0; i < listGeo.size()-1; i++) { Point pointEcranDep = new Point(); projection.toPixels(listGeo.get(i), pointEcranDep); Point pointEcranArr = new Point(); projection.toPixels(listGeo.get(i+1), pointEcranArr); Paint paint = new Paint(); paint.setColor(Color.BLUE); paint.setStrokeWidth(4); BlurMaskFilter bmf = new BlurMaskFilter(1, Blur.NORMAL); paint.setMaskFilter(bmf); canvas.drawLine(pointEcranDep.x, pointEcranDep.y, pointEcranArr.x,pointEcranArr.y, paint); } } @Override public boolean onTap(GeoPoint p, MapView mapView) { // TODO Auto-generated method stub return super.onTap(p, mapView); } }
donc si quelqu'un aurait une idée je suis preneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mapOverlays.addAll(parc.getListIti());
Partager