Spring naar de hoofdinhoud

Intergraties

AJAX integratie

De plugin biedt een AJAX hook aan, waarmee POI informatie opgehaald kan worden. Deze hook verwacht drie paramters: - Types - Latitude - Longitude

De vierde, optionele parameter request_type geeft aan of alle types los van elkaar opgehaald moeten worden (separate) of in één query (compound). Hou er rekening mee dat request_type: separate er voor zorgt dat elk type meetelt in het aantal requests richting Google.

Een voorbeeld AJAX request via jQuery voor het ophalen van informatie ziet er als volgt uit: 

jQuery.post(ajaxurl, {
    action: 'locatorCache',
    type: ['restaurant', 'supermarket', 'gym'],
    request_type: 'compound',
    latitude: '53.194885',
    longitude: '5.800822',
}, function(response) {
    if (response.status === false) {
        return console.warn("Unable to resolve places: the API did not respond or an invalid request was made.");
    }

    var poi;
    for (var i = response.data.length - 1; i >= 0; i--) {
        poi = response.data[i];
        // Latitude van de POI: poi.geometry.location.lat;
        // Longitude van de POI: poi.geometry.location.lng;
        // Naam van de POI: poi.name;
    }
});

Let op: de variabele ajaxurl is alleen gedefinieerd in het back-end van WordPress. Op de front-end zul je deze variabele zelf beschikbaar moeten aanmaken. Je kan hiervoor gebruiken maken van de wp_localize_script van WordPress. Meer informatie hierover vind je op https://developer.wordpress.org/reference/functions/wp_localize_script/.

Informatie uit deze hook wordt automatisch gecached. De response (response.data) bevat een key cache_hit om aan te geven of de informatie uit de cache gehaald kon worden of dat de Google API geraadpleegd moest worden.

Handmatige integratie

Deze manier van integreren wordt uitgevoerd in PHP op de server. Deze functionaliteit past standaard geen caching toe, waardoor elke request opnieuw via Google verloopt. De parameters zijn nagenoeg gelijk met de AJAX hook, namelijk: - Types - Latitude - Longitude

use Tussendoor\Locator\CacheController;

try {
    $cacheController = new CacheController();
    $pois = $cacheController->getPlacesFromApi(
        ['bicycle_store', 'book_store', 'clothing_store'],
        '53.194885',
        '5.800822'
    );
} catch (Exception $e) {
    // Er trad een fout op tijdens de API request
}

if ($pois === false) {
    // Er is een fout opgetreden, bijv. de API key is niet ingevuld
}

foreach ($pois as $poi) {
    $poiLocation = $poi['geometry']['location'];
    // $poiLocation['lat']
    // $poiLocation['lng']
    $poiName = $poi['name'];
    // ... etc
}