const apiKey = AIzaSyDQ8QkVgJXc2UHjEDZdJK-nEQ-bsnUJSXY&libraries; // Ersetzen Sie durch Ihren eigenen Google Maps API-Schlüssel // Funktion, um die Entfernung zwischen zwei Adressen zu berechnen async function calculateDistance(origin, destination) { const response = await fetch( `https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=${origin}&destinations=${destination}&key=${apiKey}` ); const data = await response.json(); const distance = data.rows[0].elements[0].distance.value / 1000; return distance; } // Funktion, um den Preis basierend auf Fahrzeugtyp, Entfernung und Zusatzoptionen zu berechnen async function getPrice() { const fahrzeugtyp = $("input[name='fahrzeugtyp']:checked").val(); const zusatzoptionen = $("input[name='zusatzoption']:checked").map(function () { return parseFloat($(this).val()); }).get(); const startAddress = $("#kunden-standort").val(); const destinationAddress = $("#ziel-standort").val(); const distance = await calculateDistance(startAddress, destinationAddress); let basePrice; // Die Preise und Entfernungsstaffeln für jeden Fahrzeugtyp festlegen if (fahrzeugtyp === "typ1") { basePrice = 100; } else if (fahrzeugtyp === "typ2") { basePrice = 150; } else { basePrice = 200; } const pricePer50Km = 50; const distanceFactor = Math.ceil(distance / 50); const distancePrice = basePrice + (distanceFactor - 1) * pricePer50Km; const additionalServicesPrice = zusatzoptionen.reduce((a, b) => a + b, 0); return distancePrice + additionalServicesPrice; } // Entfernungsprüfung und Weiterleitung zur nächsten Seite $("#step1-next").on("click", async function () { const logisticsAddress = $("#logistik-standort option:selected").text(); const customerAddress = $("#kunden-standort").val(); const distance = await calculateDistance(logisticsAddress, customerAddress); if (distance <= 50) { $("#step1").hide(); $("#step2").show(); } else { alert("Die Entfernung zwischen Logistik- und Kunden-Standort darf nicht größer als 50 km sein."); } }); // Preisaktualisierung und Weiterleitung zur nächsten Seite $("#step2-next").on("click", async function () { const aktuellerPreis = await getPrice(); $("#aktueller-preis").text(aktuellerPreis.toFixed(2)); $("#step2").hide(); $("#step3").show(); }); // Zurück-Navigation $(".back-button").on("click", function () { const currentStep = $(this).data("current-step"); $(`#step${currentStep}`).hide(); $(`#step${currentStep - 1}`).show(); }); // Formular absenden $("#preisberechnung-form").on("submit", async function (event) { event.preventDefault(); const aktuellerPreis = await getPrice(); // Daten zum Senden an den Server vorbereiten const formData = new FormData(this); formData.append("aktueller-preis", aktuellerPreis); // Daten an den Server senden $.ajax({ url: "send_mail.php", method: "POST", data: formData, processData: false, contentType: false, success: function (response) { if (response === "success") { alert("Ihre Anfrage wurde erfolgreich gesendet. Sie erhalten in Kürze eine Bestätigungs-E-Mail."); } else { alert("Fehler beim Senden Ihrer Anfrage. Bitte versuchen Sie es erneut."); } }, error: function () { alert("Fehler beim Senden Ihrer Anfrage. Bitte versuchen Sie es erneut."); }, });

Formular Test

Formular Preisberechnung

Schritt 1: Standorte und Datum auswählen





Keine NEUKUNDEN mehr!

Sehr geehrte Besucher von Peplies Web Consult. 

Ich bedauere sehr, Ihnen mitteilen zu müssen, dass wir aktuell keine Neukunden mehr aufnehmen.
Wenden Sie sich bei Interesse bitte an einen anderen Dienstleister. 

Vielen Dank für Ihr Verständnis.

Julian Peplies von Peplies Web Consult.