2009-08-29 28 views
5

2 UK posta kodları arasındaki mesafe için Google Maps API'yi kullanıyorum. (Ben bu olup bitenler inanıyoruz?) GetPoint işlevi süresi mesafeye göre uyumsuz ve bu yüzden Google API çağrıları Ancak2 postcodes arasındaki mesafe

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 hesaplanır ve 2 set edilmemiş

Ben de her sonrasında uyarıları koymak değişkenin değerini kontrol etmek ve bunu yapmak için mesafe var, doğru değere varmamı beklemeli, tamam tıklamamı beklemeli sonuçlar elde etmek için yeterli zaman vermiş olmalıyım? artık bu yapmaz olsa :(İşte

olsun noktası fonksiyonunu

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; 
} 

ben sonuçları gel ama sorun burada olduğu zaman çağrılacak için yerel aramada bir geri arama ayarlayabilirsiniz biliyorum 2 aramalar var. Ben İKİ aramalar sonuç vermedi sonra sadece hesapla mesafesi hattını arayın etmektir istediğim şey

.

sen bunu nasıl biliyor musunuz?

Teşekkürler

cevap

4

Her posta kodu için GPS koordinatlarını (enlem, boylam) alabiliyorsanız, bir Javascript uzaklık işlevi oluşturun.

C# içinde here bul, ancak JS içinde yeniden oluşturmak istiyorsanız, bu kavram aynıdır.

0

Bu işe yarayabilir - temel olarak setSearchCompleteCallback'i, ilk veya ikinci posta kodunu aramaya göre farklı tepki vermek için döndürür.

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"); 
}