2009-08-29 21 views
5

Google Maps APIを使用して、2つの英国ポストコード間の距離を取得しています。 (私はこれは何が起こっているかであると考えている?)GetPoint関数は、時間、距離によって非同期ので、GoogleのAPIを呼び出すしかし2つのポストコード間の距離

var yourPostcode = $("#YourPostcode").val(); 
     var restaurantPostcode = $("#Postcode").val(); 

     var point1 = GetPointFromPostcode(yourPostcode); 
     var point2 = GetPointFromPostcode(restaurantPostcode); 

     var distance = point1.distanceFrom(point2, 3959).toFixed(1); 

はPOINT1に計算され、2が設定されていない

は、私はまた、それぞれの後にアラートを置きます文の変数の値をチェックし、これを行う私は結果を得るために十分な時間を与えている必要があります私はOKをクリックするのを待って、正しい値になる距離を持っている?それはもうこれを行いませんが:(

をここでGETポイント機能は、私は結果が戻ってくるが、ここで問題があるときに呼び出されるため、私はローカル検索にコールバックを設定することができます知っている

function GetPointFromPostcode(postcode) { 
    var point; 
    localSearch.execute(postcode + ", UK"); 
    if (localSearch.results[0]) { 
     var resultLat = localSearch.results[0].lat; 
     var resultLng = localSearch.results[0].lng; 

     point = new GLatLng(resultLat, resultLng); 

    } else { 
     $(".PostcodeError").append("Postcode Invalid"); 
    } 
    return point; 
} 

です2件の検索があります。私は、両方の検索結果を返した後でのみ計算距離ラインを呼び出すことです欲しい

あなたは、私がこれを行うことができる方法を知っていますか?

ありがとう

答えて

4

各郵便番号のGPS座標(緯度、経度)を取得できる場合は、Javascript距離関数を作成します。

これはC#でhereですが、これをJSで再現する場合は同じです。

0

これは基本的にsetSearchCompleteCallbackが最初の郵便番号か2番目の郵便番号を検索しているかどうかに応じて反応が異なるように機能します。

var searchControl= new google.search.SearchControl(); 
var distanceSearch = new google.search.LocalSearch(); 
searchControl.addSearcher(distanceSearch); 

distanceSearch.setSearchCompleteCallback(null, function() { 
    if(distanceSearch.results.length > 0 && distanceSearch.postcode2) 
    { 
     distanceSearch.point1 = new GLatLng(distanceSearch.results[0].lat, distanceSearch.results[0].lng) 
     var postcode2 = distanceSearch.postcode2; 
     distanceSearch.postcode2 = null;    
     distanceSearch.execute(postcode2 + ", UK"); 
    } else if (distanceSearch.results.length > 0 && !distanceSearch.postcode2) { 
     distanceSearch.point2 = new GLatLng(distanceSearch.results[0].lat, distanceSearch.results[0].lng) 
     //some code to calculate distance and write it to somewhere 
    } else { 
     //no search results 
    } 
}); 

function measureDistance(postcode1, postcode2) { 
    distanceSearch.postcode2 = postcode2; 
    distanceSearch.execute(postcode1 + ", UK"); 
} 
関連する問題