28-08-2016, 10:25 PM
(28-08-2016, 09:36 PM)jojo3544 a écrit :(28-08-2016, 09:23 PM)Antoinee a écrit : Pourquoi ne pas mettre en cache un fichier au format JSON et filtrer les avions côté client avec du JavaScript ?J'y avais pensé mais on était parti sur un modèle différent et donc on a continué la dessus. Et j'ai franchement pas trop envie de tout refaire... Il y a d'autres priorités
(28-08-2016, 09:23 PM)Antoinee a écrit : Pour exporter un tableau au format JSON il y a une fonction en PHP :Je sais merci
http://fr.php.net/json_encode
Je te mets tout ça dans une belle boite et c'est parti
Code PHP :
var add_flight = function (map, flight)
var line;
var triangle = {
path: flight.path, // En registrer tous les avions quelque part et passer un numéro
fillColor: flight.color, // Ou placer la condition ici pour savoir si l'avion nous appartient ou pas
fillOpacity: 1,
size: new google.maps.Size(120, 190),
scale: flight.scale, // ...
anchor: new google.maps.Point(1200, 1000),
strokeColor: 'black',
rotation: flight.rotation, // ...
strokeWeight: 1
};
var distanceFractionnaire = flight.completion; // 0.0 à 1.0
var pointDepart = new google.maps.LatLng(flight.from.lat, flight.from.lon);
var pointArrivee = new google.maps.LatLng(flight.to.lat, flight.to.lon);
var pointIntermediaire = google.maps.geometry.spherical.interpolate(pointDepart, pointArrivee, distanceFractionnaire);
var plane = new google.maps.Marker({
position: pointIntermediaire,
map: map,
icon: triangle
});
var contenuInfoBulle = 'Départ : '+flight.from.iata+' à '+flight.from.time+'<br>Arrivée : '+flight.to.iata+' à '+flight.to.time+'<br>Appareil : '+flight.plane.model+'<br>Compagnie : '+flight.company.name;
var infoBulle = new google.maps.InfoWindow({
content: contenuInfoBulle
});
google.maps.event.addListener(plane, 'click', function() {
//infoBulle.open(map, plane);
update(flight.from.iata,flight.to.iata,flight.from.time,flight.to.time,flight.company.logo,flight.company.name,flight.plane.manufacturer+' '+flight.plane.model,flight.plane.id,flight.plane.configuration.join(', '),flight.passengers.join(', '));
if(typeof(line) != 'undefined')
{
line.setMap(null);
}
line = new google.maps.Polyline({map:map,path:[pointDepart,pointArrivee],strokeColor:"#842768",strokeWeight: 2, geodesic:true});
});
}
Le JSON
Code PHP :
flights = [
{
path: 'M...',
color: 'yellow|red',
scale: 0.2,
rotation: 359,
completion: 0.75,
passengers: [120, 59, 18],
from: {
lat: 41.235,
lon: 1.236,
iata: 'XXX',
time: '00:00:00'
},
to: {
lat: 42.42,
lon: 3.14,
iata: 'YYY',
time: '12:34:56'
},
plane: {
id: 1234,
manufacturer: 'Airbus',
model: 'A320',
configuration: [120, 60, 20]
}
company: {
name: 'Air France',
logo: 'https://domain.tld/images/logo.png'
}
},
{
// ...
}
];