IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Utiliser la mise à l'échelle des images de jquery mobile avec leaflet


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 23
    Points
    23
    Par défaut Utiliser la mise à l'échelle des images de jquery mobile avec leaflet
    Bonjour,

    Dans l'application que je suis en train de développer j'affiche sur une carte leaflet la position de la prise de photo avec un icone. En cliquant sur l'icone j'ouvre un popup avec à l'intérieur la photo. Or le popup fais la taille de la photo et est donc plus grand que l'écran du smartphone. J'ai pu voir que JQuery mobile que j'utlise déjà permet de mettre à l'échelle l'image en fonction de la taille de l'écran.

    Malgré la doc de JQuery mobile, http://mobile.jquery-fr.com/demos/wi...up-images.html, je ne suis pas parvenu à utiliser et comprendre cette fonction de la bibliothèque de plus j’utilise Leaflet.

    Quelqu'un peut-il m'aider/m'expliquer sur la mise à l'échelle des images avec jquery ?

    Voici la partie de mon code qui créer l'icone et le popup avec la photo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    tx.executeSql("SELECT * FROM table_photo", [], function(tx, res) {
    						var i = 0;
    						while (i <= res.rows.length-1 && res.rows.length!=0){						
    							L.marker([res.rows.item(i).coor_x , res.rows.item(i).coor_y], {icon : iconephoto}).addTo(points_photos)
    																		  .bindPopup('<img src="'+res.rows.item(i).photo+'" alt="image" style = "max-width : 100%; max-height=100%;">');		
     
    							i=i+1;
    						}
    					});
    Cordialement,


    PS : Je travail sur cordova.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Je relance le sujet.

    J'arrive bien à insérer un bouton qui ouvre une image avec une taille adaptée à l'écran du smartphone mais je ne parviens pas à ouvrir l'image au clique de l'icône.
    Avez vous des suggestions à me faire pour que je ne tourne pas en rond ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    J'ai toujours quelques soucis. Mon popup s'ouvre, je clique sur l'image et elle s'agrandie. C'est ce que je souhaite obtenir l'image s'ouvre à partir d'un lien fixe. Je veux que ce lien soit différent de chaque image. J'ai le lien dans une variable javascript, or il me faut appeler cette variable dans du html, je n'y parviens pas est ce possible ?

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 070
    Points : 44 675
    Points
    44 675
    Par défaut
    Bonjour,
    peut-être qu'un peu de code, HTML généré il va de soi, ou une page exemple en ligne inciterait à mieux appréhender ton soucis.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2015
    Messages : 25
    Points : 23
    Points
    23
    Par défaut
    En effet, veuillez m'excuser.

    L'icone avec popup se crée ligne 251 (JS), la div qui gère l'image est aux lignes 36 à 38.

    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
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    <html>
        <head>
            <meta charset="utf-8" />
            <meta name="format-detection" content="telephone=no" />
            <meta name="msapplication-tap-highlight" content="no" />
            <!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
            <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
            <title>AÏGO</title>
    		<!--<link href="C:/APPLICATION/www/img" /> -->
    		<link rel="stylesheet" type="text/html" href="www/index.html" />
    		<link rel="stylesheet" type="text/css" href="css/index.css" />
    		<link rel="stylesheet" href="css/leaflet.css" />
    		<script src="js/leaflet.js"></script>
    		<script type="text/javascript" src="cordova.js"></script>
    		<script type="text/javascript" src="js/capture.js"></script>
    		<link rel="stylesheet" href="jquery/jquery.mobile-1.4.5.min.css">
    		<script src="jquery/jquery-1.11.3.min.js"></script>
    		<script src="jquery/jquery.mobile-1.4.5.min.js"></script>
    		<script type="text/javascript" src="js/date_heure.js"></script>
     
    </head>
     
     
     
    <body>
     
    	<div data-role="page" id="carte">
     
    		<div data-role="content">
    			<div id="map" ></div>
    			<button onclick='centrageauto();'>Ma position</button>
    			<a href="#infopoint" data-role="button" onclick='Picture();'>Photo</a>
    			<button onclick='envoi_donnees();'>Envoi au SIG</button>
    		</div>
     
    		<div data-role="popup" id="popupParis" data-overlay-theme="a" data-theme="d" data-corners="false">
    			<a href="#" data-rel="back" data-role="button" data-theme="a" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Fermer</a><img class="popphoto" src="http://craponne.arles.fr/appli_photo/photo/1435733848852admin.JPG" style="max-height:512px;" alt="Paris, France">
    		</div>
     
    	</div>
     
     
     
    <!-- Début de la seconde page -->
    	<div data-role="page" id="infopoint">
     
    		<div data-role="content">
     
    			<center>
     
    				<br>
    					<!--<form name="formulaire" action="page.php" method="post" target="_blank">-->
    				<label>Date et heure : </label>
    					<span id="date_heure"></span>
    						<script id="date_heure" type="text/javascript">window.onload = date_heure('date_heure');</script>
    				<br/>
    				<br/>
     
    				<label>Intérêt : </label>
    					<select id="interet">
    						<option>Fuite</option>
    						<option>Bouché</option>
    						<option>Végétation</option>
    					</select> 
    				<br/>
    				<br/>
     
    				<label>Commentaire : </label>
    					<!--<input type="text" rows="4" cols="25" id="commentaire"/>-->
    					<textarea id="commentaire"></textarea>
     
    				<br/>
    				<br/>
     
    				<a href="#carte" class="ui-btn" onclick='onDeviceReadytb();'>Valider</a>	
     
    					<!--</form>-->
    			</center>
     
    		</div><!-- /content -->
     
     
    	</div><!-- /page -->
     
    	<script>
    		$( document ).on( "pageinit", function() {
    			$( ".photopopup" ).on({
    				popupbeforeposition: function() {
    					var maxHeight = $( window ).height() - 60 + "px";
    					$( ".photopopup img" ).css( "max-height", maxHeight );
    				}
    			});
    		});
    	</script>	
     
    	<script>
    		/*------------------------------Initialisation de la carte------------------------------*/
    		document.addEventListener("deviceready", onDeviceReady, false);
     
    		function onDeviceReady() {
     
    			alert("Bienvenue à toi "+localStorage.user);
    			id_user=localStorage.user;
    			asa=localStorage.asa;
     
    			// ouverture de la base 
    			db = window.sqlitePlugin.openDatabase({name: "my.db"});	
     
    			//chargment de la carte
    			$('#map').load('pagecreate',function() {			
     
    				//création de la variable carte : 'map'
    				map = L.map('map').setView([10, 4.6495853], 18); 
     
    				//création de la couche de fond Open Street Map (OSM) avec options d'affichage à l'ouverture
    				L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
    					maxZoom: 26,
    					minZoom: 2,
    					attribution: 'Map data © ; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>' +
    						'<a href="http://creativecommons.org/licenses/by-sa/2.0/"></a>',
    					id: 'examples.map-i875mjb7'	
    				}).addTo(map);
     
    				setTimeout(function(){
    					map.invalidateSize();
    				}, 1);	
     
    				/*création de la couche photo*/	
    				points_photos = new  L.layerGroup();			
    				points_photos.addTo(map);
     
    				iconephoto = L.icon({iconUrl: 'img/iconephoto.png'}); //icone photo 
     
    				//ajout des markers photos (un marqueur par photo tous contenus dans la couche points_photos)	
    				db.transaction(function(tx) {
     
    					//creation de la table
    					tx.executeSql("DROP TABLE IF EXISTS table_photo");
    					tx.executeSql("CREATE TABLE IF NOT EXISTS table_photo (id_photo TEXT, date_heure TEXT, asa TEXT, id_user TEXT, interet TEXT, coor_x REAL, coor_y REAL, commentaire TEXT, photo TEXT, envoi TEXT)"); //créer la table table_photo avec les champs et leur type
     
    					//chargement des marqueurs
    					tx.executeSql("SELECT * FROM table_photo", [], function(tx, res) {
    						var i = 0;
    						while (i <= res.rows.length-1 && res.rows.length!=0){						
    							L.marker([res.rows.item(i).coor_x , res.rows.item(i).coor_y], {icon : iconephoto}).addTo(points_photos)
    																		  .bindPopup('<img src="'+res.rows.item(i).photo+'" alt="image" style = "max-width : 200%; max-height=200;">');		
     
    							i=i+1;
    						}
    					});
    				});
     
    		/*------------------------------exécution du GPS du mobile------------------------------*/
     
    				//la variable 'centrageautoactive' a pour valeure 'true'
    				centrageautoactive = true;
     
    				//activation du GPS
    				navigator.geolocation.watchPosition(onSuccess,error,{ maximumAge: 0, timeout: 10000, enableHighAccuracy: true });
     
    				//pour 'centrageautoactive' égale 'true' la fonction détermine les coordonnées x et y et exécute centrageauto
    				function onSuccess(position) {
    					x = position.coords.latitude;
    					y = position.coords.longitude;
    					if (centrageautoactive==true){	
    						centrageauto();
    					}
    				}
     
    				//applique la valeure 'false' à la variable 'centrageautoactive' au déplacement de la map
    				map.on('dragstart', function() {
    					centrageautoactive = false;
    				});
     
    				//réapplique la valeure 'true' à la variable 'centrageautoactive' et réexécute la fonction 'centrageauto'
    				function reactivecentrageauto () {
    					centrageautoactive = true;
    					centrageauto();
    				}
     
    				//lancement d'une alerte en cas d'erreur
    				function error(erreur) {
    				var info = "Erreur lors de la géolocalisation : ";
    					switch (erreur.code) {
    						case error.PERMISSION_DENIED:
    							alert ('Vous n’avez pas donné la permission');
    					break;
    						case erreur.TIMEOUT :
    							alert ('Délais de recherche dépassé, vérifier si le GPS fonctionne');	
    					break;
    						case error.POSITION_UNAVAILABLE:
    							alert ('La position n’a pu être déterminée');
    					break;
    						case error.UNKNOW_ERROR:
    							alert ('Erreur inconnue');
    					break;
    					}
    				}
     
     
    		/*------------------------------gestion de l'icone et 'centrageauto' permet de centrer la carte sur la position------------------------------*/	
     
    				//mise en forme du marker
    				var monIcone = L.icon({iconUrl: 'img/monIcone.png'});		
    				marker = L.marker([0 , 0], {icon : monIcone}).addTo(map);
     
    			});
    		}
     
    		function centrageauto() {
     
    		map.setView([x,y], 18);
    		//map.setZoom(18,{animate:true});
    		marker.setLatLng([x,y]);
    		}
     
    		/*------------------------------utilisation de l'appareil photo du mobile------------------------------*/
     
    		//lancement de l'appareil photo avec options et succès ou non
    		function   Picture (){																	  
    			navigator.camera.getPicture(succesphoto, onFail, {quality: 100, destinationType: Camera.DestinationType.FILE_URI, targetWidth: 800, targetHeight: 800, mediaType: Camera.MediaType.ALLMEDIA,correctOrientation: true});
    		}
     
    		//succès de la prise de photo
    		function succesphoto(imageURI) {
    			cheminphoto=imageURI;
    			tempx=x;
    			tempy=y;
    		}
     
    		//erreur en cas de non prise de photo
    		function onFail(message) {
    			alert('Echec: ' + message);
    		}
     
    		/*------------------------------enregistrement du point et de ses données sur la base de données mobile sqlite------------------------------*/
     
     
    		function onDeviceReadytb() {
     
    			db.transaction(function(tx) {
     
    				//creer id photo
    				var d = new Date();
    				var d_photo = d.getTime()+""; //date et heure de la prise de vue temps en seconde depuis 1970
    				var id_photo=d_photo+id_user; //creation de l id photo
     
    				//insertion dans la table de la photo
    				tx.executeSql('INSERT INTO table_photo (id_user, asa,id_photo,date_heure,interet, commentaire, photo, coor_x, coor_y, envoi) VALUES ("'+id_user+'","'+asa+'","'+id_photo+'","'+d_photo+'","'+$('#interet').val()+'","'+$('#commentaire').val()+'","'+cheminphoto+'","'+tempx+'","'+tempy+'","non")');
    				//Creation du nouveau marqueur
    				L.marker([tempx,tempy], {icon : iconephoto}).addTo(points_photos)
    																		  .bindPopup('<a href="#popupParis" data-rel="popup" data-position-to="window" data-transition="fade"><img class="popphoto" src="'+cheminphoto+'" alt="Paris, France" style="width:50%"></a>');
    																		  //
    																		  //'<img src="'+cheminphoto+'" alt="image" style = "max-width : 200; max-height=200;">'
    			});
    		}
    		/*------------------------------Enregistrement des photos dans la base de données sur serveur dédié------------------------------*/
     
    		function envoi_donnees(){
     
    			//on liste les photos pas encore envoyées
    			db.transaction(function(tx) {
    				tx.executeSql('SELECT * FROM table_photo WHERE envoi="non"', [], function(tx, res) {
    					if (res.rows.length!=0) {
    						i = 0;
    						nombre_envoi = res.rows.length-1;
     
    						while (i <= res.rows.length-1){
     
    							json_envoi="["+JSON.stringify(res.rows.item(i))+"]";	
    							//alert(json_envoi);							
     
    							var lien_photo = res.rows.item(i).photo;
    							var nom_photo = res.rows.item(i).id_photo;
    							if(i != res.rows.length-1){
    								envoi_photo(lien_photo,nom_photo,json_envoi,i); //appel de la fonction envoi_photo
    							}else{
    								envoi_derniere_photo(lien_photo,nom_photo,json_envoi,i);
    							}
    							/*$.ajax({ //on crée une communication avec le serveur via protocole ajax
    								url : 'http://craponne.arles.fr/appli_photo/appli_photo.php', //fichier du serveur vers lequel on va envoyer nos données
    								type : 'GET', 		// protocole d'envoi
    								data: {data:json_envoi}, // données que l'on envoi
    								dataType: 'jsonp', // type de données qui javascript doit recevoir de php
    								success: function(res){	//fonction executée en cas de succes, doit recevoir du jsonp
    									if (res.envoi="envoi réussi"){
    										db.transaction(function(tx) {
    											tx.executeSql('UPDATE table_photo SET envoi = "oui" WHERE envoi ="non"', [], function() {
    												alert(res.envoi);
    											});
    										});
    									}else{
    										alert(res.envoi);
    									}
    								}
     
    							});*/
    							i=i+1;
    						}
     
    					} else{
    						alert('Photos déjà envoyées');
    					}
    				});		
    			});
     
    			// fonction envoi_photo, envoi les photos (jusqu'à la l'avant dernnière comprise), écrit à partir de cordova plugin FileTransfer
    			function envoi_photo(adresse_photo,nom_photo,json_envoi,compteur){
     
    				//$.get('http://craponne.arles.fr/appli_photo/geojson.php');
     
    				var options = new FileUploadOptions();
    				options.fileKey="file";
    				options.fileName=nom_photo;
    				options.mimeType="image/jpeg";
    				var params = {};
    				params.json = json_envoi;
     
    				options.params = params;
     
    				var ft = new FileTransfer();
    				ft.upload(adresse_photo, encodeURI('http://craponne.arles.fr/appli_photo/photo.php'),win, fail, options);
     
    				function win(r) {
    					db.transaction(function(tx) {
    						tx.executeSql('UPDATE table_photo SET envoi = "oui" WHERE envoi ="non" AND id_photo="'+r.response+'"', [], function() {
     
    						});
    					});
    					alert('update');
    				}
     
    				function fail(error) {
    					alert("An error has occurred: Code = " + error.code);
    				}
     
    			}
    			// envoi cette fois seulement la dernière
    			function envoi_derniere_photo(adresse_photo,nom_photo,json_envoi,compteur){
    				var options = new FileUploadOptions();
    				options.fileKey="file";
    				options.fileName=nom_photo;
    				options.mimeType="image/jpeg";
    				var params = {};
    				params.json = json_envoi;
     
    				options.params = params;
     
    				var ft = new FileTransfer();
    				ft.upload(adresse_photo, encodeURI('http://craponne.arles.fr/appli_photo/photo.php'),win, fail, options);
     
    				function win(r) {
    					db.transaction(function(tx) {
    						tx.executeSql('UPDATE table_photo SET envoi = "oui" WHERE envoi ="non" AND id_photo="'+r.response+'"', [], function() {
    						});
    					});
    					$.ajax({ //on crée une communication avec le serveur via protocole ajax
    						url : 'http://craponne.arles.fr/appli_photo/geojson.php', //fichier du serveur vers lequel on va envoyer nos données
    						type : 'GET', 		// protocole d'envoi
    					});
    					alert('Envoi réussi');
    				}
     
    				function fail(error) {
    					alert("An error has occurred: Code = " + error.code);
    				}
     
    			}
    		}
     
     
    	</script>
     
     
    </body>
    </html>

Discussions similaires

  1. Mise à l'échelle des graphiques
    Par May01 dans le forum Débuter
    Réponses: 2
    Dernier message: 05/01/2014, 10h01
  2. Mise en cache des images
    Par madevilts dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 21/02/2012, 09h25
  3. Mise à l'échelle des repères
    Par cmail dans le forum IGN API Géoportail
    Réponses: 3
    Dernier message: 28/05/2009, 18h02
  4. Empêcher la mise en cache des images
    Par oranoutan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 15/02/2006, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo