Pergunta : Google Maps API: como calcular a distância de uma posição a um código postal?

Eu estou criando um widget dos mapas do google para um Web site. O usuário dá entrada a um código postal e um número de posições à proximidade desse código postal são traçadas na necessidade de map.

I de indicar como distante cada posição é do código postal dado entrada (muitas estarão em códigos postais vizinhos). o

I tem o longo/latitude de cada posição mas de am não sure como calcular a distância a um FECHO DE CORRER. Alguma idéia? o

I am que supor o exigirá este método do API mas eu não posso elaborar a sintaxe: rel= " nofollow " do” _blank”” do target= de " http://code.google.com/apis/maps/documentation/javascript/v2/reference.html#GLatLng.distanceFrom do href= do
s/maps/documentation/javascript/v2/reference.html#GLatLng.distanceFrom
de http://code.google.com/api class= do

Resposta : Google Maps API: como calcular a distância de uma posição a um código postal?

Um código postal não é uma posição, ele é rota de um portador postal.  Nas cidades dos EUA orientais pode haver os códigos postais que são muito pequenos, alguns edifícios em Manhattan.  Nos grandes estados do oeste, os códigos postais podem ser muitos, muitas milhas largas.

As côordenadas do mapa são dadas pelo “geocode” que é um par da latitude/longitude.  Os dados são expressados sempre em uma corda de caráter com os dois assinados ou os números decimais não assinados separados por uma vírgula.  A distância entre dois “geocodes” pode ser computada, enquanto o corvo voa, pelo uso da fórmula de Haversine.
http://en.wikipedia.org/wiki/Haversine_formula

Quando uma rota de grande círculo estiver a uma distância a mais exata do A-B, sua “exatidão” não pode ser exatamente o que você quer.  Para distâncias curtas através de nossa terra, a geometria plana é suficientemente exata.
http://en.wikipedia.org/wiki/Cartesian_coordinate_system

O outro componente da exatidão do grande círculo vai à modalidade do transporte.  É altamente útil para aviões e embarcações ocean-going.  Mas se seus cursos do A-B são pelo automóvel e você precisa de cruzar um rio, por exemplo, a fórmula de Haversine espera-o ir em linha reta através do rio se há uma ponte ou não.

Em minha experiência com cálculos e Google Maps de Haversine, eu encontrei que você pode começ uma aproximação razoável da distância de condução correta multiplicando a distância de Haversine em 1.15 a 1.25.  Por razoável, eu significo, “ninguém queixei-me” sobre a margem de erro.  Para desengates curtos, as computações são menos exatas e o fator de fudge precisa de tender à parte alta.  Para uns desengates mais longos as computações são mais exatas e o fator de fudge pode ser reduzido.

O “verdadeiro” conduzindo a distância é determinado avaliando uma série dos “minitrips” um para cada girar-ponto ao longo da rota.  Google Maps pode fazer este.  IIRC lá é uma chamada do API que retorne estes dados.

Google Maps recentemente liberado API tem algumas caraterísticas surpreendente robustas.   Por exemplo, era necessário ao “geocode” um endereço antes de adicionar um pushpin ao mapa - agora você pode simplesmente dar o endereço ou o nome da posição (“a casa branca”) e Google Maps poderão frequentemente traduzir o nome e/ou o endereço no geolocation para você.  Eu tenho um artigo aqui na EE que cobre algumas das caraterísticas novas.
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/A_3350-Using-the-Google-Maps-API-in-PHP.html

A pequena notícia de código ensina a maneira de computar grandes distâncias de círculo.

Google e Yahoo Geocoders retornarão um geocode se você não lhe dá nada mas um código postal, porém a exatidão não é toda aquela grande.  O Yahoo Geocoder é o mais fácil de usar-se.
http://developer.yahoo.com/maps/rest/V1/geocode.html

Esperar que esta informação é útil a você.  Afixar por favor para trás se você tem quaisquer perguntas.  As melhores considerações, ~Ray
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
\n";

// COMPUTE THE DISTANCE BETWEEN TWO LAT/LON PAIRS

// MAN PAGE: http://en.wikipedia.org/wiki/Haversine_formula
function compute_distance($from_lat, $from_lon, $to_lat, $to_lon, $units='KM')
{
    $units = strtoupper(substr(trim($units),0,1));
    // ENSURE THAT ALL ARE FLOATING POINT VALUES
    $from_lat = floatval($from_lat);
    $from_lon = floatval($from_lon);
    $to_lat   = floatval($to_lat);
    $to_lon   = floatval($to_lon);

    // IF THE SAME POINT
    if ( ($from_lat == $to_lat) && ($from_lon == $to_lon) )
    {
        return 0.0;
    }

    // COMPUTE THE DISTANCE WITH THE HAVERSINE FORMULA
    $distance 
    = acos
    ( sin(deg2rad($from_lat))
    * sin(deg2rad($to_lat))
    + cos(deg2rad($from_lat))
    * cos(deg2rad($to_lat))
    * cos(deg2rad($from_lon - $to_lon)) 
    )
    ;

    $distance = rad2deg($distance);

    // DISTANCE IN MILES AND KM - ADD OTHERS IF NEEDED
    $miles = (float) $distance * 69.0;
    $km    = (float) $miles * 1.61;

    // RETURN MILES
    if ($units == 'M') return round($miles,1);

    // RETURN KILOMETERS = MILES * 1.61
    if ($units == 'K') return round($km,2);
}

if (!empty($_GET))
{
    $distance = compute_distance($_GET["a_lat"], $_GET["a_lon"], $_GET["b_lat"], $_GET["b_lon"], $_GET["units"]);
    echo $distance . ' ' . $_GET["units"];
}
?>


Camp David
Casa branca
TESTÁ-LA AQUI:

APONTAR UM LAT   LON  
APONTAR O LAT DE B   LON  
Milhas
Quilômetros


Outras soluções  
 
programming4us programming4us