Subversion Repositories eFlore/Applications.cel

Rev

Rev 2568 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2568 Rev 2627
1
package org.tela_botanica.client.vues.observation;
1
package org.tela_botanica.client.vues.observation;
2
 
2
 
3
import org.tela_botanica.client.cel2;
3
import org.tela_botanica.client.i18n.Msg;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
5
import org.tela_botanica.client.modeles.objets.EntiteGeographiqueObservation;
5
import org.tela_botanica.client.modeles.objets.EntiteGeographiqueObservation;
6
import org.tela_botanica.client.observation.ObservationMediateur;
6
import org.tela_botanica.client.observation.ObservationMediateur;
7
import org.tela_botanica.client.util.Util;
7
import org.tela_botanica.client.util.Util;
8
 
8
 
9
import com.google.gwt.user.client.Timer;
9
import com.google.gwt.user.client.Timer;
10
import com.google.gwt.user.client.Window;
10
import com.google.gwt.user.client.Window;
11
import com.gwtext.client.core.EventCallback;
11
import com.gwtext.client.core.EventCallback;
12
import com.gwtext.client.core.EventObject;
12
import com.gwtext.client.core.EventObject;
13
import com.gwtext.client.core.Ext;
13
import com.gwtext.client.core.Ext;
14
import com.gwtext.client.core.ExtElement;
14
import com.gwtext.client.core.ExtElement;
15
import com.gwtext.client.widgets.Container;
15
import com.gwtext.client.widgets.Container;
16
import com.gwtext.client.widgets.Panel;
16
import com.gwtext.client.widgets.Panel;
17
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
17
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
18
import com.gwtext.client.widgets.form.Label;
18
import com.gwtext.client.widgets.form.Label;
19
import com.gwtext.client.widgets.layout.FitLayout;
19
import com.gwtext.client.widgets.layout.FitLayout;
20
import com.gwtext.client.widgets.layout.RowLayout;
20
import com.gwtext.client.widgets.layout.RowLayout;
21
import com.gwtext.client.widgets.layout.RowLayoutData;
21
import com.gwtext.client.widgets.layout.RowLayoutData;
22
import com.google.maps.gwt.client.GoogleMap;
22
import com.google.maps.gwt.client.GoogleMap;
23
import com.google.maps.gwt.client.GoogleMap.ClickHandler;
23
import com.google.maps.gwt.client.GoogleMap.ClickHandler;
24
import com.google.maps.gwt.client.GoogleMap.ZoomChangedHandler;
24
import com.google.maps.gwt.client.GoogleMap.ZoomChangedHandler;
25
import com.google.maps.gwt.client.InfoWindow;
25
import com.google.maps.gwt.client.InfoWindow;
26
import com.google.maps.gwt.client.InfoWindowOptions;
26
import com.google.maps.gwt.client.InfoWindowOptions;
27
import com.google.maps.gwt.client.LatLng;
27
import com.google.maps.gwt.client.LatLng;
28
import com.google.maps.gwt.client.MapOptions;
28
import com.google.maps.gwt.client.MapOptions;
29
import com.google.maps.gwt.client.MapTypeId;
29
import com.google.maps.gwt.client.MapTypeId;
30
import com.google.maps.gwt.client.Marker;
30
import com.google.maps.gwt.client.Marker;
31
import com.google.maps.gwt.client.MarkerOptions;
31
import com.google.maps.gwt.client.MarkerOptions;
32
import com.google.maps.gwt.client.MouseEvent;
32
import com.google.maps.gwt.client.MouseEvent;
33
 
33
 
34
public class CartographieObservationVue extends Panel implements Rafraichissable {
34
public class CartographieObservationVue extends Panel implements Rafraichissable {
35
 
35
 
36
	private String id = "cartographie_observation";
36
	private String id = "cartographie_observation";
37
	private ObservationMediateur oMediateur = null;
37
	private ObservationMediateur oMediateur = null;
38
	
38
	
39
	Panel panneauCarto = null;
39
	Panel panneauCarto = null;
40
	GoogleMap map = null;
40
	GoogleMap map = null;
41
	Marker nmk = null;
41
	Marker nmk = null;
42
 
42
 
43
	private boolean carteAjoutee = false;
43
	private boolean carteAjoutee = false;
44
	private boolean infoOuverte = false;
44
	private boolean infoOuverte = false;
45
 
45
 
46
	String valeurLocalite = "Bourges"; // j'aurais préféré Bort-les-Orgues
46
	String valeurLocalite = "Bourges"; // j'aurais préféré Bort-les-Orgues
47
	LatLng centreFrance = null;
47
	LatLng centreFrance = null;
48
	LatLng pointLocalite = null;
48
	LatLng pointLocalite = null;
49
	String codeLoc = "";
49
	String codeLoc = "";
50
	String pays = "";
50
	String pays = "";
51
 
51
 
52
	int niveauZoom = 6;
52
	int niveauZoom = 6;
53
 
53
 
54
	Label panneauExplication = new Label(
-
 
55
			"Précisez le lieu de votre observation et cliquez sur OK. Les coordonnées sont données en degrés décimaux, comptés positivement vers le Nord pour la latitude, et vers l'Est pour la longitude");
54
	Label panneauExplication = new Label(Msg.get("explication-panneau-carto"));
56
 
55
 
57
	private InfoWindow info;
56
	private InfoWindow info;
58
	private boolean zoomerSurRetour = false;
57
	private boolean zoomerSurRetour = false;
59
 
58
 
60
	public CartographieObservationVue(ObservationMediateur om) {
59
	public CartographieObservationVue(ObservationMediateur om) {
61
 
60
 
62
		oMediateur = om;
61
		oMediateur = om;
63
 
62
 
64
		setHeader(false);
63
		setHeader(false);
65
		setAutoWidth(true);
64
		setAutoWidth(true);
66
		setPaddings(10);
65
		setPaddings(10);
67
 
66
 
68
		panneauCarto = new Panel();
67
		panneauCarto = new Panel();
69
		panneauCarto.setLayout(new FitLayout());
68
		panneauCarto.setLayout(new FitLayout());
70
 
69
 
71
		setLayout(new RowLayout());
70
		setLayout(new RowLayout());
72
 
71
 
73
		panneauCarto.setAutoHeight(true);
72
		panneauCarto.setAutoHeight(true);
74
		add(panneauExplication, new RowLayoutData(12));
73
		add(panneauExplication, new RowLayoutData(12));
75
		add(panneauCarto, new RowLayoutData());
74
		add(panneauCarto, new RowLayoutData());
76
 
75
 
77
		addListener(new ContainerListenerAdapter() {
76
		addListener(new ContainerListenerAdapter() {
78
			@Override
77
			@Override
79
			public void onAfterLayout(Container c) {
78
			public void onAfterLayout(Container c) {
80
				initialiserCarte(false);
79
				initialiserCarte(false);
81
			}
80
			}
82
		});
81
		});
83
	}
82
	}
84
 
83
 
85
	public void setTailleCarte(int hauteur, int largeur) {
84
	public void setTailleCarte(int hauteur, int largeur) {
86
		setSize(largeur, hauteur);
85
		setSize(largeur, hauteur);
87
	}
86
	}
88
 
87
 
89
	public void masquerChargement(boolean masquer) {
88
	public void masquerChargement(boolean masquer) {
90
		
89
		
91
		if(panneauCarto.isVisible()) {
90
		if(panneauCarto.isVisible()) {
92
			if(masquer) {
91
			if(masquer) {
93
				panneauCarto.getEl().mask("Recherche des coordonnées et de la localite, veuillez patienter");
92
				panneauCarto.getEl().mask("Recherche des coordonnées et de la localite, veuillez patienter");
94
			} else {
93
			} else {
95
				panneauCarto.getEl().unmask();
94
				panneauCarto.getEl().unmask();
96
			}
95
			}
97
		}
96
		}
98
	}
97
	}
99
	
98
	
100
	public void obtenirInfosLocalites(LatLng coord) {
99
	public void obtenirInfosLocalites(LatLng coord) {
101
		// Remise à zéro des infos restantes d'une ancienne requete
100
		// Remise à zéro des infos restantes d'une ancienne requete
102
		valeurLocalite = ""; 
101
		valeurLocalite = ""; 
103
		codeLoc = "";
102
		codeLoc = "";
104
		pays = "";
103
		pays = "";
105
		
104
		
106
		oMediateur.obtenirInformationCoord(this, coord.lat(), coord.lng());
105
		oMediateur.obtenirInformationCoord(this, coord.lat(), coord.lng());
107
	}
106
	}
108
 
107
 
109
	public void mettreAJourInfos(final LatLng pointNouvelleLocalite, int zoom) {
108
	public void mettreAJourInfos(final LatLng pointNouvelleLocalite, int zoom) {
110
		GoogleMap mapNulle = null;
109
		GoogleMap mapNulle = null;
111
		if(nmk != null) {
110
		if(nmk != null) {
112
			nmk.setMap(mapNulle);
111
			nmk.setMap(mapNulle);
113
		}
112
		}
114
		pointLocalite = pointNouvelleLocalite;
113
		pointLocalite = pointNouvelleLocalite;
115
		nmk = fabriquerMarqueur(pointLocalite);
114
		nmk = fabriquerMarqueur(pointLocalite);
116
		nmk.setMap(map);
115
		nmk.setMap(map);
117
		afficherInfoMarker(nmk, construireContenuInfoMarker(nmk));
116
		afficherInfoMarker(nmk, construireContenuInfoMarker(nmk));
118
		recentrerCarte(nmk.getPosition());
117
		recentrerCarte(nmk.getPosition());
119
		map.setZoom(zoom);
118
		map.setZoom(zoom);
120
	}
119
	}
121
 
120
 
122
	private void initialiserCarte(boolean localite) {
121
	private void initialiserCarte(boolean localite) {
123
 
122
 
124
		panneauCarto.clear();
123
		panneauCarto.clear();
125
 
124
 
126
		centreFrance = LatLng.create(47.0504, 2.2347);
125
		centreFrance = LatLng.create(47.0504, 2.2347);
127
		pointLocalite = centreFrance;
126
		pointLocalite = centreFrance;
128
 
127
 
129
		MapOptions options = MapOptions.create();
128
		MapOptions options = MapOptions.create();
130
	    options.setCenter(centreFrance);
129
	    options.setCenter(centreFrance);
131
	    options.setZoom(6);
130
	    options.setZoom(6);
132
	    options.setMapTypeId(MapTypeId.HYBRID);
131
	    options.setMapTypeId(MapTypeId.HYBRID);
133
	    options.setDraggable(true);
132
	    options.setDraggable(true);
134
	    options.setMapTypeControl(true);
133
	    options.setMapTypeControl(true);
135
	    options.setScaleControl(true);
134
	    options.setScaleControl(true);
136
	    options.setScrollwheel(true);
135
	    options.setScrollwheel(true);
137
 
136
 
138
		map = GoogleMap.create(panneauCarto.getElement(), options );
137
		map = GoogleMap.create(panneauCarto.getElement(), options );
139
				
138
				
140
		InfoWindowOptions infopts = InfoWindowOptions.create();
139
		InfoWindowOptions infopts = InfoWindowOptions.create();
141
		info = InfoWindow.create();
140
		info = InfoWindow.create();
142
		info.setOptions(infopts);
141
		info.setOptions(infopts);
143
		info.addCloseClickListener(new InfoWindow.CloseClickHandler() {			
142
		info.addCloseClickListener(new InfoWindow.CloseClickHandler() {			
144
			@Override
143
			@Override
145
			public void handle() {
144
			public void handle() {
146
				infoOuverte = false;
145
				infoOuverte = false;
147
			}
146
			}
148
		});
147
		});
149
		
148
		
150
		if(!localite) {
149
		if(!localite) {
151
			fabriquerMarqueurIndication();
150
			fabriquerMarqueurIndication();
152
		}
151
		}
153
				
152
				
154
		map.addClickListener(new ClickHandler() {		
153
		map.addClickListener(new ClickHandler() {		
155
			@Override
154
			@Override
156
			public void handle(MouseEvent event) {
155
			public void handle(MouseEvent event) {
157
				obtenirInfosLocalites(event.getLatLng());
156
				obtenirInfosLocalites(event.getLatLng());
158
			}
157
			}
159
		});
158
		});
160
		
159
		
161
		map.addZoomChangedListener(new ZoomChangedHandler() {
160
		map.addZoomChangedListener(new ZoomChangedHandler() {
162
			@Override
161
			@Override
163
			public void handle() {
162
			public void handle() {
164
				niveauZoom = (int)map.getZoom();
163
				niveauZoom = (int)map.getZoom();
165
			}
164
			}
166
		});
165
		});
167
		
166
		
168
		panneauCarto.doLayout();
167
		panneauCarto.doLayout();
169
		panneauCarto.expand();   
168
		panneauCarto.expand();   
170
		panneauCarto.setHeight("100%");
169
		panneauCarto.setHeight("100%");
171
		panneauCarto.setWidth("100%");
170
		panneauCarto.setWidth("100%");
172
		expand();
171
		expand();
173
	}
172
	}
174
	
173
	
175
	public void fabriquerMarqueurIndication() {
174
	public void fabriquerMarqueurIndication() {
176
		GoogleMap mapNulle = null;
175
		GoogleMap mapNulle = null;
177
		if(nmk != null) {
176
		if(nmk != null) {
178
			nmk.setMap(mapNulle);
177
			nmk.setMap(mapNulle);
179
		}
178
		}
180
		nmk = fabriquerMarqueur(pointLocalite);
179
		nmk = fabriquerMarqueur(pointLocalite);
181
		nmk.setMap(map);
180
		nmk.setMap(map);
182
		info.setContent("<div id=\"info_contenu\">"+
181
		info.setContent("<div id=\"info_contenu\">"+
183
				"Déplacez ce marqueur pour localiser votre observation (localite et coordonnées)<br />"
182
				"Déplacez ce marqueur pour localiser votre observation (localite et coordonnées)<br />"
184
				+"longitude="
183
				+"longitude="
185
				+ Util.tronquerNombrePourAffichage("" + nmk.getPosition().lng(), 5) + "<br />latitude="
184
				+ Util.tronquerNombrePourAffichage("" + nmk.getPosition().lng(), 5) + "<br />latitude="
186
				+ Util.tronquerNombrePourAffichage("" + nmk.getPosition().lat(), 5) + "</div>");
185
				+ Util.tronquerNombrePourAffichage("" + nmk.getPosition().lat(), 5) + "</div>");
187
		infoOuverte = true;
186
		infoOuverte = true;
188
		info.open(map,nmk);
187
		info.open(map,nmk);
189
	}
188
	}
190
 
189
 
191
	public void AfficherMessageAucuneInfos() {
190
	public void AfficherMessageAucuneInfos() {
192
		mettreAJourInfos(centreFrance, niveauZoom);
191
		mettreAJourInfos(centreFrance, niveauZoom);
193
		Window.alert("Aucune information pour le nom donné");
192
		Window.alert("Aucune information pour le nom donné");
194
	}
193
	}
195
 
194
 
196
	public int getNiveauZoom() {
195
	public int getNiveauZoom() {
197
		return niveauZoom;
196
		return niveauZoom;
198
	}
197
	}
199
	
198
	
200
	private void ajouterListenerBouton(final String idBouton) {
199
	private void ajouterListenerBouton(final String idBouton) {
201
		
200
		
202
		final ExtElement bouton = Ext.get(idBouton);
201
		final ExtElement bouton = Ext.get(idBouton);
203
		if(bouton == null) {
202
		if(bouton == null) {
204
			Timer t = new Timer() {
203
			Timer t = new Timer() {
205
				@Override
204
				@Override
206
				public void run() {
205
				public void run() {
207
					ajouterListenerBouton(idBouton);
206
					ajouterListenerBouton(idBouton);
208
				}
207
				}
209
			};
208
			};
210
			t.schedule(500);
209
			t.schedule(500);
211
			return;
210
			return;
212
		} else {
211
		} else {
213
			bouton.addListener("click", new EventCallback() {
212
			bouton.addListener("click", new EventCallback() {
214
				@Override
213
				@Override
215
				public void execute(EventObject e) {
214
				public void execute(EventObject e) {
216
					EntiteGeographiqueObservation infosLocalite = new EntiteGeographiqueObservation(codeLoc,valeurLocalite,null,null);
215
					EntiteGeographiqueObservation infosLocalite = new EntiteGeographiqueObservation(codeLoc,valeurLocalite,null,null);
217
					infosLocalite.setPays(pays);
216
					infosLocalite.setPays(pays);
218
					infosLocalite.setLat(pointLocalite.lat()+"");
217
					infosLocalite.setLat(pointLocalite.lat()+"");
219
					infosLocalite.setLon(pointLocalite.lng()+"");
218
					infosLocalite.setLon(pointLocalite.lng()+"");
220
					oMediateur.rafraichirSaisieLocaliteObservation(infosLocalite);
219
					oMediateur.rafraichirSaisieLocaliteObservation(infosLocalite);
221
				}
220
				}
222
			});	
221
			});	
223
			
222
			
224
			bouton.focus();
223
			bouton.focus();
225
		}
224
		}
226
	}
225
	}
227
 
226
 
228
	@Override
227
	@Override
229
	public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {
228
	public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {
230
		// rétablissement du curseur, parfois mis sur "attente" par le processus chargeant la carte
229
		// rétablissement du curseur, parfois mis sur "attente" par le processus chargeant la carte
231
		Util.curseurParDefaut();
230
		Util.curseurParDefaut();
232
 
231
 
233
		if (nouvelleDonnees instanceof String) {
232
		if (nouvelleDonnees instanceof String) {
234
			
233
			
235
			if(isVisible()) {
234
			if(isVisible()) {
236
				Window.alert((String)nouvelleDonnees);
235
				Window.alert((String)nouvelleDonnees);
237
			}
236
			}
238
		}
237
		}
239
 
238
 
240
		if (nouvelleDonnees instanceof EntiteGeographiqueObservation) {
239
		if (nouvelleDonnees instanceof EntiteGeographiqueObservation) {
241
			
240
			
242
			oMediateur.afficherFenetreCarto();
241
			oMediateur.afficherFenetreCarto();
243
			EntiteGeographiqueObservation infos = (EntiteGeographiqueObservation) nouvelleDonnees;
242
			EntiteGeographiqueObservation infos = (EntiteGeographiqueObservation) nouvelleDonnees;
244
			Double lat = 0.0;
243
			Double lat = 0.0;
245
			Double lon = 0.0;
244
			Double lon = 0.0;
246
			
245
			
247
			try {
246
			try {
248
				lat = Double.parseDouble(infos.getLat());
247
				lat = Double.parseDouble(infos.getLat());
249
				lon = Double.parseDouble(infos.getLon());
248
				lon = Double.parseDouble(infos.getLon());
250
			} catch (NumberFormatException nbe) {
249
			} catch (NumberFormatException nbe) {
251
				
250
				
252
			}
251
			}
253
			LatLng coord = LatLng.create(lat, lon);
252
			LatLng coord = LatLng.create(lat, lon);
254
			// si on a un point, on zoome fort dès le début
253
			// si on a un point, on zoome fort dès le début
255
			if (zoomerSurRetour) {
254
			if (zoomerSurRetour) {
256
				niveauZoom = 16;
255
				niveauZoom = 16;
257
				zoomerSurRetour = false;
256
				zoomerSurRetour = false;
258
			} else if (infos.getZoom() > 0) {
257
			} else if (infos.getZoom() > 0) {
259
				niveauZoom = infos.getZoom();
258
				niveauZoom = infos.getZoom();
260
			}
259
			}
261
 
260
 
262
			String nouvelleValeurLocalite = infos.getZoneGeo();
261
			String nouvelleValeurLocalite = infos.getZoneGeo();
263
			valeurLocalite = nouvelleValeurLocalite;
262
			valeurLocalite = nouvelleValeurLocalite;
264
			codeLoc = "";
263
			codeLoc = "";
265
			if(infos.getIdZoneGeo() != null) {
264
			if(infos.getIdZoneGeo() != null) {
266
				// Quoi stocker pour en dehors de la france ?
265
				// Quoi stocker pour en dehors de la france ?
267
				if (infos.getPays().equals("FR")) {
266
				if (infos.getPays().equals("FR")) {
268
					codeLoc = Util.convertirChaineZoneGeoVersDepartement(infos.getIdZoneGeo());
267
					codeLoc = Util.convertirChaineZoneGeoVersDepartement(infos.getIdZoneGeo());
269
				} else {
268
				} else {
270
					codeLoc = infos.getPays();
269
					codeLoc = infos.getPays();
271
				}
270
				}
272
			}
271
			}
273
			pays = infos.getPays();
272
			pays = infos.getPays();
274
			pointLocalite = coord;
273
			pointLocalite = coord;
275
			
274
			
276
			mettreAJourInfos(coord, niveauZoom);
275
			mettreAJourInfos(coord, niveauZoom);
277
		}
276
		}
278
		
277
		
279
		masquerChargement(false);
278
		masquerChargement(false);
280
	}
279
	}
281
	
280
	
282
	public Marker fabriquerMarqueur(LatLng pointMarqueur) {
281
	public Marker fabriquerMarqueur(LatLng pointMarqueur) {
283
		// ajout de marqueurs déplacables, qui affichent une bulle d'information
282
		// ajout de marqueurs déplacables, qui affichent une bulle d'information
284
		MarkerOptions options = MarkerOptions.create();
283
		MarkerOptions options = MarkerOptions.create();
285
		options.setDraggable(true);
284
		options.setDraggable(true);
286
		options.setPosition(pointMarqueur);
285
		options.setPosition(pointMarqueur);
287
		final Marker marker = Marker.create(options);
286
		final Marker marker = Marker.create(options);
288
		
287
		
289
		marker.addDragEndListener(new Marker.DragEndHandler() {
288
		marker.addDragEndListener(new Marker.DragEndHandler() {
290
			
289
			
291
			@Override
290
			@Override
292
			public void handle(MouseEvent event) {
291
			public void handle(MouseEvent event) {
293
				afficherInfoMarker(marker, construireContenuPartielInfoMarker(marker));
292
				afficherInfoMarker(marker, construireContenuPartielInfoMarker(marker));
294
				obtenirInfosLocalites(event.getLatLng());
293
				obtenirInfosLocalites(event.getLatLng());
295
			}
294
			}
296
		});
295
		});
297
		
296
		
298
		marker.addDragStartListener(new Marker.DragStartHandler() {
297
		marker.addDragStartListener(new Marker.DragStartHandler() {
299
			
298
			
300
			@Override
299
			@Override
301
			public void handle(MouseEvent event) {
300
			public void handle(MouseEvent event) {
302
				info.close();
301
				info.close();
303
			}
302
			}
304
		});
303
		});
305
 
304
 
306
		marker.addClickListener(new Marker.ClickHandler() {
305
		marker.addClickListener(new Marker.ClickHandler() {
307
			
306
			
308
			@Override
307
			@Override
309
			public void handle(MouseEvent event) {
308
			public void handle(MouseEvent event) {
310
				if(infoOuverte) {
309
				if(infoOuverte) {
311
					info.close();
310
					info.close();
312
					infoOuverte = false;
311
					infoOuverte = false;
313
				} else {
312
				} else {
314
					afficherInfoMarker(marker, construireContenuPartielInfoMarker(marker));
313
					afficherInfoMarker(marker, construireContenuPartielInfoMarker(marker));
315
					infoOuverte = true;
314
					infoOuverte = true;
316
				}
315
				}
317
			}
316
			}
318
		});
317
		});
319
		return marker;
318
		return marker;
320
	}
319
	}
321
	
320
	
322
	public void recentrerCarte() {
321
	public void recentrerCarte() {
323
		if(nmk != null && nmk.getVisible()) {
322
		if(nmk != null && nmk.getVisible()) {
324
			recentrerCarte(nmk.getPosition());
323
			recentrerCarte(nmk.getPosition());
325
		}
324
		}
326
	}
325
	}
327
 
326
 
328
	public void recentrerCarte(LatLng point) {
327
	public void recentrerCarte(LatLng point) {
329
		if(this.getWidth() > 12 && this.getHeight() > 24) {		
328
		if(this.getWidth() > 12 && this.getHeight() > 24) {		
330
			panneauCarto.setSize((this.getWidth() - 12)+"px" , (this.getHeight() - 12)+"px");
329
			panneauCarto.setSize((this.getWidth() - 12)+"px" , (this.getHeight() - 12)+"px");
331
		}
330
		}
332
		panneauCarto.doLayout();
331
		panneauCarto.doLayout();
333
		panneauCarto.expand();   
332
		panneauCarto.expand();   
334
		panneauCarto.setHeight("100%");
333
		panneauCarto.setHeight("100%");
335
		panneauCarto.setWidth("100%");
334
		panneauCarto.setWidth("100%");
336
		expand();
335
		expand();
337
		map.setCenter(point);
336
		map.setCenter(point);
338
	}
337
	}
339
 
338
 
340
	public boolean isCarteAjoutee() {
339
	public boolean isCarteAjoutee() {
341
		return carteAjoutee;
340
		return carteAjoutee;
342
	}
341
	}
343
	
342
	
344
	public String construireContenuInfoMarker(Marker marker) {
343
	public String construireContenuInfoMarker(Marker marker) {
345
		final String htmlBoutonOk = "<br /><button id=\"okMap\" class=\"x-btn-text\" type=\"button\">OK</button>";
344
		final String htmlBoutonOk = "<br /><button id=\"okMap\" class=\"x-btn-text\" type=\"button\">OK</button>";
346
 
345
 
347
		String contenuMarker = "";
346
		String contenuMarker = "";
348
		
347
		
349
		if(valeurLocalite == null || valeurLocalite.trim().equals("")) {
348
		if(valeurLocalite == null || valeurLocalite.trim().equals("")) {
350
			if(marker.getPosition().lng() == 0 && marker.getPosition().lat() == 0) {
349
			if(marker.getPosition().lng() == 0 && marker.getPosition().lat() == 0) {
351
				LatLng point = centreFrance;
350
				LatLng point = centreFrance;
352
				marker.setPosition(point);
351
				marker.setPosition(point);
353
				niveauZoom = 6;
352
				niveauZoom = 6;
354
			}
353
			}
355
			contenuMarker = 
354
			contenuMarker = 
356
			"<div id=\"info_contenu\">"+
355
			"<div id=\"info_contenu\">"+
357
				"Aucun nom de lieu trouvé à cet emplacement <br />"
356
				"Aucun nom de lieu trouvé à cet emplacement <br />"
358
				+"Déplacez ce marqueur pour localiser votre observation (nom de lieu et coordonnées)<br />"
357
				+"Déplacez ce marqueur pour localiser votre observation (nom de lieu et coordonnées)<br />"
359
				+"longitude="+Util.tronquerNombrePourAffichage(""+marker.getPosition().lng(), 5)+"<br />"
358
				+"longitude="+Util.tronquerNombrePourAffichage(""+marker.getPosition().lng(), 5)+"<br />"
360
				+"latitude="+Util.tronquerNombrePourAffichage(""+marker.getPosition().lat(), 5)+
359
				+"latitude="+Util.tronquerNombrePourAffichage(""+marker.getPosition().lat(), 5)+
361
			"</div>";
360
			"</div>";
362
		} else {
361
		} else {
363
			String chaineLocalite = valeurLocalite + ((codeLoc.isEmpty()) ? "" : " ("+codeLoc+")");
362
			String chaineLocalite = valeurLocalite + ((codeLoc.isEmpty()) ? "" : " ("+codeLoc+")");
364
			contenuMarker = 
363
			contenuMarker = 
365
			"<div id=\"info_contenu\">"+
364
			"<div id=\"info_contenu\">"+
366
					chaineLocalite+"<br />"
365
					chaineLocalite+"<br />"
367
					+"longitude="+Util.tronquerNombrePourAffichage(""+marker.getPosition().lng(), 5)+"<br />"
366
					+"longitude="+Util.tronquerNombrePourAffichage(""+marker.getPosition().lng(), 5)+"<br />"
368
					+"latitude="+Util.tronquerNombrePourAffichage(""+marker.getPosition().lat(), 5)+
367
					+"latitude="+Util.tronquerNombrePourAffichage(""+marker.getPosition().lat(), 5)+
369
			"</div>";
368
			"</div>";
370
		}
369
		}
371
		
370
		
372
		return contenuMarker+ htmlBoutonOk;
371
		return contenuMarker+ htmlBoutonOk;
373
	}
372
	}
374
	
373
	
375
	public String construireContenuPartielInfoMarker(Marker marker) {
374
	public String construireContenuPartielInfoMarker(Marker marker) {
376
		final String htmlBoutonOk = "<br /><button id=\"okMap\" class=\"x-btn-text\" type=\"button\">OK</button>";
375
		final String htmlBoutonOk = "<br /><button id=\"okMap\" class=\"x-btn-text\" type=\"button\">OK</button>";
377
 
376
 
378
		String contenuMarker = "";
377
		String contenuMarker = "";
379
		
378
		
380
		contenuMarker = 
379
		contenuMarker = 
381
			"<div id=\"info_contenu\">"+
380
			"<div id=\"info_contenu\">"+
382
					"<div class=\"recherche_infos_zone_geo\">"+
381
					"<div class=\"recherche_infos_zone_geo\">"+
383
						"<div class=\"recherche_infos_zone_geo_en_cours\">"+
382
						"<div class=\"recherche_infos_zone_geo_en_cours\">"+
384
							"<img src=\"chargement_carte.gif\" />"+
383
							"<img src=\"chargement_carte.gif\" />"+
385
							"<div>"+
384
							"<div>"+
386
								"Recherche du nom de lieu en cours... <br />"+
385
								"Recherche du nom de lieu en cours... <br />"+
387
								"Cela peut prendre un moment"+
386
								"Cela peut prendre un moment"+
388
							"</div>"+
387
							"</div>"+
389
							"<hr class=\"nettoyage\" />"+
388
							"<hr class=\"nettoyage\" />"+
390
						"</div>"+
389
						"</div>"+
391
						"Si vous ne désirez que les coordonnées, vous pouvez cliquer dès maintenant sur OK"+
390
						"Si vous ne désirez que les coordonnées, vous pouvez cliquer dès maintenant sur OK"+
392
					"</div>"+
391
					"</div>"+
393
					"longitude="+Util.tronquerNombrePourAffichage("" + marker.getPosition().lng(), 5)+"<br />"+
392
					"longitude="+Util.tronquerNombrePourAffichage("" + marker.getPosition().lng(), 5)+"<br />"+
394
					"latitude="+Util.tronquerNombrePourAffichage("" + marker.getPosition().lat(), 5)+
393
					"latitude="+Util.tronquerNombrePourAffichage("" + marker.getPosition().lat(), 5)+
395
			"</div>";
394
			"</div>";
396
		
395
		
397
		return contenuMarker+ htmlBoutonOk;
396
		return contenuMarker+ htmlBoutonOk;
398
	}
397
	}
399
	
398
	
400
	public void afficherInfoMarker(Marker marker, String contenuInfo) {		
399
	public void afficherInfoMarker(Marker marker, String contenuInfo) {		
401
 
400
 
402
		info.setContent(contenuInfo);
401
		info.setContent(contenuInfo);
403
		info.open(map, marker);
402
		info.open(map, marker);
404
		
403
		
405
		pointLocalite = marker.getPosition();
404
		pointLocalite = marker.getPosition();
406
		
405
		
407
		info.addDomReadyListenerOnce(new InfoWindow.DomReadyHandler() {	
406
		info.addDomReadyListenerOnce(new InfoWindow.DomReadyHandler() {	
408
			@Override
407
			@Override
409
			public void handle() {
408
			public void handle() {
410
				ajouterListenerBouton("okMap");
409
				ajouterListenerBouton("okMap");
411
			}
410
			}
412
		});
411
		});
413
		
412
		
414
		recentrerCarte(marker.getPosition());
413
		recentrerCarte(marker.getPosition());
415
	}
414
	}
416
	
415
	
417
	public void afficherCarteEnAttenteAvecMarker(double lat, double lon) {
416
	public void afficherCarteEnAttenteAvecMarker(double lat, double lon) {
418
		pointLocalite = LatLng.create(lat, lon);
417
		pointLocalite = LatLng.create(lat, lon);
419
		nmk.setPosition(pointLocalite);
418
		nmk.setPosition(pointLocalite);
420
		afficherInfoMarker(nmk, construireContenuPartielInfoMarker(nmk));
419
		afficherInfoMarker(nmk, construireContenuPartielInfoMarker(nmk));
421
	}
420
	}
422
 
421
 
423
	public double[] getCoordsCentreFrance() {
422
	public double[] getCoordsCentreFrance() {
424
		double[] coords = {47.0504, 2.2347};
423
		double[] coords = {47.0504, 2.2347};
425
		return coords;
424
		return coords;
426
	}
425
	}
427
 
426
 
428
	public void setDoitZoomerSurRetour(boolean b) {
427
	public void setDoitZoomerSurRetour(boolean b) {
429
		zoomerSurRetour  = b;
428
		zoomerSurRetour  = b;
430
	}
429
	}
431
}
430
}