« Widget:CartoFab » : différence entre les versions

De fablabo
Aller à :navigation, rechercher
Cedric (discussion | contributions)
Aucun résumé des modifications
Aucun résumé des modifications
 
(102 versions intermédiaires par un autre utilisateur non affichées)
Ligne 1 : Ligne 1 :
<noinclude>
<noinclude>
Proto de développement de[[widget:CarteFablabs]]
Proto de développement de [[widget:CarteFablabs]]




Ligne 10 : Ligne 10 :


|longitude=51(optionnel)
|longitude=51(optionnel)
$.each(data.items, function(i,item){
 
      $("<img/>").attr("src", item.media.m).appendTo("#images");
      if ( i == 3 ) return false;
    });
|latitude=3.56(optionnel)
|latitude=3.56(optionnel)


Ligne 32 : Ligne 29 :
inspiration: http://www.mediawikiwidgets.org/w/index.php?title=Widget:Google_Maps&action=edit
inspiration: http://www.mediawikiwidgets.org/w/index.php?title=Widget:Google_Maps&action=edit


 
item
nom artlab
nom artlab


adresse 11ème Paris
adresse 11ème Parislabel
site http://www.digitalarti.com/fr/blog/artlab_blog
site http://www.digitalarti.com/fr/blog/artlab_blog
long 2.3
long 2.3
Ligne 45 : Ligne 42 :


ne pas effacer ! ça sert !
ne pas effacer ! ça sert !
{{#ask: [[Category:Fablabs]] [[long::!:]]
|?long # -
|?latt #label
|?site
|?adresse
|?intitulé
|?structures
|format=json
|limit=500
}} : tous les fablabs qui ont une longitude...
tous les fablabs en format CSV :
{{#ask: [[Category:Fablabs]]  
{{#ask: [[Category:Fablabs]]  
|?long # -
|?long # -
Ligne 52 : Ligne 62 :
|?intitulé
|?intitulé
|?structures
|?structures
|format=json
|format=csv
|limit=500
}}
}}


cartographie tous les fablabs
cartographie tous les fablabs
{{#ask: [[Category:Fablabs]]  
{{#ask: [[Category:Fablabs]] [[intitulé::fablab]]
|?long # -
|?long # -
|?latt #
|?latt #
Ligne 63 : Ligne 78 :
|?intitulé
|?intitulé
|?structures
|?structures
|limit=500
}}
}}




Ligne 82 : Ligne 100 :
<script src="http://cdn.leafletjs.com/leaflet-0.4/leaflet.js"></script>
<script src="http://cdn.leafletjs.com/leaflet-0.4/leaflet.js"></script>


<div id="<!--{$nom|escape:'quotes'|default:'carte'}-->" style="width: <!--{$largeur|escape:'quotes'|default:'720'}-->px; height: <!--{$hauteur|escape:'quotes'|default:'420'}-->px"></div>csv
<div id="<!--{$nom|escape:'quotes'|default:'carte'}-->" style="width: <!--{$largeur|escape:'quotes'|default:'700'}-->px; height: <!--{$hauteur|escape:'quotes'|default:'420'}-->px"></div>
<div id="nombreLabos"></div>
<div id="nombreLabos">chargement...</div>
<script>
<script>


///fonction pour recuperer la liste des coords des labs
 
function requete(url) {
 
if (window.XMLHttpRequest)  // Mozilla, Safari,...
///////////fin javaload
  xhr = new XMLHttpRequest();
 
else if (window.ActiveXObject)
 
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
 
if (!xhr) {
var cartofab = L.map('<!--{$nom|escape:'quotes'|default:'carte'}-->').setView([<!--{$longitude|escape:'quotes'|default:'47'}-->, <!--{$latitude|escape:'quotes'|default:'1.7'}-->], <!--{$zoom|escape:'quotes'|default:'5'}-->);
  alert("Abandon : Impossible de créer une instance Ajax");
 
  return false;
 
}
 
xhr.onreadystatechange = reponse;
// add an OpenStreetMap tile layer
xhr.open("GET", url, true);
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
xhr.send(null);
    attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}
}).addTo(cartofab);


function reponse() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {


//alert(xhr.responseText);
//appel de la liste des labs
document.getElementById("nombreLabos").innerHTML = "Recherche des labs...";


numLabs=0;


//le fichier arrive en CSV (valeurs séparées par des virgules)
$.ajax({
var lignes=new RegExp("[\n]+", "g");
    url: 'Sp%C3%A9cial:Ask/-5B-5BCategory:Fablabs-5D-5D-20-5B-5Blong::!:-5D-5D/-3FLong-23-2D/-3FLatt-23label/-3FSite/-3FAdresse/-3FIntitul%C3%A9/-3FStructures/limit%3D500/searchlabel%3D/format%3Djson',
//alert(responseText);
    data: {
var tableau=xhr.responseText.split(lignes);
        format: 'json'
var colones=new RegExp("[,]+", "g");
    },
for(var i=1;i<tableau.length-1;i++)
    dataType: 'json',
{
    success: function(jsondata) {  


console.log(jsondata.results);


var donnees=tableau[i].split(colones);


  var coords=new Array(donnees[2],donnees[1]);
  var nom=donnees[0];
  var url=donnees[3];
  var intitule=donnees[5];//type de lieu
  var structure=donnees[6];//structure juridique


  // alert(coords[0]);
          $.each(jsondata.results, function(i,item){
  L.marker([coords[0], coords[1]]).addTo(cartofab).bindPopup("<b><a href="+url+" target=\"_blank\">"+nom+"</a></b><br/>"+intitule+"<br/>"+structure);
     
}
              numLabs++;
document.getElementById("nombreLabos").innerHTML = "Il ya actuellement "+tableau.length+" laboratoires renseignés sur cette page";
console.log(numLabs);
document.getElementById("nombreLabos").innerHTML =responseText;
}
else {
    alert("La requête AJAX a rencontré un problème ..");
  }
}
}


              Intitulés="";
              for(var j= 0; j < item.printouts.Intitulé.length; j++)
                  {
                      Intitulés=Intitulés+" "+item.printouts.Intitulé[j].fulltext;
                  }
              structures="";
              for(var k= 0; k < item.printouts.Structures.length; k++)
                  {
                      structures=structures+" "+item.printouts.Structures[k].fulltext;
                  }
   


          L.marker([item.printouts.Latt[0],item.printouts.Long[0]]).addTo(cartofab).bindPopup("<b><a href="+item.printouts.Site[0]+" target=\"_blank\">"+i+"</a></b><br/>"+Intitulés+"<br/>"+structures);


 


///////////fin javaload


         




var cartofab = L.map('<!--{$nom|escape:'quotes'|default:'carte'}-->').setView([<!--{$longitude|escape:'quotes'|default:'47'}-->, <!--{$latitude|escape:'quotes'|default:'1.7'}-->], <!--{$zoom|escape:'quotes'|default:'5'}-->);
    });
    document.getElementById("nombreLabos").innerHTML = "Il ya actuellement "+numLabs+" Labos renseignés sur cette page";


L.tileLayer('http://{s}.tile.cloudmade.com/7ad1b23bf3f347f8b0ab2416f66737fc/997/256/{z}/{x}/{y}.png', {
maxZoom: 18,
attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://cloudmade.com">CloudMade</a>'
}).addTo(cartofab);


}


});




//appel de la liste des labs
requete("Sp%C3%A9cial:Ask/-5B-5BCategory:Fablabs-5D-5D/-3FLong-23-2D/-3FLatt-23-2D/-3FSite/-3FAdresse/-3FIntitul%C3%A9/-3FStructures/limit%3D50/format%3Djson/sep%3D,/headers%3Dshow");




$.getJSON("Sp%C3%A9cial:Ask/-5B-5BCategory:Fablabs-5D-5D/-3FLong-23-2D/-3FLatt-23-2D/-3FSite/-3FAdresse/-3FIntitul%C3%A9/-3FStructures/limit%3D50/format%3Djson/sep%3D,/headers%3Dshow", function(json) {
alert(json);
  $.each(json.items, function(i,item){
    alert(item[0]);
    });
});


</script>
</script>
<noinclude>
àvoir requete json semantik mieux
=====documentation=====
http://semantic-mediawiki.org/wiki/Serialization_%28JSON%29
https://www.mediawiki.org/wiki/Category:Snippets_with_JavaScript
</noinclude>

Dernière version du 21 février 2017 à 13:05

Proto de développement de widget:CarteFablabs


usage : {{#widget:CartoFab |nom=(optionnel) |longitude=51(optionnel) |latitude=3.56(optionnel) |zoom=1 a 18(optionnel) |largeur=(optionnel) |hauteur=(optionnel) }}

trouver les coordonnées : http://universimmedia.pagesperso-orange.fr/geo/nievre.htm

on peut utiliser un droplet présent sur cette page pour connaitre les coords d'un objet :http://www.mediawikiwidgets.org/Google_Maps


inspiration: http://www.mediawikiwidgets.org/w/index.php?title=Widget:Google_Maps&action=edit

item nom artlab

adresse 11ème Parislabel site http://www.digitalarti.com/fr/blog/artlab_blog long 2.3 latt 48.8 intitulé fablab structures sarl


ne pas effacer ! ça sert ! JSON : tous les fablabs qui ont une longitude...


tous les fablabs en format CSV : CSV



cartographie tous les fablabs




L.marker([51.5, -0.09]).addTo(map) .bindPopup("Hello world!
I am a popup.").openPopup();




<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.4.4/leaflet.css" />

<script src="http://cdn.leafletjs.com/leaflet-0.4/leaflet.js"></script>

chargement...

<script>


///////////fin javaload


var cartofab = L.map().setView([, ], );


// add an OpenStreetMap tile layer L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {

   attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'

}).addTo(cartofab);



//appel de la liste des labs document.getElementById("nombreLabos").innerHTML = "Recherche des labs...";

numLabs=0;

$.ajax({

   url: 'Sp%C3%A9cial:Ask/-5B-5BCategory:Fablabs-5D-5D-20-5B-5Blong::!:-5D-5D/-3FLong-23-2D/-3FLatt-23label/-3FSite/-3FAdresse/-3FIntitul%C3%A9/-3FStructures/limit%3D500/searchlabel%3D/format%3Djson',
   data: {
       format: 'json'
   },
   dataType: 'json',
   success: function(jsondata) { 

console.log(jsondata.results);


         $.each(jsondata.results, function(i,item){
      
             numLabs++;

console.log(numLabs);

             Intitulés="";
             for(var j= 0; j < item.printouts.Intitulé.length; j++)
                 {
                     Intitulés=Intitulés+" "+item.printouts.Intitulé[j].fulltext;
                 }
             structures="";
             for(var k= 0; k < item.printouts.Structures.length; k++)
                 {
                     structures=structures+" "+item.printouts.Structures[k].fulltext;
                 }
   
          L.marker([item.printouts.Latt[0],item.printouts.Long[0]]).addTo(cartofab).bindPopup("<a href="+item.printouts.Site[0]+" target=\"_blank\">"+i+"</a>
"+Intitulés+"
"+structures);




    });
   document.getElementById("nombreLabos").innerHTML = "Il ya actuellement "+numLabs+" Labos renseignés sur cette page";


}

});



</script>


àvoir requete json semantik mieux


documentation

http://semantic-mediawiki.org/wiki/Serialization_%28JSON%29

https://www.mediawiki.org/wiki/Category:Snippets_with_JavaScript