diff --git a/assets/src/img/marker-icon-2x.png b/assets/src/img/marker-icon-2x.png new file mode 100644 index 000000000..2568dfe7f Binary files /dev/null and b/assets/src/img/marker-icon-2x.png differ diff --git a/assets/src/img/marker-icon.png b/assets/src/img/marker-icon.png new file mode 100644 index 000000000..2d92e41f2 Binary files /dev/null and b/assets/src/img/marker-icon.png differ diff --git a/gulpfile.js b/gulpfile.js index 27d9ff388..5f6eb4b57 100755 --- a/gulpfile.js +++ b/gulpfile.js @@ -120,6 +120,8 @@ const JS = gulp.parallel(() => { 'datatables.net-buttons-bs/js/buttons.bootstrap.js', 'smartwizard/dist/js/jquery.smartWizard.min.js', 'bootstrap-maxlength/dist/bootstrap-maxlength.js', + 'leaflet/dist/leaflet.js', + 'leaflet-gesture-handling/dist/leaflet-gesture-handling.min.js', ]; for (const i in vendor) { @@ -178,6 +180,8 @@ const CSS = gulp.parallel(() => { 'select2-bootstrap-theme/dist/select2-bootstrap.css', 'smartwizard/dist/css/smart_wizard.min.css', 'smartwizard/dist/css/smart_wizard_theme_arrows.min.css', + 'leaflet-gesture-handling/dist/leaflet-gesture-handling.min.css', + 'leaflet/dist/leaflet.css', ]; for (const i in vendor) { @@ -244,6 +248,15 @@ function srcImages() { .pipe(gulp.dest(config.production + '/' + config.paths.images)); } +function leaflet() { + return gulp.src([ + config.nodeDirectory + '/leaflet/dist/images/*.{jpg,png,jpeg}', + ]) + .pipe(flatten()) + .pipe(gulp.dest(config.production + '/' + config.paths.images + '/leaflet')); +} + + // Elaborazione dei fonts const fonts = gulp.parallel(() => { @@ -516,7 +529,7 @@ function clean() { } // Operazioni di default per la generazione degli assets -const bower = gulp.series(clean, gulp.parallel(JS, CSS, images, fonts, phpDebugBar, ckeditor, colorpicker, i18n, pdfjs, hotkeys, chartjs, password_strength, csrf)); +const bower = gulp.series(clean, gulp.parallel(JS, CSS, images, fonts, phpDebugBar, ckeditor, colorpicker, i18n, pdfjs, hotkeys, chartjs, password_strength, csrf, leaflet)); // Debug su CSS e JS exports.srcJS = srcJS; diff --git a/modules/anagrafiche/edit.php b/modules/anagrafiche/edit.php index 42e62ef8c..1dafae80e 100755 --- a/modules/anagrafiche/edit.php +++ b/modules/anagrafiche/edit.php @@ -245,8 +245,6 @@ $sede_cliente = $anagrafica->sedeLegale; $anagrafica_azienda = Anagrafica::find(setting('Azienda predefinita')); $sede_azienda = $anagrafica_azienda->sedeLegale; -$google = setting('Google Maps API key'); - echo '
'.$map_load_message.'
@@ -294,10 +286,10 @@ if (empty($google)) { '.((!empty($sede_cliente->lat) && !empty($sede_azienda->lat)) ? tr('(GPS)'): '' ).' '; - // Ricerca diretta su Google Maps + // Ricerca diretta su Mappa echo ' - - '.tr('Cerca su Google Maps').' + + '.tr('Cerca su Mappa').' '.((!empty($sede_cliente->lat)) ? tr(' (GPS)'): '' ).' '; @@ -312,15 +304,19 @@ echo ' openModal("'.tr('Modifica posizione').'", "'.$module->fileurl('modals/posizione.php').'?id_module='.$id_module.'&id_record='.$id_record.'"); } - function cercaGoogleMaps() { + function cercaOpenStreetMap() { const indirizzo = getIndirizzoAnagrafica(); - window.open("https://maps.google.com/maps/search/" + indirizzo); + if (indirizzo[0] && indirizzo[1]) { + window.open("https://www.openstreetmap.org/?mlat=" + indirizzo[0] + "&mlon=" + indirizzo[1] + "#map=12/" + indirizzo[0] + "/" + indirizzo[1]); + } else { + window.open("https://www.openstreetmap.org/search?query=" + indirizzo[2]); + } } function calcolaPercorso() { const indirizzo_partenza = getIndirizzoAzienda(); const indirizzo_destinazione = getIndirizzoAnagrafica(); - window.open("https://www.google.com/maps/dir/?api=1&origin=" + indirizzo_partenza + "&destination=" + indirizzo_destinazione); + window.open("https://www.openstreetmap.org/directions?engine=fossgis_osrm_car&route=" + indirizzo_partenza + ";" + indirizzo_destinazione[0] + "," + indirizzo_destinazione[1]); } function getIndirizzoAzienda() { @@ -330,9 +326,6 @@ echo ' const lat = parseFloat("'.$sede_azienda->lat.'"); const lng = parseFloat("'.$sede_azienda->lng.'"); - const indirizzo_default = encodeURI(indirizzo) + "," + encodeURI(citta); - if (!lat || !lng) return indirizzo_default; - return lat + "," + lng; } @@ -344,9 +337,8 @@ echo ' const lng = parseFloat("'.$sede_cliente->lng.'"); const indirizzo_default = encodeURI(indirizzo) + "," + encodeURI(citta); - if (!lat || !lng) return indirizzo_default; - return lat + "," + lng; + return [lat, lng, indirizzo_default]; } function caricaMappa() { @@ -355,32 +347,32 @@ echo ' return; } - $.getScript("//maps.googleapis.com/maps/api/js?libraries=places&key='.$google.'", function() { - const map_element = map_div[0]; - const lat = parseFloat("'.$sede_cliente->lat.'"); - const lng = parseFloat("'.$sede_cliente->lng.'"); + const lat = parseFloat("'.$sede_cliente->lat.'"); + const lng = parseFloat("'.$sede_cliente->lng.'"); - if (!lat || !lng) return; - const position = new google.maps.LatLng(lat, lng); + var map = L.map("map-edit", { + center: [lat, lng], + zoom: 10, + gestureHandling: true + }); - // Create a Google Maps native view under the map_canvas div. - const map = new google.maps.Map(map_element, { - zoom: 14, - scrollwheel: false, - mapTypeControl: true, - mapTypeId: "roadmap", - mapTypeControlOptions: { - style: google.maps.MapTypeControlStyle.DROPDOWN_MENU, - mapTypeIds: ["roadmap", "terrain"], - } - }); + var icon = new L.Icon({ + iconUrl: globals.rootdir + "/assets/dist/img/marker-icon.png", + shadowUrl:globals.rootdir + "/assets/dist/img/leaflet/marker-shadow.png", + iconSize: [25, 41], + iconAnchor: [12, 41], + popupAnchor: [1, -34], + shadowSize: [41, 41] + }); - map.setCenter(position); - const marker = new google.maps.Marker({ - position: position, - map: map, - }); - }); + L.tileLayer("'.setting("Tile layer OpenStreetMap").'", { + maxZoom: 17, + attribution: "© OpenStreetMap" + }).addTo(map); + + var marker = L.marker([lat, lng], { + icon: icon + }).addTo(map); } function risolviConto(tipo){ diff --git a/modules/anagrafiche/modals/posizione.php b/modules/anagrafiche/modals/posizione.php index 78a7abd15..a438164f0 100644 --- a/modules/anagrafiche/modals/posizione.php +++ b/modules/anagrafiche/modals/posizione.php @@ -20,8 +20,6 @@ include_once __DIR__.'/../../../core.php'; include_once __DIR__.'/../init.php'; -$google = setting('Google Maps API key'); - echo '