Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: distanza tra località

  1. #1

    distanza tra località

    secondo voi, è possibile in javascript visualizzare la distanza in chilometri tra due località (dato già in mio possesso)?
    es.
    combo con elenco località e di fianco altra combo con le stesse località. seleziono dalla prima una località e dalla seconda un'altra. premo il submit e appare la cifra che io ho inserito nello script.
    grazie in anticipo, ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Dipende da quanto sono le localita`.

    Se vuoi fare tutto in JS, devi avere tutto il database copiato sul browser.
    Quindi ti serve un vettore contenente tutte le localita` ed una matrice quadrata contenente tutte le distanze ordinate come il vettore localita`.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    oddio mich_, cioè?
    io ho 15 località su x e le stesse 15 su y.
    facendo le combinazioni ho già le distanze tra le località.
    come posso realizzare quello che desideravo?
    grazie per la tua risposta.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ecco cosa deve arrivare al browser.
    Nota che nel vettore local ci sono le virgolette attorno ai nomi, nella matrice dist ci sono numeri (senza virgolette) che rappresentano le distanze tra i vari posti. Dove ho messo due lettere uguali, ci metterai 0 (zero). Per comodita` la matrice e` doppia: cioe` il numero AB sara` lo stesso di BA (se la strada ad andare e` uguale a ritornare).

    Naturalmente ci dovra` essere un programma sul server che genera questa matrice, prendendo i dati dal database.

    codice:
    <script type="text/javascript">
    var local = new Array("Aosta", "Bari", "Como", "D..", ...);
    var dist = new Array();
    dist[0] = new Array(AA, AB, AC, AD, ...);
    dist[1] = new Array(BA, BB, BC, ...);
    ...
    dist[14] = new Array(...);
    
    function riempi() {
      // codice per copiare le localita` nelle due select 
    
    }
    
    function calcola(ff) {
      var p = ff.part.selectedIndex;
      var a = ff.arr.selectedIndex;
      ff.km.value = dist[p][a];
    }
    </script>
    </head>
    
    <body onload="riempi();">
    ...
    <form ...>
      <select name="part" onchange="calcola(this.form);">
        <option> </option>
      </select>
      <select name="arr" onchange="calcola(this.form);">
        <option> </option>
      </select>
      <input type="text" name="km" readonly="true">
    </form>
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    ciao mich_,
    capisco poco di quello che mi scrivi ma ti ringrazio tanto ugualmente perché non ho la pretesa che tu mi scriva tutto.
    ieri ho fatto la pagina utilizzando una tabella (anche se le mie velleità erano altre):
    http://www.comune.argenta.fe.it/terr....aspx?IDMenu=6
    provo a fare qualcosa con lo script che mi hai inviato anche se sinceramente non saprei da dove partire. io sono un webdesigner e ho realizzato il sito con un collega informatico che attualmente è in ferie.
    grazie ancora, ciao.
    marcello

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Se non hai bisogno di programmazione lato server, la cosa e` piu` semplice.
    Basta che usi lo script che ti ho dato.

    Ti confesso che non ho capito l'ordine in cui hai messo le localita` (io le avrei messe in ordine alfabetico), comunque rispetto il tuo ordine di distanza (magari per voi e` piu` logico).

    Ecco come deve venire la tua area dati:

    var local = new Array("Argenta", "Boccaleone", "San Biagio", "Bando", ...);
    var dist = new Array();
    dist[0] = new Array(0, 4.2, 4.8, 6, 6.7, 7.6, ...);
    dist[1] = new Array(4.2, 0, 9, 7.8, ...);
    dist[2] = new Array(4.8, 9, 0, 10.8, 11.5, 12.2, 16.3, ...);
    ...
    dist[14] = new Array(...);
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    ciao mich_,
    ho provato parte del codice che mi hai inviato (solo parte perché non ho capito con quale logica hai inserito i valori distanze che mi metti nel tuo esempio) ma non credo di essere riuscito a farlo funzionare. nelle combo box non appare niente. dove sbaglio? ecco cosa ho inserito in una pagina di prova:

    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script type="text/javascript">
    var local = new Array("Argenta", "Boccaleone", "San Biagio");
    var dist = new Array();
    dist[0] = new Array(0, 4.2, 4.8, 6, 6.7, 7.6, ...);
    dist[1] = new Array(4.2, 0, 9, 7.8, ...);
    dist[2] = new Array(4.8, 9, 0, 10.8, 11.5, 12.2, 16.3, ...);

    function riempi() {
    // codice per copiare le localita` nelle due select

    }

    function calcola(ff) {
    var p = ff.part.selectedIndex;
    var a = ff.arr.selectedIndex;
    ff.km.value = dist[p][a];
    }
    </script>

    </head>

    <body onload="riempi();">
    <form ...>
    <select name="part" onchange="calcola(this.form);">
    <option> </option>
    </select>
    <select name="arr" onchange="calcola(this.form);">
    <option> </option>
    </select>
    <input type="text" name="km" readonly="true">
    </form>
    </body>
    </html>

    cosa ho inserito male?
    grazie ancora.
    marcello

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Anzitutto, se timancano dei dati, avrai problemi, quindi la prima cosa da fare e` scrivere la tabella per intero.

    Se parti dalla tua tabella (triangolare), supponendo i nomi nell'ordine in cui li hai messi tu, in ogni riga della matrice devi copiare una riga delle tue, uno zero, e la colonna 9della stessa localita`).

    Poi perche` il codice funzioni devi riempire le select con i dati nello stesso ordine. Io ti consigliavo di riempire le select tramite JS (vedi codice che trovi tra i link utili), ma se preferisci puoi anche scrivere i nomi a mano dentro le due select. Importante e` che le opzioni delle due select siano uguali e che l'ordine sia lo stesso del vettore.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  9. #9
    <form ...>

    qui cosa ci va?

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non lo so io. Dipende da cosa deve fare il form.

    In generale ci devi mettere action, method (per spedire il form); se vuoi un controllo prima della spedizione ci devi mettere anche onsubmit.

    Comunque per i tuoi scopi puo` bastare il <form>.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.