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