Toon meerdere markers in Google Maps

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

John Break

John Break

09/03/2020 21:25:34
Quote Anchor link
Voor mijn website wil ik de resultaten ook gaan weergeven in Google Maps.

Als er op submit geklikt wordt kan ik de latitude en longitude meegeven zodat die gebruikt kunnen worden. Dan worden de coordinaten meegenomen van het stadion van het thuis spelende team.

Voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
                $lat_d = $row['lat'];
                $lon_d = $row['lng'];
                $coords = $lat_d." ".$lon_d."<br>";
                echo $coords;

result: 51.553551 -0.109772 51.481663 -0.190956 51.560192 -0.012714 51.486687 0.035847 51.397713 -0.085264 51.488178 -0.302524 51.405396 -0.282424 51.367615 -0.204393 51.569420 -0.417483

Deze coordinaten wil ik per stuk met een marker gaan tonen in google maps op mijn website.
Hiervoor heb ik het volgende stukje code toegevoegd aan mijn PHP script die de zoekresultaten genereert.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
                echo "        
                <script type=\"text/javascript\">

                var locations = [];

                var map = new google.maps.Map(document.getElementById('map'), {
                    zoom: 10,
                    center: new google.maps.LatLng($lat, $lng),
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                });

                // var infowindow = new google.maps.InfoWindow();

                var i;

                for (i = 0; i < $row.length; i++) {  
                    marker = new google.maps.Marker({
                    position: new google.maps.LatLng(locations[i][0], locations[i][1]),
                    map: map
                    });
                }
                </script>

                ";  


Op plek van var locations moeten de coordination geplaatst worden zodat verderop in het script de markers aangemaakt kunnen worden. Al heel veel verschillende dingen geprobeerd.
Resultaat: helemaal geen marker in Google Maps of alleen de laatste coördinaat.

Wie kan mij hiermee helpen om dit voor elkaar te krijgen?
Gewijzigd op 09/03/2020 21:39:23 door John Break
 
PHP hulp

PHP hulp

06/11/2024 00:26:52
 
- Ariën  -
Beheerder

- Ariën -

09/03/2020 21:32:15
Quote Anchor link
Kan je jouw code tussen code-tags plaatsen zodat het overzichtelijker in het topic staat? Zie ook de Veelgestelde Vragen voor de opmaakcodes.
 
Michael -

Michael -

09/03/2020 21:34:52
Quote Anchor link
Graag code tags gebruiken, zie ook de veel gestelde vragen.
Daarnaast is het niet aan te raden het hele script gedeelte te echo'en. Als je php in javascript wilt gebruiken kun je dit prima alleen op de plek doen door php te openen en te sluiten.

Komt $row uit de database? En is dus een php-variabele? Dan zal $row.length in ieder geval niet werken. De functie voor php is count($row)
Probeer variabelen in een alert of console.log te zetten om te zien of en waarmee die gevuld zijn, zo kom je erachter waar het mogelijk mis gaat.
Gewijzigd op 09/03/2020 21:39:00 door Michael -
 
John Break

John Break

09/03/2020 21:41:20
Quote Anchor link
$row is idd result van de database hierdoor weet ik het aantal rijen/output.
 
Michael -

Michael -

09/03/2020 21:45:21
Quote Anchor link
maar je combineert het nu wel heel letterlijk. .length is javascript. Volgens mij kan dit nooit op deze manier.
Wat wel zou kunnen is de php variabele aan een var (is javascript) toekennen, maar ik zal eerst je javascript en php eens wat beter scheiden.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
var row = <?php echo $row; ?>
print(row.length);

maar dan kun je evengoed of zelfs beter
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
count($row);
?>

gebruiken.
Gewijzigd op 09/03/2020 21:46:07 door Michael -
 
John Break

John Break

09/03/2020 21:48:19
Quote Anchor link
klopt dat dingen nu door elkaar heen staan. Maar dit komt door het testen / proberen om het werkend te krijgen.
voor mij is nu denk ik stap 1 om de coordinaten in var locations te krijgen en dan als dat werkt de code te fine tunen. :)
 
Michael -

Michael -

09/03/2020 21:57:01
Quote Anchor link
Het probleem is juist dat het nu mis gaat doordat er dingen door elkaar lopen.
Probeer dit eens.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
$lat_d
= $row['lat'];
$lon_d = $row['lng'];
$coords = $lat_d." ".$lon_d."<br>";
echo $coords;
?>

<script>

var locations = [];

var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 10,
    center: new google.maps.LatLng(<?php echo $lat; ?>, <?php echo $lng; ?>),
// Waar komt $lat en $lng vandaan? Moet dit niet $lat_d en $lon_d zijn?
    mapTypeId: google.maps.MapTypeId.ROADMAP
});

// var infowindow = new google.maps.InfoWindow();

var i;

for (i = 0; i < <?php echo count($rows); ?>; i++) {  
    marker = new google.maps.Marker({
    position: new google.maps.LatLng(locations[i][0], locations[i][1]),
// Waar komt locations vandaan? Deze array is nog leeg?
    map: map
    });
}
</script>

Zie ook de commentaar regels.
Gewijzigd op 09/03/2020 21:58:02 door Michael -
 
John Break

John Break

09/03/2020 22:02:50
Quote Anchor link
Ga ik zo even proberen.

Op dit moment werkt het stukje dat de locatie waar op gezocht wordt getoond word:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
center: new google.maps.LatLng($lat, $lng),

Dit geeft als je bijvoorbeeld op London zoekt de coordinaten van London en dat wordt daar de focus op gelegd in Google Maps.
// Waar komt $lat en $lng vandaan? Moet dit niet $lat_d en $lon_d zijn?
Dit zijn de coordination waar de gebruiker op zoekt.

// Waar komt locations vandaan? Deze array is nog leeg?
Dat is waar ik mee bezig ben en waar ik niet uit kom. var locaties []; moet gevuld worden met de coordinaten die uit het zoekresultaat komen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$lat_d = $row['lat'];
$lon_d = $row['lng'];


Hier zou dan een array van gemaakt moeten worden en geplaatst worden in var locaties.
Gewijzigd op 09/03/2020 22:03:45 door John Break
 
Michael -

Michael -

09/03/2020 22:13:12
Quote Anchor link
Waarom creëer je de locations array niet in PHP dan. Deze komt uit je database en kun je gelijk in een array gieten en aan javascript voeren.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$locations_array
= array(
    array('Plaatsnaam', -33.890542, 151.274856),
    array('Plaatsnaam', -33.923036, 151.259052),
    array('Plaatsnaam', -34.028249, 151.157507),
    array('Plaatsnaam', -33.80010128657071, 151.28747820854187),
    array('Plaatsnaam', -33.950198, 151.259302),
);

?>

  <script>
    var locations = <?php echo json_encode($locations_array); ?>
    // en de rest van de code..

Getest en werkt hier. Zijn btw niet jouw locaties ;)
Gewijzigd op 09/03/2020 22:15:01 door Michael -
 
John Break

John Break

09/03/2020 22:17:21
Quote Anchor link
Dat werkt ook net zoals ik het op deze manier zou doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
                var locations = [
                    [51.553551, -0.109772], [51.481663, -0.190956], [51.560192, -0.012714], [51.486687, 0.035847]
                ];

                var map = new google.maps.Map(document.getElementById('map'), {
                    zoom: 10,
                    center: new google.maps.LatLng($lat, $lng),
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                });

                // var infowindow = new google.maps.InfoWindow();

                var i;

                for (i = 0; i < locations.length; i++) {
                    marker = new google.maps.Marker({
                    position: new google.maps.LatLng(locations[i][0], locations[i][1]),
                    map: map
                    });
                }


Nu komen de 4 locaties netjes in Google Maps te staan maar dit is statisch. Als iemand zoekt op Amsterdam komen er andere coordinaten uit. Die moeten dan getoond worden.
 
- Ariën  -
Beheerder

- Ariën -

09/03/2020 22:20:32
Quote Anchor link
Dan haal je die toch uit de database?
 
John Break

John Break

09/03/2020 22:22:11
Quote Anchor link
yes dat is wat ik moet doen maar dat lukt me niet.. :P
ik krijg dat niet voor elkaar waarschijnlijk zie ik het gewoon niet meer omdat ik hier te lang mee loop te klooien ;)
 
Michael -

Michael -

09/03/2020 22:28:10
Quote Anchor link
Ja wat jij doet is statisch, maar wat ik doe niet. Die array creëer je dan met je database resultaten.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
// $result = SELECT plaatsnaam,lan,lng FROM tabel
// while ($row = mysql_fetch_assoc($result)) {
//     $locations_array[] = array($row['plaatsnaam'],$row['lan'],$row['lng']);
// }

?>

<script>
var locations = <?php echo json_encode($locations_array); ?>;
// etc...

Moet wel heel erg worden voorgekauwd ;)
 
John Break

John Break

09/03/2020 22:47:49
Quote Anchor link
Er hoeft helemaal niet veel voorgekauwd worden maar ik heb inmiddels zoveel dingen geprobeerd dat ik door de bomen het bos niet meer zie ;)

maar de output hiervan is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
                      $locations_array[] = array($row['lat'],$row['lng']);
                      echo json_encode($locations_array); // ff om te testen wat de output is.


[["51.553551","-0.109772"]] [["51.553551","-0.109772"],["51.481663","-0.190956"]] [["51.553551","-0.109772"],["51.481663","-0.190956"],["51.560192","-0.012714"]] [["51.553551","-0.109772"],["51.481663","-0.190956"],["51.560192","-0.012714"],["51.486687","0.035847"]] [["51.553551","-0.109772"],["51.481663","-0.190956"],["51.560192","-0.012714"],["51.486687","0.035847"],["51.397713","-0.085264"]] [["51.553551","-0.109772"],["51.481663","-0.190956"],["51.560192","-0.012714"],["51.486687","0.035847"],["51.397713","-0.085264"],["51.488178","-0.302524"]] [["51.553551","-0.109772"],["51.481663","-0.190956"],["51.560192","-0.012714"],["51.486687","0.035847"],["51.397713","-0.085264"],["51.488178","-0.302524"],["51.405396","-0.282424"]] [["51.553551","-0.109772"],["51.481663","-0.190956"],["51.560192","-0.012714"],["51.486687","0.035847"],["51.397713","-0.085264"],["51.488178","-0.302524"],["51.405396","-0.282424"],["51.367615","-0.204393"]] [["51.553551","-0.109772"],["51.481663","-0.190956"],["51.560192","-0.012714"],["51.486687","0.035847"],["51.397713","-0.085264"],["51.488178","-0.302524"],["51.405396","-0.282424"],["51.367615","-0.204393"],["51.569420","-0.417483"]]

Gaat nog niet helemaal zoals het zou moeten. Maar ga wel even verder puzzelen. Bedankt voor je hulp so far!
 
Michael -

Michael -

09/03/2020 22:51:23
Quote Anchor link
Let op dat je wel een eerste argument moet meegeven he. Tenminste, zonder deed ie t bij mij ook niet. Daarom had ik er "plaatsnaam" bij gezet.

Wat is er mis met die output? Die geef je dus aan javascript mee zoals in m'n voorbeeld.
 
John Break

John Break

09/03/2020 22:54:12
Quote Anchor link
De output zouden hierbij 9 coordinaten moeten zijn en er zitten dubbele tussen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$locations_array[] = array($row['plaatsnaam'],$row['lat'],$row['lng']);
echo json_encode($locations_array);

[[null,"51.553551","-0.109772"]] [[null,"51.553551","-0.109772"],[null,"51.481663","-0.190956"]] [[null,"51.553551","-0.109772"],[null,"51.481663","-0.190956"],[null,"51.560192","-0.012714"]] [[null,"51.553551","-0.109772"],[null,"51.481663","-0.190956"],[null,"51.560192","-0.012714"],[null,"51.486687","0.035847"]] [[null,"51.553551","-0.109772"],[null,"51.481663","-0.190956"],[null,"51.560192","-0.012714"],[null,"51.486687","0.035847"],[null,"51.397713","-0.085264"]] [[null,"51.553551","-0.109772"],[null,"51.481663","-0.190956"],[null,"51.560192","-0.012714"],[null,"51.486687","0.035847"],[null,"51.397713","-0.085264"],[null,"51.488178","-0.302524"]] [[null,"51.553551","-0.109772"],[null,"51.481663","-0.190956"],[null,"51.560192","-0.012714"],[null,"51.486687","0.035847"],[null,"51.397713","-0.085264"],[null,"51.488178","-0.302524"],[null,"51.405396","-0.282424"]] [[null,"51.553551","-0.109772"],[null,"51.481663","-0.190956"],[null,"51.560192","-0.012714"],[null,"51.486687","0.035847"],[null,"51.397713","-0.085264"],[null,"51.488178","-0.302524"],[null,"51.405396","-0.282424"],[null,"51.367615","-0.204393"]] [[null,"51.553551","-0.109772"],[null,"51.481663","-0.190956"],[null,"51.560192","-0.012714"],[null,"51.486687","0.035847"],[null,"51.397713","-0.085264"],[null,"51.488178","-0.302524"],[null,"51.405396","-0.282424"],[null,"51.367615","-0.204393"],[null,"51.569420","-0.417483"]]
 
Michael -

Michael -

09/03/2020 22:59:01
Quote Anchor link
Het lijkt er zo op dat je echo binnen de while() staat. Dus dan dan komt er elke loop inderdaad 1 bij.
Zet je echo er dus buiten.
 
John Break

John Break

09/03/2020 23:07:06
Quote Anchor link
Yess, dat was het!
Nu werkt het :)
 
Michael -

Michael -

09/03/2020 23:07:59
Quote Anchor link
Top!
 
John Break

John Break

09/03/2020 23:09:15
Quote Anchor link
Michael - op 09/03/2020 23:07:59:
Top!


Bedankt voor je hulp!
 
Michael -

Michael -

09/03/2020 23:17:05
Quote Anchor link
Graag gedaan!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.