Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="utf-8">
- <title>Quote</title>
- <meta content="width=device-width, initial-scale=1.0" name="viewport">
- <meta content="" name="keywords">
- <meta content="" name="description">
- <!-- Favicon -->
- <link href="img/favicon.ico" rel="icon">
- <!-- Google Web Fonts -->
- <link rel="preconnect" href="https://fonts.googleapis.com">
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
- <link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500&family=Roboto:wght@500;700;900&display=swap" rel="stylesheet">
- <!-- Icon Font Stylesheet -->
- <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.10.0/css/all.min.css" rel="stylesheet">
- <link href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css" rel="stylesheet">
- <!-- Libraries Stylesheet -->
- <link href="lib/animate/animate.min.css" rel="stylesheet">
- <link href="lib/owlcarousel/assets/owl.carousel.min.css" rel="stylesheet">
- <link href="lib/lightbox/css/lightbox.min.css" rel="stylesheet">
- <!-- Customized Bootstrap Stylesheet -->
- <link href="css/bootstrap.min.css" rel="stylesheet">
- <!-- Template Stylesheet -->
- <link href="css/style.css" rel="stylesheet">
- <!-- jQuery (included in the head for the purpose of this example) -->
- <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
- <!-- Bootstrap Bundle (includes Popper) -->
- <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
- </head>
- <body>
- <div class="container-fluid bg-light overflow-hidden px-lg-0" style="margin: 6rem 0;">
- <div class="container quote px-lg-0">
- <div class="row g-0 mx-lg-0">
- <div class="col-lg-6 ps-lg-0" style="min-height: 600px;">
- <div class="position-relative h-100">
- <img class="position-absolute img-fluid w-70 h-50" src="img/solar.jpg" style="object-fit: auto;" alt="">
- </div>
- </div>
- <div class="col-lg-6 quote-text py-5 wow fadeIn" data-wow-delay="0.5s">
- <div class="p-lg-5 pe-lg-0">
- <div class="section-title text-start">
- <h1 class="display-5 mb-4">No Obligation Quote</h1>
- </div>
- <form id="contactForm" method="POST" enctype="multipart/form-data" action="https://formsubmit.co/[email protected]">
- <input type="hidden" name="_captcha" value="false">
- <input type="file" id="kmlFile" name="attachment" accept=".kml,.kmz" onchange="handleFile(this)">
- <input type="hidden" id="kml-output" name="kml-output">
- <div class="row g-3">
- <div class="col-12 col-sm-6">
- <input type="text" name="name" class="form-control border-0" placeholder="Your Name" style="height: 55px;">
- </div>
- <div class="col-12 col-sm-6">
- <input type="email" name="email" class="form-control border-0" placeholder="Your Email" style="height: 55px;">
- </div>
- <div class="col-12 col-sm-6">
- <input type="tel" name="number" class="form-control border-0" placeholder="Your Mobile" style="height: 55px;">
- </div>
- <div class="col-12 col-sm-6">
- <select class="form-select border-0" name="enquiry_type" style="height: 55px;">
- <option value="1">General Enquiry</option>
- <option value="2">Desktop CAD Drawings</option>
- </select>
- </div>
- <div class="col-12">
- <textarea name="text" class="form-control border-0" placeholder="Text"></textarea>
- </div>
- </div>
- <button type="submit">Submit</button>
- </form>
- <div id="successModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="successModalLabel" aria-hidden="true">
- <div class="modal-dialog" role="document">
- <div class="modal-content">
- <div class="modal-header">
- <h5 class="modal-title" id="successModalLabel">Submission Successful</h5>
- <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
- <span aria-hidden="true">×</span>
- </button>
- </div>
- <div class="modal-body">
- Your message has been sent successfully!
- </div>
- <div class="modal-footer">
- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
- </div>
- </div>
- </div>
- </div>
- <div id="loading" style="display:none;">Loading...</div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <!-- Google Map -->
- <div id="map" style="height: 400px; width: 100%;"></div>
- <div>
- <input id="search-input" type="text" placeholder="Search location">
- <button onclick="search()">Search</button>
- </div>
- <script>
- document.addEventListener('DOMContentLoaded', function () {
- var loading = document.getElementById('loading');
- var contactForm = document.getElementById('contactForm');
- var successModal = new bootstrap.Modal(document.getElementById('successModal'));
- contactForm.addEventListener('submit', function (event) {
- event.preventDefault();
- // Extract and append KML data to the form
- let kmlData = generateKML(allShapes);
- let kmlBlob = new Blob([kmlData], { type: 'application/vnd.google-earth.kml+xml' });
- let kmlFile = new File([kmlBlob], "shapes.kml");
- let formData = new FormData(contactForm);
- formData.append('attachment', kmlFile);
- loading.style.display = 'block';
- fetch(contactForm.action, {
- method: 'POST',
- body: formData,
- })
- .then(response => {
- if (!response.ok) {
- throw new Error('Network response was not ok');
- }
- return response.json();
- })
- .then(data => {
- console.log('Success:', data);
- loading.style.display = 'none';
- successModal.show();
- })
- .catch(error => {
- console.error('Error:', error);
- loading.style.display = 'none';
- alert('Submission failed. Please try again.');
- });
- });
- });
- // Function to handle KML file
- function handleFile(input) {
- var file = input.files[0];
- var reader = new FileReader();
- reader.onload = function (e) {
- document.getElementById('kml-output').value = e.target.result;
- };
- reader.readAsText(file);
- }
- let map, drawingManager, allShapes = [];
- function initMap() {
- map = new google.maps.Map(document.getElementById('map'), {
- center: { lat: 51.505, lng: -0.09 },
- zoom: 13
- });
- drawingManager = new google.maps.drawing.DrawingManager({
- drawingMode: null,
- drawingControl: true,
- drawingControlOptions: {
- position: google.maps.ControlPosition.TOP_CENTER,
- drawingModes: ['marker', 'polyline', 'polygon']
- },
- markerOptions: {
- editable: true,
- draggable: true
- },
- polylineOptions: {
- editable: true,
- draggable: true
- },
- polygonOptions: {
- editable: true,
- draggable: true
- }
- });
- drawingManager.setMap(map);
- google.maps.event.addListener(drawingManager, 'overlaycomplete', function (event) {
- allShapes.push(event.overlay);
- });
- }
- function search() {
- var input = document.getElementById('search-input').value;
- var coordinates = input.split(',');
- if (coordinates.length === 2) {
- var easting = parseFloat(coordinates[0]);
- var northing = parseFloat(coordinates[1]);
- if (!isNaN(easting) && !isNaN(northing)) {
- var location = OSGridToLatLng(easting, northing);
- map.setCenter(location);
- map.setZoom(13);
- } else {
- alert('Invalid eastings and northings. Please enter valid numbers.');
- }
- } else {
- alert('Invalid input. Please enter coordinates as "easting,northing".');
- }
- }
- function OSGridToLatLng(easting, northing) {
- var latLng = OsGridRef.osGridToLatLng(new OsGridRef(easting, northing));
- return new google.maps.LatLng(latLng.lat, latLng.lng);
- }
- function generateKML(shapes) {
- var kml = '<?xml version="1.0" encoding="UTF-8"?>\n' +
- '<kml xmlns="http://www.opengis.net/kml/2.2">\n' +
- '<Document>\n';
- shapes.forEach(function (shape, index) {
- if (shape.type === 'marker') {
- var position = shape.getPosition();
- kml += '<Placemark>\n' +
- '<name>Marker ' + (index + 1) + '</name>\n' +
- '<Point>\n' +
- '<coordinates>' + position.lng() + ',' + position.lat() + ',0</coordinates>\n' +
- '</Point>\n' +
- '</Placemark>\n';
- } else if (shape.type === 'polyline') {
- var path = shape.getPath();
- kml += '<Placemark>\n' +
- '<name>Polyline ' + (index + 1) + '</name>\n' +
- '<LineString>\n' +
- '<tessellate>1</tessellate>\n' +
- '<coordinates>\n';
- path.forEach(function (latLng) {
- kml += latLng.lng() + ',' + latLng.lat() + ',0\n';
- });
- kml += '</coordinates>\n' +
- '</LineString>\n' +
- '</Placemark>\n';
- } else if (shape.type === 'polygon') {
- var paths = shape.getPaths();
- kml += '<Placemark>\n' +
- '<name>Polygon ' + (index + 1) + '</name>\n' +
- '<Polygon>\n' +
- '<outerBoundaryIs>\n' +
- '<LinearRing>\n' +
- '<coordinates>\n';
- paths.getAt(0).forEach(function (latLng) {
- kml += latLng.lng() + ',' + latLng.lat() + ',0\n';
- });
- kml += '</coordinates>\n' +
- '</LinearRing>\n' +
- '</outerBoundaryIs>\n' +
- '</Polygon>\n' +
- '</Placemark>\n';
- }
- });
- kml += '</Document>\n' +
- '</kml>';
- return kml;
- }
- function handleFile(input) {
- const file = input.files[0];
- const reader = new FileReader();
- reader.onload = function(event) {
- const fileContent = event.target.result;
- displayKml(fileContent);
- };
- reader.readAsText(file);
- }
- function displayKml(kmlContent) {
- const parser = new DOMParser();
- const kmlDocument = parser.parseFromString(kmlContent, 'text/xml');
- const kmlLayer = new google.maps.KmlLayer({
- url: URL.createObjectURL(new Blob([kmlContent], { type: 'application/vnd.google-earth.kml+xml' })),
- map: map
- });
- kmlLayer.addListener('click', function(event) {
- const feature = event.featureData;
- if (feature) {
- console.log('Clicked on feature:', feature);
- alert('Clicked on feature: ' + feature.name);
- }
- });
- const bounds = new google.maps.LatLngBounds();
- const markers = [];
- const placemarks = kmlDocument.getElementsByTagName('Placemark');
- for (let i = 0; i < placemarks.length; i++) {
- const placemark = placemarks[i];
- const pointElement = placemark.getElementsByTagName('Point')[0];
- if (pointElement) {
- const coordinates = pointElement.getElementsByTagName('coordinates')[0].textContent;
- const [lng, lat] = coordinates.split(',');
- const marker = new google.maps.Marker({
- position: { lat: parseFloat(lat), lng: parseFloat(lng) },
- map: map,
- title: placemark.getElementsByTagName('name')[0].textContent
- });
- markers.push(marker);
- bounds.extend(marker.getPosition());
- }
- }
- if (markers.length > 0) {
- map.fitBounds(bounds);
- }
- }
- function exportShapes() {
- let kml = '<?xml version="1.0" encoding="UTF-8"?>';
- kml += '<kml xmlns="http://www.opengis.net/kml/2.2"><Document>';
- allShapes.forEach(shape => {
- if (shape instanceof google.maps.Marker) {
- const position = shape.getPosition();
- kml += `<Placemark><Point><coordinates>${position.lng()},${position.lat()}</coordinates></Point></Placemark>`;
- } else if (shape instanceof google.maps.Polygon) {
- kml += '<Placemark><Polygon><outerBoundaryIs><LinearRing><coordinates>';
- const path = shape.getPath();
- path.forEach(coord => {
- kml += `${coord.lng()},${coord.lat()},0 `;
- });
- kml += '</coordinates></LinearRing></outerBoundaryIs></Polygon></Placemark>';
- }
- // Add handling for other shape types (circle, polyline, etc.)
- });
- kml += '</Document></kml>';
- return new Blob([kml], { type: 'application/vnd.google-earth.kml+xml' });
- }
- addEventListener('submit', function(event) {
- event.preventDefault();
- const kmlBlob = exportShapes();
- const formData = new FormData(event.target);
- formData.append('attachment', kmlBlob, 'shapes.kml');
- fetch(event.target.action, {
- method: 'POST',
- body: formData,
- })
- .then(response => {
- if (!response.ok) {
- throw new Error('Network response was not ok');
- }
- return response.json();
- })
- document.getElementById('loading').style.display = 'block'; // Show loading indicator
- });
- ;
- </script>
- <!-- Google Maps API -->
- <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBt8ik-Jg8bTJCC-CaeHXrOfMPcRrdqEjk&libraries=drawing&callback=initMap" async defer></script>
- <!-- Additional script files -->
- <script src="lib/wow/wow.min.js"></script>
- <script src="lib/easing/easing.min.js"></script>
- <script src="lib/waypoints/waypoints.min.js"></script>
- <script src="lib/owlcarousel/owl.carousel.min.js"></script>
- <script src="lib/counterup/counterup.min.js"></script>
- <script src="lib/parallax/parallax.min.js"></script>
- <script src="lib/isotope/isotope.pkgd.min.js"></script>
- <script src="lib/lightbox/js/lightbox.min.js"></script>
- <script src="js/main.js"></script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement