[Gfoss] Aggiunere la geolocalizzazione dell'utente in un form di GeoDjango

Massimiliano Moraca massimilianomoraca a gmail.com
Mar 24 Set 2019 11:01:16 CEST


Ciao Amedeo, grazie per la risposta.
Quel punto interrogativo c'è anche nel codice della mappa che mi funziona,
il codice proviene da lì, la uso come muletto per i test.

Il giorno mar 24 set 2019 alle ore 10:43 Amedeo Fadini <amefad a gmail.com>
ha scritto:

> Ciao in questa riga
>
> positionFeature.setGeometry(pos ?
>
> è capitato un punto di domanda alieno, verifica che non ci sia anche nel
> codice effettivo.
>
> Il codice javascript lo dovresti mettere nel template in maniera che esca
> una pagine html valida, per quanto ne so in javascript è sempre questione
> di tempi, dovrsti fare in modo che quando creai il nuovo vettore l'oggetto
> mappa sia già creato.
>
> Ad ogni modo da console dovresti trovare degli errori che ti guidano sulla
> strada giusta
>
> Amefad
>
> Il giorno mar 24 set 2019 alle ore 08:39 Massimiliano Moraca <
> massimilianomoraca a gmail.com> ha scritto:
>
>> Buongiorno a tutti,
>> sto provando a fare quanto in oggetto ma ho difficoltà a capire dove
>> inserire lo script per farlo. Lo script che voglio usare è già
>> correttamente in uso su altre mie mappe ma sono mappe che non prevedono
>> l'aggiunta di oggetti da parte dell'utente.
>> Qui[1] ho inserito quello che ho fatto; in pratica ho creato un mio widget
>> sulla base di OpenLayersWidget modificando sia il template che il
>> JavaScript. Il widget customizzato funziona. Successivamente ho deciso di
>> inserire sia lo script per il geocoder che quello per la geolocalizzazione
>> dell'utente in modo da facilitarlo nell'aggiunta dell'oggetto. Il geocoder
>> funziona ma quello che non riesco a far funzionare è la geolocalizzazione
>> dell'utente.
>> In pratica non riesco a capire dove inserire il codice per far funzionare
>> correttamente la gelocalizzazione. A livello di JavaScript non è che sia
>> così ferrato...
>>
>> Per le altre mappe ho creato un bottone che compare su mappa; l'utente ci
>> clicca su e viene geolocalizzato:
>>
>> >     <div class="geolocation" id="geolocateme">
>> >       <button class="btn geolocation-button">
>> >         <i class="fas fa-globe"></i>
>> >       </button>
>> >     </div>
>>
>>
>> il tutto avviene usando questo script:
>>
>> >         var geolocation = new ol.Geolocation({
>> >               projection: map.getView().getProjection(),
>> >               tracking: false,
>> >               trackingOptions: {
>> >                 enableHighAccuracy: true,
>> >                 maximumAge: 5000
>> >               }
>> >             });
>> >           var button = document.getElementById('geolocateme');
>> >           var handleGetPosition = function(e) {
>> >           var trackingwasalreadyon = geolocation.getTracking();
>> >           if(trackingwasalreadyon){
>> >               geolocation.setTracking(false);
>> >               } else
>> >               { geolocation.setTracking(true); getPosition();
>> >               }
>> >           };
>> >           button.addEventListener('click', handleGetPosition, false);
>> >           button.addEventListener('touchstart', handleGetPosition,
>> false);
>> >         function getPosition() {
>> >             var positionFeature = new ol.Feature();
>> >             positionFeature.setStyle(new ol.style.Style({
>> >               image: new ol.style.Circle({
>> >                 radius: 6,
>> >                 fill: new ol.style.Fill({
>> >                   color: '#fa0000'
>> >                 }),
>> >                 stroke: new ol.style.Stroke({
>> >                   color: '#fff',
>> >                   width: 2
>> >                 }),
>> >               }),
>> >             }));
>> >             geolocation.on('change:position', function() {
>> >               var pos = geolocation.getPosition();
>> >               positionFeature.setGeometry(pos ?
>> >                   new ol.geom.Point(pos) : null);
>> >               view.setCenter(pos);
>> >               view.setZoom(12);
>> >             });
>> >             new ol.layer.Vector({
>> >               map: map,
>> >               source: new ol.source.Vector({
>> >                 features: [
>> >                   positionFeature,
>> >                 ]
>> >               })
>> >             });
>> >         };
>>
>>
>> E questo è quello che sto provando ad implementare nel form. Qualcuno qui
>> ha esperienza in questo?
>>
>>
>>
>> -----
>> [1]
>>
>> https://stackoverflow.com/questions/58063527/how-to-add-geolocation-to-a-geodjango-form
>> _______________________________________________
>> Gfoss a lists.gfoss.it
>> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
>> Questa e' una lista di discussione pubblica aperta a tutti.
>> I messaggi di questa lista non hanno relazione diretta con le posizioni
>> dell'Associazione GFOSS.it.
>> 764 iscritti al 23/08/2019
>
>


Maggiori informazioni sulla lista Gfoss