Fråga : Google kartlägger API: hur man beräknar distansera från ett läge till en postnummer?

Förmiddag som I skapar en google, kartlägger manicken för en website. Användaren skriver in en postnummer, och ett nummer av lägen i vicinityen av den postnummer konspireras på behovet för map.

I att indikera hur långt varje läge är från den skrivna in postnumret (ska många är i neighboring postnummer).

I har det långt/friheten av varje läge men förmiddag inte sure hur man beräknar distansera till en VINANDE. Några idéer? förmiddagen för

I antar den, ska kräver denna API-metod, men jag kan inte fungera ut syntaxen: för http://code.google.com/apis/maps/documentation/javascript/v2/reference.html#GLatLng.distanceFrom” för href= ”för distanceFrom"
http://code.google.com/api s/maps/documentation/javascript/v2/reference.html#GLatLng.distanceFrom
" klar "

Svar : Google kartlägger API: hur man beräknar distansera från ett läge till en postnummer?

En postnummer är inte ett läge, det är post- en bärares rutt.  I städerna av den östliga USA det kan finnas postnummer, som är mycket lilla, några byggnader i Manhattan.  I det stort påstår av det västra, postnummer kan vara många, många breda miles.

Kartlägga koordinater ger sig av ”geocoden” som är en frihet/en längd parar.  Datan uttrycks alltid i en teckensträng med undertecknade två, eller unsigned decimal- numrerar avskilt av ett komma.  Distansera mellan två ”geocodes” kan beräknas, som galandeflugorna, av bruket av den Haversine formeln.
http://en.wikipedia.org/wiki/Haversine_formula

Fördriva en store cirklar rutten är den exaktaste AEN-B distanserar, dess ”exakthet” kan inte vara exakt vad du önskar.  För kort stavelse distanserar över vår jord, plan geometri är tillräckligt exakt.
http://en.wikipedia.org/wiki/Cartesian_coordinate_system

Annat som är del- av store, cirklar exakthet går till funktionsläget av trans.  Det är högt användbart för flygplan och ocean-going skyttlar.  Men, om din A-Bresor är med bilen och, du behöver att korsa en flod, till exempel den Haversine formeln förväntar att du som går raksträckan över floden huruvida där är en överbrygga eller inte.

I mitt erfara med Haversine beräkningar, och Google kartlägger, mig har funnit att du kan få en rimlig närhet av den korrekta körningen distanserar, genom att multiplicera Haversinen distanserar vid 1.15 till 1.25.  Vid rimligt jag betyder, ”inget klagade” om förse med marginal av felet.  För kort stavelse snubblar, uträkningarna är mindre exakta, och fuskverket dela upp i faktorer behov att ansa till kicken avslutar.  För longer snubblar uträkningarna är exaktare, och fuskverket dela upp i faktorer kan förminskas.

”Den riktiga” körningen distanserar är beslutsam, genom att utvärdera en serie av ”minitrips” en för varje, vända-pekar längs rutten.  Google kartlägger kan göra detta.  IIRC där är en API-appell som ska retur dessa data.

Den nyligen utsläppt Googlen kartlägger API har några fantastiskt robustt särdrag.   Till exempel det var nödvändigt till ”geocode” en tilltala, innan du tillfogade en pushpin till kartlägga - nu du kan enkelt ge tilltala, eller det känt av läget (”Vita huset”) och Google kartlägger ska ofta är kompetent att översätta det känt och/eller att tilltala in i geolocationen för dig.  Jag har en artikel här på EE som täcker några av de nya särdragen.
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/A_3350-Using-the-Google-Maps-API-in-PHP.html

Kodifierasnippeten undervisar långt för att beräkna store cirklar distanserar.

Google och för tölp Geocoders ska retur en geocode, om du ger dem som är ingenting utom en postnummer, however exaktheten inte är all den store.  Tölpen Geocoder är det lättast att använda.
http://developer.yahoo.com/maps/rest/V1/geocode.html

Hoppas detta info är hjälpsamt till dig.  Behaga postar tillbaka, om du har några ifrågasätter.  Med vänliga hälsningar ~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
Vita hus
TESTA DET HÄR:

PEKA EN LAT   LON  
PEKA B-LATEN   LON  
Miles
Kilometer


Andra lösningar  
 
programming4us programming4us