Lo primero es conseguir una buena base de datos con ciudades, codigos postales y coordenadas de estos... (si encuentras una comentamelo que nunca se sabe cuando se puede necesitar)
Lo siguiente es hacer el cálculo matemático, teniendo en cuenta que se calcula distancia entre el punto a(x1,y1) y el punto b(x2,y2) debería resultarte facil de ver
function distancia_puntos(x1, y1, x2, y2) {
(x1 == x2) {
distancia = Abs(y2-y1);
} (y1==y2) {
distancia = abs(x2 - x1);
} {
//raiz cuadrada de: (x2-x1)^2 (y2-y1)^2
distancia = sqr(((x2-x1)<em>(x2-x1) ((y2-y1)</em> (y2-y1)));
}
return distancia;
}
No lo he probado por lo dicho, no tengo la base de datos. Pero si consigues una avisa ;)
Otra cosa que encontré interesante es usar googlemaps para sacar las coordenadas de un código postal. Y luego almacenarlas en nuestra DB, así cada vez que un usuario hace una consulta si no existe en la db lo buscamos en googlemaps y si existe lo sacamos de la DB ahorrando tiempo.