Aggiunere la geolocalizzazione dell'utente in un form di GeoDjango

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Aggiunere la geolocalizzazione dell'utente in un form di GeoDjango

Massimiliano Moraca
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
_______________________________________________
[hidden email]
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
Consulente GIS, Formatore, Blogger e Ciclista Urbano email: info@massimilianomoraca.it cell: 333 5949583 (lun-ven, 9.00-18.00) website: massimilianomoraca.it
Reply | Threaded
Open this post in threaded view
|

Re: Aggiunere la geolocalizzazione dell'utente in un form di GeoDjango

Amedeo Fadini
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 <
[hidden email]> 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
> _______________________________________________
> [hidden email]
> 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
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Aggiunere la geolocalizzazione dell'utente in un form di GeoDjango

Massimiliano Moraca
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 <[hidden email]>
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 <
> [hidden email]> 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
>> _______________________________________________
>> [hidden email]
>> 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
>
>
_______________________________________________
[hidden email]
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
Consulente GIS, Formatore, Blogger e Ciclista Urbano email: info@massimilianomoraca.it cell: 333 5949583 (lun-ven, 9.00-18.00) website: massimilianomoraca.it
Reply | Threaded
Open this post in threaded view
|

Re: Aggiunere la geolocalizzazione dell'utente in un form di GeoDjango

Massimiliano Moraca
Usando la console l'errore fa riferimento a questa riga che sta subito
sotto var = geolocation:
>
> projection: map.getView().getProjection(),


Il giorno mar 24 set 2019 alle ore 11:01 Massimiliano Moraca <
[hidden email]> ha scritto:

> 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 <[hidden email]>
> 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 <
>> [hidden email]> 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
>>> _______________________________________________
>>> [hidden email]
>>> 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
>>
>>
_______________________________________________
[hidden email]
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
Consulente GIS, Formatore, Blogger e Ciclista Urbano email: info@massimilianomoraca.it cell: 333 5949583 (lun-ven, 9.00-18.00) website: massimilianomoraca.it
Reply | Threaded
Open this post in threaded view
|

Re: Aggiunere la geolocalizzazione dell'utente in un form di GeoDjango

Massimiliano Moraca
In reply to this post by Massimiliano Moraca
Purtroppo ancora non sono riuscito a risolvere questo errore....

-----
Ingegnere, consulente GIS e ciclista urbano
--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
_______________________________________________
[hidden email]
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
Consulente GIS, Formatore, Blogger e Ciclista Urbano email: info@massimilianomoraca.it cell: 333 5949583 (lun-ven, 9.00-18.00) website: massimilianomoraca.it
Reply | Threaded
Open this post in threaded view
|

Re: Aggiunere la geolocalizzazione dell'utente in un form di GeoDjango

Massimiliano Moraca
L'errore è sparito ma adesso dopo la geolocalizzazione dell'utente il form
viene automaticamente inviato vuoto.
Se qualcuno sa darmi una spiegazione qui[1] c'è la domanda aggiornata su
Stack
-----
[1]
https://stackoverflow.com/questions/58063527/the-form-is-sent-automatically-after-the-geolocation

Il giorno mar 1 ott 2019 alle ore 12:11 Massimiliano Moraca <
[hidden email]> ha scritto:

> Purtroppo ancora non sono riuscito a risolvere questo errore....
>
> -----
> Ingegnere, consulente GIS e ciclista urbano
> --
> Sent from:
> http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
> _______________________________________________
> [hidden email]
> 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
_______________________________________________
[hidden email]
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
Consulente GIS, Formatore, Blogger e Ciclista Urbano email: info@massimilianomoraca.it cell: 333 5949583 (lun-ven, 9.00-18.00) website: massimilianomoraca.it