2015-10-22 5 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

Вопрос был отправлен по строке 2 Мне нужно, чтобы ограничить круг круга до 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); 

 Смежные вопросы

  • Нет связанных вопросов^_^