2015-10-22 137 views
-2

我需要限制大圓圈問題的半徑。這個圓圈將延伸到它碰到另一個物品。限制大圓圈

我需要它來圓的範圍限制5英里

這裏是我的代碼

function find_closest_ticket(ticket, lat, lng) { 

// var lat = map.position.coords.latitude; 
// var lon = map.position.coords.longitude; 

// lat = 24.709254; 
// lng = -81.381927; 
var R = 6371; // radius of earth in km 
var distances = []; 
var closest = -1; 

for (i = 0; i < ticket.length; i++) { 
    var mlat = ticket[i].soLAT; 
    var mlng = ticket[i].soLNG; 
    var dLat = rad(mlat - lat); 
    var dLong = rad(mlng - lng); 
    var a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
    Math.cos(rad(lat)) * Math.cos(rad(lat)) * Math.sin(dLong/2) * Math.sin(dLong/2); 
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); 
    var d = R * c; 
    distances[i] = d; 
    if (closest == -1 || d < distances[closest]) { 
    closest = i; 
    } 
    } 
return closest; 
} 
+0

你忘了問一個問題。 – JJJ

+0

這個問題發佈在第二行我需要它將圓的範圍限制爲5英里 – pithhelmet

+0

這是一個陳述,而不是一個問題。你有什麼問題? – JJJ

回答

0

首先,令人驚訝的是,你使用返回公里爲半徑的函數,然後想限制它到5英里。您應該下定決心:或者編寫返回里程的功能並以英里爲單位添加限制,或者將功能保持原樣並將其限制爲公里(8公里大約爲5英里)。

如果你想使用英里,然後改變這一行:

var R = 6371; // radius of earth in km 

到:

var R = 3959; // radius of earth in miles 

並替換:

return closest; 

由:

return Math.min(5, closest); 

或者,如果你想堅持到千米,則只有更換:

return closest; 

由:

return Math.min(8, closest);