Google api gebruiken
Ik ben met een website bezig, waarbij ik ingeschreven leden wil kunnen zoeken die op een bepaalde afstand van een ingegeven plaats wonen. Nu heb ik begrepen dat ik hiervoor de google maps api zou kunnen gebruiken, maar ik heb geen idee hoe ik dit kan integreren.
Heeft iemand hierin ervaring die mij hiermee kan helpen?
Alvast bedankt!
Ik heb de Google Maps Api daarvoor op de volgende manier ooit eens gebruikt/aangepast:
Code (php)
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
30
31
32
33
34
35
36
37
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
30
31
32
33
34
35
36
37
<?php
$adres1 = 'Adres,Plaatsnaam,Land';
$adres2 = 'Adres,Plaatsnaam,Land';
$link = "http://maps.googleapis.com/maps/api/distancematrix/xml?origins=".$adres1."&destinations=".$adres2."&mode=driving&language=nl-NL&sensor=false";
function objectsIntoArray($arrObjData, $arrSkipIndices = array())
{
$arrData = array();
// if input is object, convert into array
if (is_object($arrObjData)) {
$arrObjData = get_object_vars($arrObjData);
}
if (is_array($arrObjData)) {
foreach ($arrObjData as $index => $value) {
if (is_object($value) || is_array($value)) {
$value = objectsIntoArray($value, $arrSkipIndices); // recursive call
}
if (in_array($index, $arrSkipIndices)) {
continue;
}
$arrData[$index] = $value;
}
}
return $arrData;
}
$xmlUrl = $link; // XML feed file/URL
$xmlStr = file_get_contents($xmlUrl);
$xmlObj = simplexml_load_string($xmlStr);
$arrXml = objectsIntoArray($xmlObj);
$afstand = ($arrXml['row']['element']['distance']['value']/1000);
?>
$adres1 = 'Adres,Plaatsnaam,Land';
$adres2 = 'Adres,Plaatsnaam,Land';
$link = "http://maps.googleapis.com/maps/api/distancematrix/xml?origins=".$adres1."&destinations=".$adres2."&mode=driving&language=nl-NL&sensor=false";
function objectsIntoArray($arrObjData, $arrSkipIndices = array())
{
$arrData = array();
// if input is object, convert into array
if (is_object($arrObjData)) {
$arrObjData = get_object_vars($arrObjData);
}
if (is_array($arrObjData)) {
foreach ($arrObjData as $index => $value) {
if (is_object($value) || is_array($value)) {
$value = objectsIntoArray($value, $arrSkipIndices); // recursive call
}
if (in_array($index, $arrSkipIndices)) {
continue;
}
$arrData[$index] = $value;
}
}
return $arrData;
}
$xmlUrl = $link; // XML feed file/URL
$xmlStr = file_get_contents($xmlUrl);
$xmlObj = simplexml_load_string($xmlStr);
$arrXml = objectsIntoArray($xmlObj);
$afstand = ($arrXml['row']['element']['distance']['value']/1000);
?>
@Ramon: Wat doet dit precies?
In $adres1 en $adres2 geef je 2 adressen in, uiteindelijk heb je variabele $afstand waar de afstand in staat.
Bijvoorbeeld: Ik zoek alle leden die wonen in een straal van 30 km van Deventer
Een aantal dingen:
- Als je Google maps API gebruikt, verwacht Google dat je die kaart ook effectief op je site zet. Geen bezwaren?
Krist Ensing op 20/08/2013 16:55:23:
Bijvoorbeeld: Ik zoek alle leden die wonen in een straal van 30 km van Deventer
- Okay, dus een zoek <input>; waar men een adres kan zoeken
- Heb je die informatie? Staat er bij elk lid een breedte en lengte (lat en lng) in de database? Of staat daar enkel een adres of zo?
ik heb twee dagen geleden een class geschreven die met behulp van CURL en de google API de afstand berekend tussen adres A en B. Hij staat in dit topic.
Ik denk niet dat het mogelijk is om de plaatsen binnen een straal op te vragen bij Google. Als dat wel kan dan hoor ik graag waar dat kan. Maar wat je in ieder geval wel kan doen is tussen alle leden hun afstand berekenen en dat in een mysql tabel zetten.
je zou bijvoorbeeld een tabel kunnen maken met drie kolommen:
-userId1
-userId2
-afstand
Daarbij zou ik dan de userId met het laagste nummer altijd in userId1 zetten om dubbele entries te voorkomen.