Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [AJAX]aggiornamento dinamico di un marker su una mappa

    Ciao a tutti, questa è la mia situazione:

    ho un'applicazione web che, interagendo con un DB, ottiene delle
    coordinate e segnala, con un marker google, la posizione.
    Ogni volta che voglio vedere se la posizione è cambiata devo riaggiornare
    la pagina.

    Quello che vorrei è: aggiornare dinamicamente il marker, in modo da vedere
    il "movimento" di questo sulla mappa.

    Sò che in ajax è possibile. Come si fa?

    Grazie

  2. #2
    beh, puoi usare una libreria JS che lancia una richiesta AJAX periodica ed ottiene i dati per le coordinate in formato JSON e li passa all'oggetto GMarker che applichi alla mappa, poi centri la stessa sulle nuove coordinate.

    Puoi creare un file PHP che stampi la latitudine e longitudine nel formato JSON:

    codice:
    {
       "lat" : 126513,
       "lng" : 255684
    }
    Poi Usando una libreria, tipo MooTools, fai in modo di eseguire la chiamata AJAX periodica:

    codice:
    var ReqJSON, googmarker, googmap;
    
    var defaultCoord; //Qui ci metti il codice PHP per generare l'oggetto JS con le coordinate da mostrare all'apertura della pagina
    
    var Init = function(){
       ReqJSON = new Request.JSON({
            'url': 'path/to/file.php',
            'onSuccess' : CallbackFnct
       });
    
       //Qui inizializzi la mappa di Google salvandola in googmap e il marker da mettere nella mappa,
       //salvandolo in googmarker prima di aggiungerlo, usando le defaultCoord per dare le coordinate del marker
    
       //Poi lanci la richiesta AJAX periodicamente
       PeriodialFunct.periodical(3000); //Esegue la funzione ogni 3 secondi
    }
    
    var CallbackFnct = function(obj){
       //Creo un nuovo oggetto GLatLng che userò per impostare il centro della mappa e le coordinate del Marker
       var newLatLng = new GLatLng(obj.lat, obj.lng, true);
       googmarker.setLatLng(newLatLng);
       googmap.setCenter(newLatLng);
    }
    
    var PeriodialFunct = function(){
       ReqJSON.get();
    }
    Se hai bisogno di passare alla pagina PHP dei parametri devi passarli nel formato JS object nella chiamata di get();

    Es.
    codice:
    ReqJSON.get({
       'mykey' : 'myvalue',
       'mysecondkey' : 'mysecondvalue'
    });
    La richiesta diventa path/to/file.php?mykey=myvalue&mysecondkey=mysecondvalue
    I DON'T Double Click!

  3. #3
    E se uso java perché non conosco php?

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da nonsopiuchedire
    E se uso java perché non conosco php?
    In questo caso sposto la discussione
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Non capisco,
    la mia applicazione è fatta in java,
    uso javascript per il marker e la mappa di google, e
    vorrei usare ajax per aggiornare dinamicamente il
    marker.

    Dove dovrei chiederle queste informazioni se non qui?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    come produci, da java (jsp/servlet), l'output -contenente html e javascript- per il browser? Ecco, devi far in modo di avere quella routine chiamata in get/post via ajax e di sparare il contenuto della risposta nel div, o altro elemento, in cui hai destinato la mappa con i marker.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Non ho capito bene, puoi essere più esplicito?
    Io non conosco per niente ajax.

    Grazie

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Allora comincia con il leggere la guida che trovi qui:

    http://javascript.html.it/guide/leggi/95/guida-ajax/

    perché altrimenti non se ne esce tanto facilmente.

    C'è da capire solo una cosa di fondo: per sommi capi, con ajax l'output di una elaborazione server-side viene "infilato" in una variabile javascript, e da questa ci fai quel che ti serve. Tipicamente per quello che serve a te succederà qualcosa del genere

    codice:
    // pagina/servlet che si occupa di generare la mappa
    <%
    String lon = request.getParameter("lon");
    String lat = request.getParameter("lat");
    %>
    // da p creerai la tua mappa (suppongo gestita via <img> + qualcos'altro - ovvero
    // le api di google-maps, live-maps o qualsivoglia altro servizio analogo
    [img]tuo_servizio_blah_blah?lon=<% out.print(lon); %>&lat=<% out.print([/img]
    ... />
    Il prodotto (html + javascript) di questa elaborazione finirà in quella variabile javascript di cui sopra. Da quella, l'aggiornamento di un tuo div di destinazione è questione di un'altra riga di javascript

    codice:
    document.getElementById("display_div").innerHTML = tua_variabile_destinazione_dell_elaborazione;
    Sembra complicato? Leggi la guida linkata e tutto sarà più chiaro.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Grazie sei stato veramente gentile.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.