Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luciano Silveira Marco

Ordenar Array de Coordenadas

Recommended Posts

Pessoal, boa tarde!

 

Gostaria da ajuda de vocês para me ajudar a pensar numa lógica em que eu possa resolver o seguinte problema:

 

Tenho um array:

 

MapCord=[Latitude: xxxxxx, Longitude: xxxx]

 

De modo que tenho MapCord preenchido por exemplo até a posição 7 com Latitudes e Longitudes.

Já tenho uma função que me retorna a distancia entre elas:

AchaDistancia(MapCord[0].Latitude,MapCord[0].Longitude, MapCord[1].Latitude,MapCord[1].Longitude)

 

Então o que eu preciso é achar uma logica em que eu consiga ordenar por distancias o MapCord, seria um loop de A para B,C,D,E,F,G

depois B para C,D,E,F,G, e descartando das comparações as que forem sendo agrupadas por proximidade é claro.

 

Se alguém tiver uma idéia ou já conseguiu executar um processo semelhante agradeço se puder ajudar.

 

Desculpe caso não tenha conseguido ser claro sobre o problema.

 

Obrigado!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer organizar as que estão perto uma das outras... certo?

 

Talvez a lógica fique mais ou menos assim.

for(var i = 0; i < MapCord.length - 1; i++){

	var disMinima = {index : 0; distancia : 0};

	for(var f = i + 1; f < MapCord.length; f++){

		var distancia = AchaDistancia(MapCord[i].Latitude,MapCord[i].Longitude, MapCord[f].Latitude,MapCord[f].Longitude);

		if(distancia < disMinima.distancia){
			disMinima.index = f;
			disMinima.distancia = distancia;
		}
	}

	if(disMinima.index !== i + 1){

		var MapCordTemp = MapCord[i + 1];

		MapCord[i + 1] = MapCord[disMinima.index];
		MapCord[disMinima.index] = MapCordTemp;
	}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Você quer organizar as que estão perto uma das outras... certo?

 

Talvez a lógica fique mais ou menos assim.

for(var i = 0; i < MapCord.length - 1; i++){

	var disMinima = {index : 0; distancia : 0};

	for(var f = i + 1; f < MapCord.length; f++){

		var distancia = AchaDistancia(MapCord[i].Latitude,MapCord[i].Longitude, MapCord[f].Latitude,MapCord[f].Longitude);

		if(distancia < disMinima.distancia){
			disMinima.index = f;
			disMinima.distancia = distancia;
		}
	}

	if(disMinima.index !== i + 1){

		var MapCordTemp = MapCord[i + 1];

		MapCord[i + 1] = MapCord[disMinima.index];
		MapCord[disMinima.index] = MapCordTemp;
	}

}

Isso mesmo Lucas, preciso organizar as que estão perto entre elas, seguindo a sequencia: o que está mais perto de A, o que está mais perto de B, ...... Vou analisar a dica do seu código, obrigado por responder!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.