Subversion Repositories eFlore/Applications.cel

Rev

Rev 2627 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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