Location-based services are at the heart of many applications that individuals use every day. However, there is often no guarantee of the truthfulness of users' location data, since this information can be easily spoofed without a proof mechanism. In distributed system applications, preventing users from submitting counterfeit locations becomes even more challenging because of the lack of a central authority that monitors data provenance. In this work, we propose a decentralized architecture based on blockchains and decentralized technologies, offering a transparent solution for Proof of Location (PoL). We specifically address two main challenges, i.e., the issuing process of the PoL and the proof verification. We describe a smart contract based implementation in Reach, a blockchain-agnostic smart contract language, and the tests we conducted on different blockchains, i.e. Ethereum, Polygon, and Algorand, measuring latency and costs due to the payment of fees. Results confirm the viability of the proposal.