[JS]Returnen van geocoding in Google Maps v3 API

Pagina: 1
Acties:

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 22:33
Voor een Google Maps project wil ik via JavaScript de geocoding resultaten terugkrijgen bij de lookup van een adres. Nu had ik hiervoor de volgende methode gemaakt:

JavaScript:
1
2
3
4
5
6
7
8
9
function GeocodeAddress(name, address, postcode, city) {
    var geocoder = new google.maps.Geocoder();
    var query = name + ' ' + address + ' ' + postcode + ' ' + city;
    geocoder.geocode( {'address': query}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK)
            AddMarker(name, results[0].geometry.location.lat(), results[0].geometry.location.lng());
            // hier een return...
    });
}


Nu heb ik al geprobeerd de return waarde te plaatsen in plaats van de AddMarker-methode, voo de geocoder.geocode methode en combinaties daarvan. Ook heb ik ook geprobeerd een variabele in de functie aan te maken, waarnaar deze werd gevuld door de geocoder en dan gereturned werd. Echter krijg ik steeds een 'undefined' terug, zeer waarschijnlijk door de asynchrone communicatie met de server.

Waarschijnlijk is het iets heel simpels, of zeer simpel op te lossen, maar ik zit me er redelijk op stuk te bijten en kom er maar niet uit.

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wat probeer je nou te bereiken, want heb 't idee dat je tekst niet helemaal strookt met 't stuk code?

Of wil je niet gewoon de geocoding terugkrijgen (output) als je een adres opgeeft (input)?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Currahee
  • Registratie: November 2004
  • Laatst online: 21:01

Currahee

3 miles up, 3 miles down!

Heb je al gekeken bij de voorbeelden die google aanbiedt? Volgens mij staat hier letterlijk de code tussen die jij nodig hebt. Ik heb zelf ook eerst gekeken naar die voorbeelden en langzaamaan de code aangepast zodat deze voldeed aan mijn wensen. In de voorbeelden staan zowel de geocode als de reverse geocode.

De voorbeelden staan alhier: http://code.google.com/in...cript/examples/index.html (Gewoon de broncode opvragen)

[ Voor 7% gewijzigd door Currahee op 27-08-2010 11:32 ]


Acties:
  • 0 Henk 'm!

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 22:33
BtM909 schreef op vrijdag 27 augustus 2010 @ 11:10:
Wat probeer je nou te bereiken, want heb 't idee dat je tekst niet helemaal strookt met 't stuk code?

Of wil je niet gewoon de geocoding terugkrijgen (output) als je een adres opgeeft (input)?
Momenteel staat er inderdaad de AddMarker() functie, maar eigenlijk wil ik die vervangen zien door een return. Of in ieder geval wil ik graag dat de functie GeocodeAddress een LatLng object teruggeeft van het adres.
Currahee schreef op vrijdag 27 augustus 2010 @ 11:32:
Heb je al gekeken bij de voorbeelden die google aanbiedt? Volgens mij staat hier letterlijk de code tussen die jij nodig hebt. Ik heb zelf ook eerst gekeken naar die voorbeelden en langzaamaan de code aangepast zodat deze voldeed aan mijn wensen. In de voorbeelden staan zowel de geocode als de reverse geocode.

De voorbeelden staan alhier: http://code.google.com/in...cript/examples/index.html (Gewoon de broncode opvragen)
Bedankt voor de link. De API, samples en demo's had ik al helemaal doorgenomen, waarnaast ook de 'Services'-pagina. Echter heb ik de oplossing die ik zoek nog niet kunnen vinden.

Acties:
  • 0 Henk 'm!

  • alex3305
  • Registratie: Januari 2004
  • Laatst online: 22:33
Inmiddels heb ik ook uitgevonden dat het ook in PHP mogelijk is. Voor het resultaat wat ik wilde bereiken is dat ook een goede oplossing. Deze heb ik dan ook toegepast:
PHP:
1
2
3
4
5
6
7
8
9
10
11
// Get Google Maps geocoding.
$mapsAddress  = 'http://maps.google.com/maps/geo?q='.urlencode($item->address).'+';
$mapsAddress .= urlencode($item->postcode).'+'.urlencode($item->city).'+'.urlencode($item->country).'&output=xml';
$contents = file_get_contents($mapsAddress);
$results = new SimpleXMLElement($contents);

if ($results->Status->code == '200') {
    list($longitude, $latitude, $altitude) = explode(',', $results->Response->Placemark->Point->coordinates);
    $item->latitude = $latitude;
    $item->longitude = $longitude;
}

Misschien dat iemand anders er nog wat aan heeft. :)