Esto suena como un tipo de problema de embalaje . Aquí hay una implementación en Python del empaquetamiento del círculo en una variación del rectángulo: https://gist.github.com/CnrLwlss/4572781
Véase también esta pregunta estrechamente relacionada: algoritmo para colocar el máximo número de puntos dentro del área restringida con una separación mínima
Sin embargo, hay que tener en cuenta que puede haber muchas soluciones, si no infinitas, por lo que habrá que tener en cuenta lo que produce la API que se está utilizando frente a lo que produce la solución de empaquetado.
¿Qué API está utilizando?
Tal vez podría utilizar una rejilla hexagonal como la que se discute en estas preguntas:
El centro de cada hexágono con radio = 5km debería ser una aproximación suficientemente buena. Por supuesto, habrá algún solapamiento, ya que un círculo de 5 km es mayor que un hexágono de 5 km.
Esta pregunta de StackOverflow ofrece un algoritmo para generar un "entramado casi, pero no del todo hexagonal", con las respuestas ofreciendo optimizaciones: Generar eficazmente una red de puntos en python
Este ejemplo de geoprocesamiento de ArcGIS pretende crear una clase de característica de polígono hexagonal: Crear hexágonos
Este Respuesta de Math.SE sugiere que no hay una solución óptima para el problema de "cubrir un rectángulo con círculos", pero que el enfoque de la red hexagonal es probablemente lo suficientemente bueno.
Otra cosa que hay que tener en cuenta es que, como se trabaja con coordenadas geográficas, lo que realmente se busca es un Rejilla geodésica no un entramado hexagonal. Las respuestas a esta pregunta del SO también tienen buena información: Cubrir la tierra con baldosas de mapa hexagonales
Sin embargo, puede ser más fácil trabajar en el espacio euclidiano hasta que se necesiten coordenadas geográficas (las de sus centroides), y simplemente proyectar en coordenadas geográficas en ese momento. Para ello, por supuesto, necesitará un motor de proyección o algoritmo.