Alternatieven voor Google Maps & Places API

Afgelopen mei kondigde Google het nieuwe prijsmodel aan voor hun Maps, Routes en Places API. Waar de kosten voorheen nul of nihil waren, kunnen de kosten voor middel- tot grote sites nu flink oplopen. In dit artikel gaan we op zoek naar manieren en alternatieven om de kosten te beperken zonder essentiële functionaliteit te hoeven inleveren.

Tot 16 juli 2018 was het gebruik van de API nog gratis voor klein gebruik; meer verbruik vereiste slechts een eenvoudige identificatie. In het nieuwe prijsmodel betaal je naar rato van je verbruik. De kosten per call zijn daarin gestaffeld: hoe meer je verbruikt, hoe minder je betaalt per call. De eerste $200 van je verbruik per maand is bovendien kosteloos waardoor een eenvoudig kaartje op een klein-tot-middelgrote website nog gratis is. Heb je echter een website met enkele tienduizenden bezoekers of meer dan zul je gemerkt hebben dat de kosten ineens sterk zijn gestegen. Zo zouden wij voor sommige sites die door periodieke campagnes hoge bezoekerspieken al enkele duizenden euro's(!) gaan betalen. Uitschieter is een site waarbij de kosten boven de €40.000 zouden uitvallen. Tijd voor een andere aanpak dus.

Aanpak 1: Optimalisatie

Omdat de kosten voorheen vrijwel nihil waren, lag de druk om het aantal calls naar de Google API te minimaliseren niet enorm hoog. In veel gevallen echter, kan het aantal calls eenvoudig verminderd kunnen worden door de volgende optimalisaties:

Calls uitstellen

In veel gevallen deden we calls naar de API waarbij de data pas op een later moment nodig was. Hierdoor werden calls gedaan waarvan de data wellicht niet eens gebruikt werd. Door deze weg te halen, konden we het aantal calls drastisch verlagen.

Caching toevoegen

De data kon veelal (tijdelijk) opgeslagen worden om later nogmaals gebruikt te worden. Of als de basis-data (zoals adres) niet verandert, hoeven we niet opnieuw een call naar de API te doen. Google staat het cachen toe mits het als doel heeft de snelheid te bevorderen, niet per se om minder calls naar Google te doen. Het aantal calls verminderen door middel van caching heeft een gigantisch effect gehad, maar hier kwamen we al snel in een schemergebied terecht.

Aanpak 2: Data lokaal opslaan

De Nederlandse overheid heeft als belangrijk uitgangspunt om data van Nederlandse overheden centraal inzichtelijk en toegankelijk te maken. Ze doet dit middels een portal website met enorm veel datasets; van leefbaarheidsindexen van buurten in Nederland tot verkiezingsuitslagen per gemeente.

De informatie die wij als Unc Inc nodig hebben is tweeledig. Enerzijds is het ons bij de adressen, postcodes, wijken, stadsdelen, steden, gemeenten en provincies van Nederland vooral te doen om de naam (en eventuele aliassen, b.v. Den Bosch en 's-Hertogenbosch), de geografische vorm en ligging van dit onderdeel. Daarnaast willen we de structurele informatie: welke steden vallen binnen welke gemeente, welke postcodes vallen binnen welke stad, etc. De data gebruiken wij met name voor het opzoeken en aanvullen van adressen, het suggereren van plaatsen op basis van gebruikersinvoer, en het tonen van informatie op de kaart.

Een onderdeel van de beschikbare data is de geografische data van de Basisregistratie Adressen en Gebouwen (BAG). Deze dataset bevat informatie van de geografische vorm (polygonen) van gebieden, zoals postcodes. Verder zijn er zogenaamde PC4 en PC6 datasets beschikbaar. PC4 geeft alle postcodes in Nederland, met daarin alle woonplaatsen, gemeenten en provincies.

Beide datasets zijn vrij van auteursrecht en mogen lokaal gekopieerd en gebruikt worden. Als aanpak hebben wij een eenvoudig importeer-script geschreven dat deze data combineert en lokaal in een database opslaat. Daarmee zijn ze gebruiksklaar voor onze sites, vrij van rechten, licenties en API calls, en dus vrij van (externe) kosten.

Voor veel sites is deze aanpak voldoende, en lost het het kostenprobleem op. Echter mist de data een mate van verfijndheid. Zo missen we de aliassen van plaatsnamen maar - nog belangrijker - we missen alle dorpen, gehuchten en buurtschappen. En dat zijn er nogal wat. Datasets voor dorpen, gehuchten, buurtschappen en aliassen lijken echter niet beschikbaar op de open data portal.

Aanpak 3: Het Nationaal Georegister

Exact voor doeleinden als de onze, is het Nationaal Georegister (NGR) opgericht, het resultaat van een samenwerking met de Publieke Dienstverlening op de Kaart. De dienst is een online voorziening van bovenstaande open data maar dan actief bijgehouden en gecombineerd tot meer bruikbare data. Als gebruiker wordt de service aangeboden onder een Fair Use policy en er kunnen geen verdere rechten aan de dienst verleend worden. Voor bedrijven (of particulieren) garanderen ze geen uptime, geen actuele data, en verlenen ze geen verdere ondersteuning. Het gebruik is echter volledig vrij en gratis en bevat vrijwel alle data die wij nodig hebben. De enige restrictie is wel dat het slechts informatie van Nederland bevat en daarmee niet geschikt is voor projecten die tot over de grens reiken.

NGR biedt een webservice aan die gebaseerd is op de Solr zoekmachine. Dit stelt een developer in staat om een directe integratie met zijn/haar software op te zetten. Omdat het Solr is, is de syntax van de webservices vrij standaard. Ook features als spellchecking worden aangeboden, dus zelfs foutieve invoer van een gebruiker valt te herleiden naar mogelijke resultaten.

Er zijn verschillende datasets beschikbaar maar met name twee onderstaande zijn interessant:

Suggest

Deze dataset geeft suggesties van mogelijke plaatsnamen (en bijbehorende informatie) op basis van de input van een gebruiker. Ieder object in deze dataset heeft een ID.

Lookup

Deze geeft meer informatie over een specifiek object, op basis van een ID.

Alternatieven

Natuurlijk kan het zijn dat zowel open data als het NGR niet de juiste dataset is voor jouw platform. Naast de beperking tot Nederlandse data bevat deze bijvoorbeeld geen commerciële data waardoor het zoeken naar bepaalde plekken als winkels of restaurants geen resultaten geeft. Daarbij maken deze geen gebruik van gebruikersfeedback, impliciet noch expliciet. Impliciet kan Google gebruikmaken van gebruiksstatistieken om zo de relevantie van bepaalde plekken te bepalen en te verbeteren. Als gebruiker kun je bovendien expliciet feedback geven op de kwaliteit van data, suggesties doen en data toevoegen. Dit alles is een veel directer proces dan het geven van feedback op de kwaliteit van data afkomstig van een gemeente.

Uiteraard zijn er ook alternatieven voor Google, die sinds hun nieuwe prijsmodel waarschijnlijk worden overspoeld met nieuwe klanten. De grootste alternatieven zijn:

Mapbox

Mapbox is al jaren een goed alternatief voor Google Maps en is met name interessant door de focus op de interactie met de kaart. Ze leveren hun eigen software voor het maken van eigen tilesets. Ze geven volledige vrijheid in het design van de kaarten en gaan daarin veel verder dan concurrenten. Je kan gebruik maken van een grote set aan vooraf gedefinieerde, gestijlde kaarten. Deze variëren van kaarten voor autonavigatie of wandelaars tot stilistische kaarten die lijken op een aquarel tekening. Hun eigen software voor het weergeven van interactieve kaarten is gebaseerd op WebGL waardoor de kaarten soepel werken en scherpe afbeeldingen geven op alle zoomniveaus. Bovendien kun je hun kaarten integreren met Leaflet waardoor je alle vrijheid hebt in het combineren met andere databronnen.

Mapbox levert echter ook API’s met locatie-informatie, het alternatief voor Google Places. Hun basisplan voor zowel kaarten als locatie-informatie is gratis, pas vanaf een bepaald aantal verzoeken per maand ga je een bedrag betalen die stukken lager ligt dan Google.

TomTom

TomTom was jarenlang de grootste speler met hun devices voor GPS-navigatie. Hoewel het het voor de hand lag om hun data te ontsluiten voor extern gebruik zijn hun online API’s nog niet heel lang beschikbaar. Het is daarom nog te vroeg om de kwaliteit te beoordelen maar onze eerste indrukken zijn dat de data erg compleet is. De focus lijkt echter nog steeds op autorijden te liggen, iets dat niet altijd relevant is voor specifiek gebruik. Ook lijken hun kaarten op het eerste gezicht minder mooi en zijn ze vooral functioneel.

Bing Maps

Bing Maps is alternatief van Microsoft voor Google Maps en lijkt op het eerste gezicht een directe kopie. Maar zoals van Microsoft valt te verwachten is hun pricing model complex en leidt de pagina met informatie al snel tot het indienen van een offerteaanvraag. Hun Azure API omgeving lijkt meer informatief, maar geeft vergelijkende prijzen als die van Google.

Veel succes!

Al met al zijn er genoeg manieren om een kaartfunctionaliteit aan te bieden zonder op te hoeven draaien voor gigantische kosten. Biedt een optimalisatie geen soelaas dan zijn er altijd nog een aantal alternatieven die uitkomst kunnen bieden. Heb je nog hulp nodig met de implementatie, stuur dan even een mailtje naar info@uncinc.nl. Natuurlijk zijn ook je aanvullingen welkom, dan verrijken we daarmee het artikel. Alvast bedankt!