Ik gebruik een aantal arrays op diverse plekken op de website.
Nu wil ik deze gegevens samenvoegen tbv Googlemaps API.
Het is een alternatieve oplossing voor clustering.
Alles werkt prima.
Alleen krijg ik een opsomming van meerdere activiteiten gedurende
een periode van 2 weken op dezelfde locatie niet netjes gesorteerd op datum.
De googlemaps Api werkt met javascript.
De PHP waarden worden via 'implode' toegevoegd aan javascript.
Wie kan me op weg helpen?

Een voorbeeld staat op:

https://www.pctraverse.nl/Project/geoB-werkCC.php

Het kan gaan aan de PHP kant om:


$datumA = array("1548892800","1548892800","1548806400","1548806400","1548892800","1549065600","1549065600","1549065600");
$datumB = array("31-01-2019","31-01-2019","30-01-2019","30-01-2019","31-01-2019","02-02-2019","02-02-2019","28-01-2019");
$destLat = array("53.0966489","52.7488209","53.22088669999999","53.0966489","52.7488209","53.0966489","53.0966489","53.0966489");
$destLong = array("6.103173999999967","6.8742012999999815","6.577688599999988","6.103173999999967","6.8742012999999815","6.103173999999967","6.103173999999967","6.103173999999967");
$naamB = array("hans thuis","John buiten","Alie buiten","hans Thuis","John buiten","hans thuis","Hans thuis","hans thuis");
$adresA = array("Kennedylaan 2","Emmen Zuid","Groningen","","Drachten","Emmen zuid","Kennedylaan 2","Kennedylaan 2","Kennedylaan 2");
$adresB = array("Drachten","Emmen","UMCG","Drachten","Emmen","Drachten","Drachten","Drachten");
$adresC = array("Nederland","Nederland","Groningen","Nederland","Nederland","Nederland","Nederland","Nederland");
$fileB = array("3594917aa2c61071c2f8ed8de16417e80da3f605.jpg","43ede206d4e765b78a57fb680332eb3898360e03.jpg","670ad174d83f04df7acdbd341775ff8c5ea9f012.jpg","698919805a97a68005ce6407510037e7e38b1a53.jpg","7f38f63f385630022087b5e7ec43774a2310c66d.jpg","828d46525300cc185719387c1cee8d3534b43b6a.jpg","99110ae2a73b863cdfc1991074c79db27c008982.jpg","f57492f09c5224b4cd9847fba0afb8da04b6c752.jpg");
$refA = array("0","1","2","0","1","0","0","0");
$refB = array("7","4","2","7","4","7","7","7");
Ennn... Wat voer je aan Google Maps? Wat verwacht Google Maps qua formaat? Wat verwacht jij dat er gebeurt?
Ik heb het niet gecontroleerd, maar ik ga d'r vanuit dat al die arrays even lang zijn (en dat index 0 van alle arrays dus steeds bij elkaar horen). Tevens ga ik er vanuit dat de integer in $datumA een timestamp is van de datum in $datumB. In dat geval kun je array_multisort gebruiken (en dan $datumA als eerste parameter).
@thomas
Alles werkt zoals ik het verwacht. Dus de aanvoer is wel juist.
(Zie voorbeeld). Maar ik wil sorteren op datum.
Zodat de volgorde van de info start bij laagste datum en eindigt bij de hoogste.
Dat kan door de sortering in PHP zo uit te voeren.

@Rob
Je gedachten kloppen. $datumA is de timestamp.
En de volgorde van de Arrays is inderdaad ook hetzelfde, en horen bij elkaar.
Heb array_multisort wel geprobeerd, maar kom daar niet uit.







Dit is dus een array sorteer probleem waarbij je meerdere arrays in dezelfde volgorde wilt sorteren op grond van een of meer criteria zodat je deze (alle arrays) in de goede volgorde kunt voeren aan Google Maps?

Dat heeft dan toch niets met Google Maps te maken? :/

Stap 0 van probleemoplossing is afbakening van het zoek/oplossingsterrein. Dingen die er niets mee te maken hebben compliceren een vraagstuk alleen maar.
@Thomas
In zoverre heeft dit met de googlemaps te maken,
dat de info die verschijnt als je op een marker klikt,
(in voorbeeld bij drachten 5 activiteiten) de info wel klopt
die van PHP is overgenomen.
Maar het is niet gesorteerd op datum.
Maar... De 5 activiteiten in Drachten staan toch al niet op volgorde? Als je wilt dat iets in de goede volgorde uit Google Maps rolt zal het toch ook eerst in de goede volgorde ingevuld moeten zijn? Je draait met een for-lus toch ergens gewoon de activiteiten af die daar plaatsvinden, of mis ik nu iets?
@Thomas
De info wordt in de volgorde van PHP arrays gebruikt in googlemaps.
Dus als ik in PHP kan sorteren op datum, dan wordt dit ook zo geplaatst in googlemaps.
Je kunt 2 manieren bedenken om te sorteren.
De ene is aan de PHP kant, de andere is aan de javascript kant.
Ik heb geprobeerd om de DIV's te sorteren aan de javascript kant.
Maar hij accepteert de de 'childs' niet.
En bovendien ook makkelijk als de PHP multiarray zou werken.
Maar ik zal nog eens wat checken...
Weet je zeker dat die arrays "op index" bij elkaar horen? Van $datumA hebben de laatste 3 entries allemaal 1549065600 (= 2019-02-02). In $arrayB staat voor de laatste entry echter een andere datum.

Daarnaast heeft $adresA 9 entries, en de rest 8. dat is de reden dat array_multisort() niet werkt (retourneert false - alle arrays moeten even lang zijn).

Als je die d'r af haalt werkt het wel (op timestamp):

<?php

$datumA = array("1548892800","1548892800","1548806400","1548806400","1548892800","1549065600","1549065600","1549065600");
$datumB = array("31-01-2019","31-01-2019","30-01-2019","30-01-2019","31-01-2019","02-02-2019","02-02-2019","28-01-2019");
$destLat = array("53.0966489","52.7488209","53.22088669999999","53.0966489","52.7488209","53.0966489","53.0966489","53.0966489");
$destLong = array("6.103173999999967","6.8742012999999815","6.577688599999988","6.103173999999967","6.8742012999999815","6.103173999999967","6.103173999999967","6.103173999999967");
$naamB = array("hans thuis","John buiten","Alie buiten","hans Thuis","John buiten","hans thuis","Hans thuis","hans thuis");
$adresA = array("Kennedylaan 2","Emmen Zuid","Groningen","","Drachten","Emmen zuid","Kennedylaan 2","Kennedylaan 2");
$adresB = array("Drachten","Emmen","UMCG","Drachten","Emmen","Drachten","Drachten","Drachten");
$adresC = array("Nederland","Nederland","Groningen","Nederland","Nederland","Nederland","Nederland","Nederland");
$fileB = array("3594917aa2c61071c2f8ed8de16417e80da3f605.jpg","43ede206d4e765b78a57fb680332eb3898360e03.jpg","670ad174d83f04df7acdbd341775ff8c5ea9f012.jpg","698919805a97a68005ce6407510037e7e38b1a53.jpg","7f38f63f385630022087b5e7ec43774a2310c66d.jpg","828d46525300cc185719387c1cee8d3534b43b6a.jpg","99110ae2a73b863cdfc1991074c79db27c008982.jpg","f57492f09c5224b4cd9847fba0afb8da04b6c752.jpg");
$refA = array("0","1","2","0","1","0","0","0");
$refB = array("7","4","2","7","4","7","7","7");

print_r([$datumA,$datumB,$destLat,$destLong,$naamB,$adresA,$adresB,$adresC,$fileB,$refA,$refB]);

var_dump(array_multisort($datumA,$datumB,$destLat,$destLong,$naamB,$adresA,$adresB,$adresC,$fileB,$refA,$refB));

print_r([$datumA,$datumB,$destLat,$destLong,$naamB,$adresA,$adresB,$adresC,$fileB,$refA,$refB]);

?>
En misschien is het ook interessant om te weten waarom je die informatie niet op voorhand combineert - waarom moeten dit alle aparte arrays zijn?

Daarbij - deze informatie komt op den duur waarschijnlijk uit een database? Dan heb je dit sorteerprobleem sowieso niet (en alles is al gegroepeerd d.m.v. het record), omdat je alles op volgorde (ORDER BY) uit je database trekt?
@Rob
Bij adresA heb je nu maar 7 entries (waren er volgens jou 9, waar het 8 moet zijn)
De laaste gegevens zijn inderdaad hetzelfde.
Dat kan voorkomen als op adres met meerdere zalen op dezelfde dag iets wordt georganiseerd.

@Thomas
Dat er losse arrays zijn toegepast komt omdat de maps deel uit maken van een groter geheel.
Denk bijv. aan pagina met uitsluitend persoonlijke gegevens. Er zijn ook pagina's waar uitsluitend gegevens nodig zijn van activiteit (flyers). Of nieuwsbrief, youtubes, enz.
Het was ook niet ingecalculeerd om al deze gegevens te gebruiken in googlemaps. Is beetje creativiteit geweest om problemen mbt clustering te voorkomen

Reageren