je hebt mijn edit niet gezien.
ik krijg als output:
Breedtegraad: N 47° 49.782'
Lengtegraad: W 003° 41.806'
Link gekopieerd
EvH,
Prachtig van U, blijkbaar klopt het nu helemaal
heb ook andere ingaves gedaan en ze kloppen ook .
Nogmaals heel vriendelijk bedankt voor deze hulp.
Ben je toevallig een geocacher ?
Link gekopieerd
Ik wel in ieder geval! :-)
In mijn buurt heb ik er zelf vier neergelegd.
Link gekopieerd
Geen geocacher, maar heb wel eens meegewerkt aan een project door een fanatieke geocacher.
Fijn dat het nu werkt :)
Link gekopieerd
ariën,
Dan ken jij het programma Gsak.
Gsak zal verdwijnen en geen toegang meer krijgen bij geocaching door de aanpassing van de API's
Misschien is het een doel om er eentje te maken zoals gsak maar dan in php.
[size=xsmall]
Toevoeging op 07/11/2023 13:05:46: [/size]
EvH,
Nogmaals bedankt voor alles, en als je nog een project wil geen probleem, het programma Gsak dat zal verdwijnen namaken in php.
[size=xsmall]
Toevoeging op 07/11/2023 17:05:22: [/size]
E vH ,
Is het mogelijk om het script ook te wijzigen zonder dat het een functie is AUB.
Dank bij voorbaat.
<?php
function DMSToDecimal($dms) {
preg_match('/([NS])(\d+)° (\d+\.\d+)/', $dms, $latMatches);
preg_match('/([EW])(\d+)° (\d+\.\d+)/', $dms, $lonMatches);
if (!empty($latMatches)) {
$latDirection = $latMatches[1];
$latDegrees = (float)$latMatches[2];
$latMinutes = (float)$latMatches[3];
$latitude = ($latDirection === 'N') ? ($latDegrees + ($latMinutes / 60)) : -($latDegrees + ($latMinutes / 60));
} else {
return false; // Invalid latitude format
}
if (!empty($lonMatches)) {
$lonDirection = $lonMatches[1];
$lonDegrees = (float)$lonMatches[2];
$lonMinutes = (float)$lonMatches[3];
$longitude = ($lonDirection === 'E') ? ($lonDegrees + ($lonMinutes / 60)) : -($lonDegrees + ($lonMinutes / 60));
} else {
return false; // Invalid longitude format
}
return ['latitude' => $latitude, 'longitude' => $longitude];
}
$dmsLatitude = "N53° 34.127";
$dmsLongitude = "E006° 44.986";
$coordinates = DMSToDecimal($dmsLatitude . " " . $dmsLongitude);
if ($coordinates) {
$latitude = $coordinates['latitude'];
$longitude = $coordinates['longitude'];
echo "Breedtegraad (decimaal): $latitude<br>";
echo "Lengtegraad (decimaal): $longitude<br>";
} else {
echo "Ongeldige DMS-coördinaten.";
}
?>
Link gekopieerd
Hoi Berta,
Waarom zou je dat willen? Iets meer toelichting zou wenselijk zijn als je het mij vraagt.
Een functie gebruik je namelijk om een bepaald doel te behalen... en deze specifieke functie doet precies dat toch?
Link gekopieerd
Omdat deze functie niet werkt binnen een andere functie
de code ziet er dan zo uit, maar blijkbaar werkt dit niet
de foutmelding is :
Fatal error: Cannot redeclare DMSToDecimal() (previously declared
function BeforeProcessRowList(&$data, $pageObject)
{
function DMSToDecimal($dms) {
echo $dms ;
preg_match('/([NS])(\d+) (\d+\.\d+)/', $dms, $latMatches);
preg_match('/([EW])(\d+) (\d+\.\d+)/', $dms, $lonMatches);
if (!empty($latMatches)) {
$latDirection = $latMatches[1];
$latDegrees = (float)$latMatches[2];
$latMinutes = (float)$latMatches[3];
$latitude = ($latDirection === 'N') ? ($latDegrees + ($latMinutes / 60)) : -($latDegrees + ($latMinutes / 60));
} else {
return false; // Invalid latitude format
}
if (!empty($lonMatches)) {
$lonDirection = $lonMatches[1];
$lonDegrees = (float)$lonMatches[2];
$lonMinutes = (float)$lonMatches[3];
$longitude = ($lonDirection === 'E') ? ($lonDegrees + ($lonMinutes / 60)) : -($lonDegrees + ($lonMinutes / 60));
} else {
return false; // Invalid longitude format
}
return ['latitude' => $latitude, 'longitude' => $longitude];
}
$dmsLatitude=$data["Breedtegraad"];
$dmsLongitude=$data["Lengtegraad"];
$coordinates = DMSToDecimal($dmsLatitude . " " . $dmsLongitude);
if ($coordinates) {
$latitude = $coordinates['latitude'];
$longitude = $coordinates['longitude'];
echo "Breedtegraad (decimaal): $latitude<br>";
echo "Lengtegraad (decimaal): $longitude<br>";
} else {
echo "Ongeldige DMS-cordinaten.";
}
return true;
;
}
Link gekopieerd
Je kan prima een functie aanroepen in een andere functie.
Die foutmelding die jij krijgt betekent dat jij een functie aanmaakt met dezelfde naam, en dat kan niet. In jouw code gaat daar niks fout.
Link gekopieerd
Ariën,
Er is geen functie met dezelfde naam aanwezig function DMSToDecimal()
Link gekopieerd
Fatal error: Cannot redeclare DMSToDecimal() (previously declared
Dit is niet de gehele foutmelding. Er hoort namelijk een verwijzing te zijn naar een bepaalde regel.
Wat Ariën zegt klopt, je hebt nu 2 dezelfde functienamen, waarschijnlijk door een loop?
Zet die functie DMSToDecimal() eens buiten de functie BeforeProcessRowList()
Link gekopieerd