Comme souvent, il y a un décalage entre les fonctionnalités natives du SDK Android et les fonctions proposées par WM. C'est normal, il faut que PCSOFT ait le temps de les développer et surtout de les tester.

C'est la même chose pour le champ Carte. Alors que l'API du SDK permet de tracer des polylines, PCSOFT n'offre pour le moment que l'ajout de marqueurs dans le champ carte.

Pour ceux qui souhaiteraient le faire, je vous livre un code exemple qui permet de tracer très simplement des lignes ... à vous de jouer si vous souhaitez faire des formes plus complexes. L'astuce consiste à créer une procédure globale en java et à récupérer la vue dans laquelle se trouve la carte (pas évident car depuis la v2 de l'API le comportement est différent).

Voilà le code (un plus serait sympa si vous appréciez ce post) :

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
 
////////////////////////////////////////
// app
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.content.*;
import java.util.Iterator;
 
 
///////////////////////////
// view
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
 
////////////////////////
// maps
import com.google.android.gms.maps.*;
//import com.google.android.gms.maps;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Marker;
 
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
 
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.InfoWindowAdapter;
import com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener;
import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener;
import com.google.android.gms.maps.GoogleMap.OnMarkerDragListener;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.LatLngBounds;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
import android.graphics.Color;
 
/////////////////////////
// fragment
import android.app.Fragment.*;
 
///////////////////////////
// location
import android.location.GpsSatellite;
import android.location.GpsStatus;
import android.location.Location;
import android.location.LocationListener;
import android.location.GpsStatus.*;
import android.location.LocationManager;
 
///////////////////////////
// widget
import android.util.Log;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
 
///////////////////////////////
import java.lang.reflect.*;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.CharSequence;
import java.lang.Class;
import java.lang.Object;
 
/////////////////////////////
public static void CarteTraceSegment(String carte, double lat1,double lon1,double lat2,double lon2)
{
	// Variables
	// récupération du contexte
	Context myContext     = getContexteApplication();
 
	// Récupération de l'Activité en cours
	Activity myActivity = getActiviteEnCours();
 
	// on affiche la trace 
	myMapView = (MapView) getView (carte);
	mMap = myMapView.getMap();
	//mMap.addMarker(new MarkerOptions().position(new LatLng(48.9, 1.9)).title("Marker"));
 
	Polyline line = mMap.addPolyline(new PolylineOptions()
	.add(new LatLng(lat1, lon1), new LatLng(lat2, lon2))
	.width(5)
	.color(Color.RED));
 
}
 
//