Listar pelo mais próximo

by Lucaskazama

HTML

<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css">
<script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script>
<ul>
  <li>
    Localizar usuario
    <ul>
      <li>Se tiver geolocation - listar empreendimentos mais perto</li>
      <li>Senao listar a cidade e empreendimentos próximos da cidade</li>
    </ul>
  </li>
</ul>
<ul class="cities">  
</ul>
<ul class="buildings">
</ul>
<p id="result">

</p>

JavaScript

var myLocation = "fortaleza";

var cities = [
  {id: 1, slug: "sobral", lat: -3.6836294, long: -40.368104},
  {id: 10, slug: "parnaiba", lat: -2.9304021, long: -41.7656826},
  {id: 2, slug: "teresina", lat: -5.1856946, long: -43.0650061},
  {id: 3, slug: "aracati", lat: -4.5658029, long: -37.7776668},
  {id: 4, slug: "fortaleza", lat: -3.7931403, long: -38.5896552}  
];

function calculateLatLng(lat, long){
	return L.circleMarker([lat, long]).getLatLng()
}

function calculateDistance(mainDistance, secondDistance){
	return mainDistance.distanceTo(secondDistance).toFixed(0)/1000
}

function distance(list){
	return list.sort(function(a, b) {return parseFloat(a.distance) - parseFloat(b.distance)});
}

var distanceByCity = [];

function sortDistance(cities, myLocation){

var cidadeEscolhida = cities.find( cidade => cidade.slug === myLocation );
var mainCityLatlng = calculateLatLng(cidadeEscolhida.lat, cidadeEscolhida.long);

for (var i = 0; i < cities.length; i++) {
	if(cities[i] == cidadeEscolhida){
  	cities[i].distance = 0;
    distanceByCity.unshift(cities[i]);
  } else {
    var cityLatlng = calculateLatLng(cities[i].lat, cities[i].long);   
    cities[i].distance = calculateDistance(mainCityLatlng, cityLatlng);
    distanceByCity.push(cities[i]);
  }
}

	distance(distanceByCity);

};
sortDistance(cities, myLocation);

var buildings = [
	{id: 0, slug: "conviver-litoral", lat: -3.6536138, long: -40.351901},
]
for (var i = 0; i < distanceByCity.length; i++) {
	$(".cities").append("<li>"+ distanceByCity[i].slug + " - " + distanceByCity[i].distance + " km</li>");
}
for (var i = 0; i < buildings.length; i++) {
	$(".buildings").append("<li>"+ buildings[i].slug +"</li>");
}