154,6 → 154,9 |
$rd[] = $element['geometry'][$ii]; |
} |
|
$proj_debut = $infos_debut; |
$proj_fin = $infos_fin; |
|
// Insertion des points utilisateurs en début et fin de tableau |
array_unshift($rd, $proj_debut); |
array_push($rd, $proj_fin); |
174,10 → 177,12 |
$cle_plus_courte_fin = key($distances_fin); |
} |
|
$cle_choisie = $this->choisirIndexRuePlusProchePourDebutEtFin($cle_plus_courte_debut, $cle_plus_courte_fin, $distances_debut, $distances_fin); |
$rue_plus_proche = $distances_fin[$cle_choisie]; |
unset($distances_fin[$cle_choisie]); |
$distances_fin = array($cle_choisie => $rue_plus_proche) + $distances_fin; |
if(!empty($distances_fin)) { |
$cle_choisie = $this->choisirIndexRuePlusProchePourDebutEtFin($cle_plus_courte_debut, $cle_plus_courte_fin, $distances_debut, $distances_fin); |
$rue_plus_proche = $distances_fin[$cle_choisie]; |
unset($distances_fin[$cle_choisie]); |
$distances_fin = array($cle_choisie => $rue_plus_proche) + $distances_fin; |
} |
|
$elements_fmt = array(); |
foreach($distances_fin as $index => $distance) { |
219,7 → 224,7 |
} |
|
function getIndexInsertionDebut($element, $index_min, $debut) { |
// le point de début est situé entre $index_debut et $index_debut + 1 |
// le point de début est situé entre $index_min et $index_min + 1 |
$proj_debut = $this->getOrthoPoint($element['geometry'][$index_min], $element['geometry'][$index_min+1], $debut); |
$point_deb = $element['geometry'][$index_min]; |
$point_deb_plus_un = $element['geometry'][$index_min+1]; |
244,10 → 249,10 |
|
if($distance_point_fin_moins_un_proj < $distance_point_fin_fin_moins_un) { |
// le point le plus proche doit être éliminé |
return $index_max; |
return $index_max - 1; |
} else { |
// il doit être gardé |
return $index_max + 1; |
return $index_max; |
} |
} |
|