** ESTOY USANDO ESTO EN LAS FUNCIONES DE REVERSE GEO, EN GEOGRAFIA: Para reverse geocoding, desde una latlong obtengo el nombre de la ubicación, o desde el nombre de la ubicación, puedo obtener su latlong https://nominatim.openstreetmap.org/ https://wiki.openstreetmap.org/wiki/Nominatim https://wiki.openstreetmap.org/wiki/Nominatim#Examples MUY ÚTIL PARA DESCUBRIR LAS COORDENADAS DE UN PUNTO O UN AREA POLIGONO http://geojson.io Usando mis funciones del modulo Geo en perros, puedo copiar y pegar las coordenadas del polígono, (Tener cuidado en que el primer valor de cada dupla es la longitud) y luego usar las funciones allí para detectar si una coordenada cualquiera está dentro del polígono. GEOLOCALIZACIÓN EN RADARDOGS ---------------------------- Utilizo el modulo de MiLibrary/geografia para poner las pantallas de ubicación. Ese modulo cuando obtiene las coordenadas del lugar, geografia/ubicacion/geolocalizarbase.phtml, embebe según la elección del usuario a geografia/ubicacion/geolocalizardetect.phtml o a geografia/ubicacion/mapautocompletesearchbox.phtml Sus funciones JS permiten indicarle que función propia al proyecto actual deberá ser informada al obtener la ubicación del usuario, fnJsAlDetectarLatLong => "geoDetectReady" (en Radardogs) si utilizo detect del navegador o fnJsAlDetectarLatLong => "geoDeclareReady" (en Radardogs) si el usuario escribe su dirección Ambas funciones están en geo/index/geolocalizarjs.phtml y dirigen la acción a geoNueva() pasandole como primer parametro si la data se obtuvo por "detect" o "declare". Esa fn JS invoca el php /geo/index/geonuevaAction quién utiliza Inversa OpenStreetMap, $lugarConInversa = $this->geoInterfaseColeccion->getGeolocalizacionInversaDesdeOpenstreetmap( $vars ); y luego lo asienta en mis tablas $lugarConInversaYMisIds = $this->geoInterfaseColeccion->asentarUbicacionInversaEnMisTablas( $lugarConInversa ); geografia/models/AAInterfaseColeccion.php getGeolocalizacionInversaDesdeOpenstreetmap( $params ) que obtiene la descripción de las coordenadas recibidas, ej: place_id "18412096" licence "Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright" osm_type "way" osm_id "369178358" lat "-34.5270004489796" lon "-58.4731922857143" display_name "835, Saturnino Segurola, Vicente López, Partido de Vicente López, Buenos Aires, 1638, Argentina" address house_number "835" road "Saturnino Segurola" suburb "Vicente López" city "Vicente López" state_district "Partido de Vicente López" state "Buenos Aires" postcode "1638" country "Argentina" country_code "ar" boundingbox 0 "-34.52710044898" 1 "-34.52690044898" 2 "-58.473292285714" 3 "-58.473092285714" Estos datos se asientan en mis tablas y finalmente, los códigos finales de la ubicación, son seteados en las variables de session del proyecto: $this->geoModel->setUbicacion( $lugarConInversaYMisIds ); OTRAS HERRAMIENTAS QUE PODRÍAN SER ÚTILES: ej de SEARCHBOX https://labs.easyblog.it/maps/leaflet-search/examples/geocoding-nominatim.html obtener una KEY API paga para trabajar y obtener datos usando leaflet https://www.mapbox.com https://www.thunderforest.com https://labs.easyblog.it/maps/leaflet-search/examples/geocoding-nominatim.html Integration with GeoNames GeoNames.org offers web services and downloadable databases with data on geographical features around the world, including populated places. They offer both free and paid premium data. Each feature is unique identified by a geonameId, which is an integer. Many of the records returned by the GeoIP2 web services and databases include a geonameId property. This is the ID of a geographical feature (city, region, country, etc.) in the GeoNames database. Some of the data that MaxMind provides is also sourced from GeoNames. We source things like place names, ISO codes, and other similar data from the GeoNames premium data set. Me registre en : https://www.thunderforest.com API Key 3e4117c051af42b6b792c103168ae3c9 Tile Layer URLs OpenCycleMap https://tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey=3e4117c051af42b6b792c103168ae3c9 Transport https://tile.thunderforest.com/transport/{z}/{x}/{y}.png?apikey=3e4117c051af42b6b792c103168ae3c9 Landscape https://tile.thunderforest.com/landscape/{z}/{x}/{y}.png?apikey=3e4117c051af42b6b792c103168ae3c9 Outdoors https://tile.thunderforest.com/outdoors/{z}/{x}/{y}.png?apikey=3e4117c051af42b6b792c103168ae3c9 Transport Dark https://tile.thunderforest.com/transport-dark/{z}/{x}/{y}.png?apikey=3e4117c051af42b6b792c103168ae3c9 Spinal Map https://tile.thunderforest.com/spinal-map/{z}/{x}/{y}.png?apikey=3e4117c051af42b6b792c103168ae3c9 Pioneer https://tile.thunderforest.com/pioneer/{z}/{x}/{y}.png?apikey=3e4117c051af42b6b792c103168ae3c9 Mobile Atlas https://tile.thunderforest.com/mobile-atlas/{z}/{x}/{y}.png?apikey=3e4117c051af42b6b792c103168ae3c9 Neighbourhood https://tile.thunderforest.com/neighbourhood/{z}/{x}/{y}.png?apikey=3e4117c051af42b6b792c103168ae3c9 En leaflet/dist/Control.Geocoder.js ingrese el api_key de thunderforest, pero ahi pide también otro código que no lo ingrese: app_id: '3e4117c051af42b6b792c103168ae3c9', app_code: '',