Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

Google maps automatisch centreren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een database met adressen. Hier heb ik via geocode lat en long bijgezet. Nu wil ik graag dat als er een plaats gekozen wordt, dat ik de kaart gecentreerd op deze plaats krijg. Dus bijv. als de plaats Appingedam wordt gekozen dat ik 't kaartje van Appingedam krijg.

Mijn tabel bestaat uit:
Id - Plaats - Straat - Huisnummer - Postcode - Lat - Lng

Ik wil dan, als Appingedam wordt gekozen dat het gemiddelde van de Lat's van Appingedam en het gemiddelde van de Lng's van Appingedam wordt genomen en dat dit als centrum van de kaart wordt genomen.

Stukje code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$sql = "SELECT avg(L_Lat]) AS Gem_Lat, avg(L_Lng) AS Gem_Lng FROM Locatie GROUP BY L_Plaats HAVING L_Plaats=".$_GET["plaats_id"].";
$resultaat = mysql_query($sql);
$rij = mysql_fetch_array($resultaat);
$lat = $rij[Gem_Lat];
$lng = $rij[Gem_Lng];


<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=MIJN KEY"
      type="text/javascript"></script>
    <script type="text/javascript">

    //<![CDATA[

   function load() {
     if (GBrowserIsCompatible()) {
       var map = new GMap2(document.getElementById("map"));
       map.setCenter(new GLatLng($lat, $lng), 13);
     }
   }

   //]]>
    </script>

Verwijderd

Snap je het verschil tussen client-side en server-side scripts? Zo ja, dan weet je dat je met het server-side script (PHP) het client-side script (Javascript) moet genereren. Zo niet, dan weet je dat nu. Verder moet je natuurlijk je script zo maken dat bij een bepaalde gebeurtenis (event) je functie wordt aangeroepen.

Ik kan je alvast verklappen dat niets van die functie door PHP gegenereerde code mag bevatten. Sterker nog, heel die functie kan eventueel in een los .js bestand worden gezet als je dat wilt. Zorg dat die Javascript functie de coördinaten doorkrijgt als argumenten van de functie.

Verwijderd

Topicstarter
dus... ik heb in de url een plaatsid staan. Dat id heb ik nodig om de plaats te weten. Van deze plaats moet de gemiddelde lat en lng berekend worden. Dit moet mbv php/mysql.
Maar de functie mag deze code niet bevatten. Dus ik kan niet de $lat en $lng gebruiken, zoals ik in mijn voorbeeld had geprobeerd. Daar was ik dus al achter.
Ik slaap er wel een nachtje over.

Verwijderd

Verwijderd schreef op zaterdag 19 juli 2008 @ 23:49:
dus... ik heb in de url een plaatsid staan. Dat id heb ik nodig om de plaats te weten. Van deze plaats moet de gemiddelde lat en lng berekend worden. Dit moet mbv php/mysql.
Maar de functie mag deze code niet bevatten. Dus ik kan niet de $lat en $lng gebruiken, zoals ik in mijn voorbeeld had geprobeerd. Daar was ik dus al achter.
Ik slaap er wel een nachtje over.
De functie mag best Javascript-code bevatten die gegenereerd wordt door PHP. Maar dat is nogal een achterlijke manier om je probleem op te lossen. Je kunt de gegevens veel beter met PHP wegschrijven naar Javascript-code om een array te maken. Vervolgens kun je in de HTML van de pagina wel ervoor zorgen dat er bij een bepaald event de juiste item uit die array wordt gezocht, en dat de functie daarna wordt aangeroepen met de gegevens uit die array. Dat is de beste manier om zoiets te doen.

Verwijderd

Topicstarter
Ok, gelukt, ik heb lat en lng aan de url toegevoegd en mbv onderstaande code gebruikt in javascript:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
var lat = 0;
      var lng = 0;
   
    var query = location.search.substring(1);
    var pairs = query.split("&");
      for (var i=0; i<pairs.length; i++) {
    
    var pos = pairs[i].indexOf("=");
    var argname = pairs[i].substring(0,pos).toLowerCase();
    var value = pairs[i].substring(pos+1).toLowerCase();

        if (argname == "lat") {lat = parseFloat(value);}
        if (argname == "lng") {lng = parseFloat(value);}