Module de calcul de tarif en fonction de la distance parcourue

  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 24)
  • Auteur
    Messages
  • #513805
    Dixitomate
    Participant
    Initié WordPress
    12 contributions

    Bonjour,

    Je requiers vos lumières sur une problématique bien précise.

    Je souhaite réaliser une application permettant d’obtenir ce résultat :

    http://www.newway.fr/fr/reservation-moto-taxi.php

    En gros en fonction de la distance de trajet estimée, cela me génèrera un prix théorique en fonction de l’heure.

    – Quel outil utiliseriez-vous pour créer ce module ?
    – WordPress est-il le meilleur outil pour réaliser ce genre de projet ?

    Merci d’avance de vos retour.
    Cordialement,

    #851206
    Guy
    Participant
    Maître WordPress
    14833 contributions

    si tu sais calculer la distance, le calcul du cout ne devrait pas poser de problèmes. Si c’est proportionnel, cela se résumera à quelque chose de proche d’un produit en croix.

    #851207
    Dixitomate
    Participant
    Initié WordPress
    12 contributions

    Effectivement toute la problématique est de calculer la distance, quel plugin pourrait me permettre d’atteindre ce résultat ?

    Merci d’avance.

    #851208
    Dixitomate
    Participant
    Initié WordPress
    12 contributions

    Bonjour,

    Ayant progressé sur mon projet, je bloque maintenant sur un autre problème.

    J’ai personnalisé un plugin qui permet de calculer correctement la distance et le tarif de la course en Javascript.

    J’utilise un autre plugin pour la réservation de la course.

    Mon problème est de reprendre les variables adresse de départ et adresse d’arrivée dans ce plugin et de les transférer dans l’autre plugin au sein des champs du formulaire de réservation pour enregistrer la résa de la course.

    Quelqu’un saurait-il comment procéder efficacement ?
    Je dispose de notions de Javascript et PHP, et bloque sur cette difficulté de passer d’un plugin à l’autre.

    Merci d’avance pour votre aide

    #851209
    Guy
    Participant
    Maître WordPress
    14833 contributions

    pour le calcul de la distance entre deux points tu te sers de quoi?

    C’est un formulaire assez classique, le problème sera la validation des adresses, as tu des fonctions individuelles de validation ou laisseras tu le plugin te retourner une erreur si une des adresses non trouvées.

    #851210
    Dixitomate
    Participant
    Initié WordPress
    12 contributions

    Bonjour Guy et merci de se pencher sur mon souci,

    J’utilise l’API google maps a travers un petit plugin que j’ai customisé pour mes besoins:

    http://wordpress.org/extend/plugins/ab-google-map-travel/

    La partie gérant les “adresses” est présente dans le fichier ab google map travel.php :

    <div id="abgdc-wrap">
     <div id="map_canvas"></div><!-- #map_canvas -->
    <form action="" method="post" name="form1">
    <table class="abgdc-table">
    <tr>
    <td>Votre lieu de départ (adresse et ville):</td></tr><tr><td></td></tr>
    <tr><td>Votre lieu d&apos;arrivée (adresse et ville):</td></tr><tr><td></td></tr>
    <tr><td>
    
    
    </td>
    </tr>
    </table>
    </form>
     <div id="distance"></div><!-- #distance -->
     <div id="steps"></div><!-- #steps -->
    </div><!-- #abgdc-wrap -->

    Et aussi dans ab get distance.js :

    // JavaScript Document
    var directionDisplay;
      var directionsService = new google.maps.DirectionsService();
      var map;
    
      function initialize(lat,lng) {
        directionsDisplay = new google.maps.DirectionsRenderer();
        //var location = new google.maps.LatLng(9.93123, 76.26730);
    	var location = new google.maps.LatLng(lat, lng);
        
        var zm =  parseInt(document.getElementById(‘map_zoom’).value);
    
        var myOptions = {
     
          zoom: zm,
          mapTypeId: google.maps.MapTypeId.ROADMAP,
          center: location
        }
        
        map = new google.maps.Map(document.getElementById(“map_canvas”), myOptions);
        directionsDisplay.setMap(map);
    
      }
    
      function calcRoute(from,to){
    	var start = from;
        var end = to;
        var request = {
            origin:start,
            destination:end,
            travelMode: google.maps.DirectionsTravelMode.DRIVING,
    	unitSystem: google.maps.DirectionsUnitSystem.METRIC
        };
        // function to round the decimal digits eg: round(123.456,2); gives 123.45
        function round(number,X) {
            X = (!X ? 2 : X);
            return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
        }
    
        directionsService.route(request, function(response, status) {
          if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(response);
    
    		var distance = response.routes[0].legs[0].distance.text;
    		var time_taken = response.routes[0].legs[0].duration.text;
                    
                    var calc_distance = response.routes[0].legs[0].distance.value;
    
                    var less_five =  document.getElementById(‘less_five’).value;
                    var more_five =  document.getElementById(‘more_five’).value;
    				
    				var curr_format =  document.getElementById(‘curr_format’).value;
                    
                    if (calc_distance <= 250) {
                        var amount_to_pay = calc_distance * less_five;
                    }
                    else {
                        var amount_to_pay = calc_distance * more_five;
                    }
                    
                    var rounded_amount_to_pay = round(25+amount_to_pay/1000,2);
    				var rounded_amount_to_pay_night = round(30+amount_to_pay*1.2/1000,2);
    				var rounded_amount_to_pay_wkd_day = round(35+amount_to_pay*1.5/1000,2);
    				var rounded_amount_to_pay_wkd_night = round(50+amount_to_pay*1.7/1000,2);			
    
    		document.getElementById('distance').innerHTML = '<div class="distance-inner">‘+ “La distance <em>“+from+”</em> <em>“+to+”</em>est de: <strong>“+distance+”</strong>n
                    <br />n
                    Temps de trajet: <strong>“+time_taken+”</strong><br />n
                    <br />Prix incluant <strong>25EUR</strong> de prise en charge: <strong>“+curr_format+rounded_amount_to_pay+”</strong>n
                    <br />Semaine 18h-20h avec <strong>30EUR</strong> de prise en charge: <strong>“+curr_format+(rounded_amount_to_pay_night)+”</strong>n
    				<br />WE et Jours Feries 9h-18h avec <strong>35EUR</strong> de prise en charge: <strong>“+curr_format+rounded_amount_to_pay_wkd_day+”</strong>n
    				<br />WE et Jours Feries 18h-20h avec <strong>50EUR</strong> de prise en charge: <strong>“+curr_format+rounded_amount_to_pay_wkd_night+”</strong>n
    				</div>“;
                    
    		var steps = “<ul>“;
    		var myRoute = response.routes[0].legs[0];
    		for (var i = 0; i < myRoute.steps.length; i++) {
    		 steps += "<li>” + myRoute.steps[i].instructions + “</li>“;
    		}
    		steps += “</ul>“;
    		document.getElementById(‘steps’).innerHTML = ‘<div class="steps-inner"><h4>Trajet vers ‘+response.routes[0].legs[0].end_address+’</h2>‘+steps+’</div>‘;
          }
    	  else{
    		document.getElementById(‘distance’).innerHTML = ‘<span class="gdc-error">Google Map could not be created for the entered parameters. Please be specific while providing the destination location.</span>‘;
    	  }
        });
      }
    
    //window.onload=function(){initialize();}

    Comment puis-je récupérer ces variables start/end dans mon formulaire ?

    Merci !

    #851211
    Guy
    Participant
    Maître WordPress
    14833 contributions

    je n’aurai pas trop le temps de regarder d’ici demain… donc si quelqu’un est plus rapide 🙂

    #851212
    Dixitomate
    Participant
    Initié WordPress
    12 contributions

    Même demain, après demain, ce serait grandement apprécié..
    Merci

    #851213
    Dixitomate
    Participant
    Initié WordPress
    12 contributions

    Bonjour quelqu’un serait il en messure d’apporter un élément de réponse ?
    Merci

    #851214
    Guy
    Participant
    Maître WordPress
    14833 contributions

    je viens de regarder l’extension AB Google Map Travel, elle est pas mal (à part quelques problèmes au niveau de la traduction 🙂 ).

    Bon… je n’ai pas trop compris ce que tu veux faire, ce que tu veux récuperer et comment l’autre extension récupère les données?

    #851215
    Dixitomate
    Participant
    Initié WordPress
    12 contributions

    Effectivement je ne connais pas d’équivalent à cet appli, elle fait exactement ce que j’attends c’est à dire calculer un itinéraire rapidement, ce qui est à ma connaissance sans equivalent dans le catalogue des plugins wordpress.

    Je l’ai customisé au niveau des formules de calcul, traduite, modifié le layout.
    Malheureusement, je n’ai que de vagues notions de code et la je bloque.

    En fait tu peux étudier le projet à cet endroit :
    projet -point- motolead -point- fr

    Je veux prendre les infos “adresse de depart” et “adresse d’arrivée” de la page devis pour transférer ces 2 infos sur la page réservation, lorsque l’on clique sur le bouton de réservation de la page devis, pour qu’il soit inséré dans les champs correspondants du formulaire sur cette page réservation.

    Merci de ton aide si tu as réussi à comprendre l’idée

    Jb

    #851216
    Guy
    Participant
    Maître WordPress
    14833 contributions

    OK, oui je comprends.

    Une solution serait de remplir l’url de destination du bouton réservation directement dans le javascript avec quelque chose de la forme “/contact?adr_start=adressedepart&adr_end=adressearrivee

    Ensuite, dans ta page contact, tu récupère les valeurs et remplit les champs.

    C’est ce qui me semble le plus simple

    #851217
    Dixitomate
    Participant
    Initié WordPress
    12 contributions

    Je vois ce que tu veux dire,

    J’ai une question de neophyte wordpress, vu que chaque page est sur un plugin différent :

    Est ce que si je rentre le nom de la variable “adresse de départ” qui est définie dans le php/js de la page devis sur le php/js de la page réservation, il va malgré tout la reconnaître ? Ou est ce que je dois “déclarer” quelque chose avant ?

    Merci bcp

    #851218
    Guy
    Participant
    Maître WordPress
    14833 contributions

    je ferai comme ça, à la fin de la partie gérant les adresses dans ab google map travel.php

    <div id="distance"></div><!-- #distance -->
     <div id="steps"></div><!-- #steps -->
       </div><!-- #abgdc-wrap -->
      <a id="reserve" href="/contact/" title="reservation">
         <img class="aligncenter wp-image-216" width="140" height="35" alt="" src="/wp-content/uploads/button-reservation.png" title="button-reservation" style="border: 0px">
     </a>‘;?>

    Cela permet de rajouter le bouton de reservation automatiquement (je pense que tu peux soit le mettre ici, soit le laisser en dehors, cela marchera, mais tu remarqueras que j’ai ajouté un id à la balise (id=”reserve”), il faudra le remettre si tu ne le mets pas ici.

    Dans le js, rajouter:

    document.getElementById(‘reserve’).setAttribute(‘href’,’/contact/?start_adr=’+encodeURIComponent(response.routes[0].legs[0].start_address)+’&end_adr=’+encodeURIComponent(response.routes[0].legs[0].end_address));

    juste en dessous de la ligne :

    document.getElementById(‘steps’).innerHTML = ‘

    ‘;

    Ensuite, dans la page de contact, tu récupéreras les valeurs qui seront stockées dans $_GET et $_GET, tu mets les valeurs dans les bonnes cases de ton formulaire de réservation et voila.

    IL serait bien aussi d’afficher l’adresse trouvée dans la page devis, si on tape avenue de la républlique, ben… il nous retournera quelque chose, mais on n’est vraiment pas certain de la ville qu’il choisira.

    #851219
    Dixitomate
    Participant
    Initié WordPress
    12 contributions

    Ok ! je vais essayer ca et sinon, excellente remarque effectivement, de reprendre l’adresse trouvée par le gmaps.

    Initialement en fait l’itinéraire complet avec l’adresse précise trouvée s’affiche dans ab google map, mais je l’avais dissimulé en CSS, mais je vais peut etre le reafficher pr recup l’adresse trouvée et utiliser cellela

    je tiens au courant demain si ca fonctionne

15 sujets de 1 à 15 (sur un total de 24)
  • Le sujet ‘Module de calcul de tarif en fonction de la distance parcourue’ est fermé à de nouvelles réponses.