Suchst du nach der Entfernung mit (einem bestimmten) Verkehrsmittel oder via Luftlinie?
Google Maps besitzt eine API, allerdings ist die kostenlose Lizenz nicht nur funktionell begrenzt sondern erlaubt täglich maximal 2.500 Anfragen. OpenStreetMap besitzt auch eine
API, aber auch diese bietet keine unlimitierten Anfragen. Wenn du häufige Abfragen erwartest, würde ich dir den Download der Daten (zum Beispiel via Osmosis) empfehlen und/oder solche Informationen in einer lokalen Datenbank zwischenzuspeichern.
Alternativ kannst du auch die Luftlinienentfernung berechnen. Das ist sogar viel einfacher, weil man sich nicht (unbedingt) auf einen externen Dienst verlassen muss. Die Entfernung aus zwei GPS-Koordinaten lässt sich ganz einfach in ein paar Schritten errechnen und das funktioniert auch mit PHP problemlos. GeoNames bietet für viele Länder eine
Klartextliste von Orten für viele Länder an. Für Deutschland gibt es beispielsweise fast 16.500 Koordinaten - das ist bereits mehr als die zirka 12.000 Städte, die es im ganzen Land gibt.