No need to write it yourself - the article mentions using Leaflet https://leafletjs.com/ for just such a purpose.
When I last looked at this, using Google Maps tiles with Leaflet was against the ToS.
Right, just using the plain gmaps tiles in a Leaflet tile layer is against the google TOS. But there is a Leaflet plugin that puts the whole google map component in a TOS-compliant way as a layer into leaflet and keeps both in sync with DOM observers. Sounds pretty weird but works perfectly in production.
Probably spirit vs letter of the law there. Hopefully performance has improved since the last time I looked (3 years ish)
It's a contract, not yet a law (thanks btw).
Contracts are usually taken pretty literally if the judge who decides sees significant time being put into the contract to make it include all forseable cases.