{"id":15,"date":"2024-10-27T14:28:26","date_gmt":"2024-10-27T14:28:26","guid":{"rendered":"https:\/\/bg.pendampingusaha.com\/animasi\/?page_id=15"},"modified":"2025-01-26T17:09:36","modified_gmt":"2025-01-26T17:09:36","slug":"maps","status":"publish","type":"page","link":"https:\/\/bg.pendampingusaha.com\/animasi\/maps\/","title":{"rendered":"maps data extractor"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"15\" class=\"elementor elementor-15\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7933cc1 e-flex e-con-boxed e-con e-parent\" data-id=\"7933cc1\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ee26da7 elementor-widget elementor-widget-html\" data-id=\"ee26da7\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Maps Data Extractor - Fixed Version<\/title>\r\n    <style>\r\n        * {\r\n            margin: 0;\r\n            padding: 0;\r\n            box-sizing: border-box;\r\n            font-family: Arial, sans-serif;\r\n        }\r\n\r\n        body {\r\n            padding: 20px;\r\n            background: #f5f5f5;\r\n        }\r\n\r\n        .container {\r\n            max-width: 1200px;\r\n            margin: 0 auto;\r\n            background: white;\r\n            padding: 20px;\r\n            border-radius: 8px;\r\n            box-shadow: 0 2px 8px rgba(0,0,0,0.1);\r\n        }\r\n\r\n        h1 {\r\n            color: #1a237e;\r\n            margin-bottom: 20px;\r\n            font-size: 24px;\r\n            text-align: center;\r\n        }\r\n\r\n        textarea {\r\n            width: 100%;\r\n            height: 200px;\r\n            padding: 15px;\r\n            margin-bottom: 15px;\r\n            border: 1px solid #ddd;\r\n            border-radius: 4px;\r\n            font-size: 14px;\r\n            font-family: monospace;\r\n        }\r\n\r\n        .button-group {\r\n            display: flex;\r\n            gap: 10px;\r\n            margin-bottom: 20px;\r\n        }\r\n\r\n        button {\r\n            padding: 10px 20px;\r\n            border: none;\r\n            border-radius: 4px;\r\n            cursor: pointer;\r\n            font-weight: bold;\r\n            transition: all 0.3s ease;\r\n        }\r\n\r\n        .primary-btn {\r\n            background: #2196f3;\r\n            color: white;\r\n        }\r\n\r\n        .primary-btn:hover {\r\n            background: #1976d2;\r\n        }\r\n\r\n        .export-btn {\r\n            background: #4caf50;\r\n            color: white;\r\n        }\r\n\r\n        .export-btn:hover {\r\n            background: #43a047;\r\n        }\r\n\r\n        .clear-btn {\r\n            background: #f44336;\r\n            color: white;\r\n        }\r\n\r\n        .clear-btn:hover {\r\n            background: #e53935;\r\n        }\r\n\r\n        table {\r\n            width: 100%;\r\n            border-collapse: collapse;\r\n            margin-top: 20px;\r\n        }\r\n\r\n        th, td {\r\n            padding: 12px;\r\n            text-align: left;\r\n            border: 1px solid #ddd;\r\n        }\r\n\r\n        th {\r\n            background: #f8f9fa;\r\n            color: #1a237e;\r\n            font-weight: bold;\r\n        }\r\n\r\n        tr:nth-child(even) {\r\n            background-color: #f8f9fa;\r\n        }\r\n\r\n        .coordinate-cell {\r\n            font-family: monospace;\r\n        }\r\n\r\n        .copy-button {\r\n            padding: 4px 8px;\r\n            font-size: 12px;\r\n            background: #2196f3;\r\n            color: white;\r\n            border: none;\r\n            border-radius: 3px;\r\n            cursor: pointer;\r\n        }\r\n\r\n        .copy-button:hover {\r\n            background: #1976d2;\r\n        }\r\n\r\n        #messageBox {\r\n            position: fixed;\r\n            top: 20px;\r\n            right: 20px;\r\n            padding: 10px 20px;\r\n            background: #4caf50;\r\n            color: white;\r\n            border-radius: 4px;\r\n            display: none;\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n    <div class=\"container\">\r\n        <h1>Maps Data Extractor<\/h1>\r\n        \r\n        <textarea id=\"input\" placeholder=\"Paste URL Google Maps di sini (satu URL per baris)...\"><\/textarea>\r\n        \r\n        <div class=\"button-group\">\r\n            <button class=\"primary-btn\" onclick=\"extractData()\">Extract Data<\/button>\r\n            <button class=\"export-btn\" onclick=\"exportToExcel()\">Export ke Excel<\/button>\r\n            <button class=\"clear-btn\" onclick=\"clearAll()\">Clear<\/button>\r\n        <\/div>\r\n\r\n        <div id=\"output\">\r\n            <table id=\"resultTable\">\r\n                <thead>\r\n                    <tr>\r\n                        <th>No<\/th>\r\n                        <th>Nama Tempat<\/th>\r\n                        <th>Koordinat<\/th>\r\n                        <th>Actions<\/th>\r\n                    <\/tr>\r\n                <\/thead>\r\n                <tbody id=\"resultBody\"><\/tbody>\r\n            <\/table>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"messageBox\">Data berhasil disalin!<\/div>\r\n\r\n    <script>\r\n        function extractData() {\r\n            const input = document.getElementById('input').value;\r\n            const urls = input.split('\\n').filter(url => url.trim());\r\n            const resultBody = document.getElementById('resultBody');\r\n            resultBody.innerHTML = '';\r\n\r\n            urls.forEach((url, index) => {\r\n                try {\r\n                    \/\/ Extract place name\r\n                    const nameMatch = url.match(\/place\\\/([^\/]+)\\\/\/);\r\n                    let name = 'Unknown Place';\r\n                    if (nameMatch) {\r\n                        name = decodeURIComponent(nameMatch[1].replace(\/\\+\/g, ' '));\r\n                    }\r\n\r\n                    \/\/ Extract coordinates\r\n                    const coordPattern = \/!3d(-?\\d+\\.\\d+)!4d(-?\\d+\\.\\d+)\/;\r\n                    const coordMatch = url.match(coordPattern);\r\n                    \r\n                    if (coordMatch) {\r\n                        const lat = coordMatch[1];\r\n                        const lng = coordMatch[2];\r\n                        const coordinates = `${lng},${lat}`;\r\n                        const copyFormat = `${name}\\t${coordinates}`;\r\n\r\n                        const row = document.createElement('tr');\r\n                        row.innerHTML = `\r\n                            <td>${index + 1}<\/td>\r\n                            <td>${name}<\/td>\r\n                            <td class=\"coordinate-cell\">${coordinates}<\/td>\r\n                            <td>\r\n                                <button class=\"copy-button\" onclick=\"copyText('${coordinates}')\">Copy Koordinat<\/button>\r\n                                <button class=\"copy-button\" onclick=\"copyText('${copyFormat}')\">Copy Semua<\/button>\r\n                            <\/td>\r\n                        `;\r\n                        resultBody.appendChild(row);\r\n                    }\r\n                } catch (error) {\r\n                    console.error('Error processing URL:', error);\r\n                }\r\n            });\r\n        }\r\n\r\n        function copyText(text) {\r\n            navigator.clipboard.writeText(text).then(() => {\r\n                showMessage();\r\n            });\r\n        }\r\n\r\n        function showMessage() {\r\n            const messageBox = document.getElementById('messageBox');\r\n            messageBox.style.display = 'block';\r\n            setTimeout(() => {\r\n                messageBox.style.display = 'none';\r\n            }, 2000);\r\n        }\r\n\r\n        function exportToExcel() {\r\n            const table = document.getElementById('resultTable');\r\n            let csv = 'No,Nama Tempat,Koordinat\\n';\r\n            \r\n            const rows = Array.from(table.getElementsByTagName('tr'));\r\n            \r\n            \/\/ Skip header row and process data rows\r\n            for (let i = 1; i < rows.length; i++) {\r\n                const cells = rows[i].getElementsByTagName('td');\r\n                if (cells.length >= 3) {\r\n                    const no = cells[0].textContent;\r\n                    const name = cells[1].textContent;\r\n                    const coord = cells[2].textContent;\r\n                    csv += `${no},\"${name}\",\"${coord}\"\\n`;\r\n                }\r\n            }\r\n\r\n            const blob = new Blob([csv], { type: 'text\/csv;charset=utf-8;' });\r\n            const link = document.createElement('a');\r\n            link.href = URL.createObjectURL(blob);\r\n            link.download = 'koordinat_lokasi.csv';\r\n            link.click();\r\n        }\r\n\r\n        function clearAll() {\r\n            document.getElementById('input').value = '';\r\n            document.getElementById('resultBody').innerHTML = '';\r\n        }\r\n    <\/script>\r\n<\/body>\r\n<\/html>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Maps Data Extractor &#8211; Fixed Version Maps Data Extractor Extract Data Export ke Excel Clear No Nama Tempat Koordinat Actions Data berhasil disalin!<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/bg.pendampingusaha.com\/animasi\/wp-json\/wp\/v2\/pages\/15"}],"collection":[{"href":"https:\/\/bg.pendampingusaha.com\/animasi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bg.pendampingusaha.com\/animasi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bg.pendampingusaha.com\/animasi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bg.pendampingusaha.com\/animasi\/wp-json\/wp\/v2\/comments?post=15"}],"version-history":[{"count":32,"href":"https:\/\/bg.pendampingusaha.com\/animasi\/wp-json\/wp\/v2\/pages\/15\/revisions"}],"predecessor-version":[{"id":560,"href":"https:\/\/bg.pendampingusaha.com\/animasi\/wp-json\/wp\/v2\/pages\/15\/revisions\/560"}],"wp:attachment":[{"href":"https:\/\/bg.pendampingusaha.com\/animasi\/wp-json\/wp\/v2\/media?parent=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}