tengo el siguiente codigo que toma la ubicacion del usuario de una api de google, el detalle que tengo es que la precision es demasiado alta, por ejemplo precision: 2600.670416166183, no se si alguien sepa como solucionar este error seria muy útil
const useGeoLocation = () => { const [location, setLocation] = useState({ loaded: true, coordinates: { lat: "", lng: "", }, aceptacion: null, }); const onSuccess = (location) => { console.log(location); setLocation({ loaded: true, coordinates: { lat: resultado.location.lat, lng: resultado.location.lng, }, aceptacion:1 }); }; useEffect(() => { const url = `https://www.googleapis.com/geolocation/v1/geolocate?key=......`; const http = new XMLHttpRequest(); http.open("POST", url); http.onreadystatechange = function(){ if(this.readyState == 4 && this.status == 200){ let resultado = JSON.parse(this.responseText); let latitude = resultado.location.lat; let longitude = resultado.location.lng; setLocation({ loaded: true, coordinates: { lat: resultado.location.lat, lng: resultado.location.lng, }, aceptacion:1 }); console.log(resultado); return resultado } } http.send(); }, []); return location; }; export default useGeoLocation;
Creo que está utilizando la API incorrecta para sus necesidades.
La API de geolocalización de Google se utiliza para obtener la ubicación de las informaciones de Wifi/Bluetooth/Cell Tower/IP. En su ejemplo, no incluye ninguna información adicional en el cuerpo de su solicitud, por lo que Google solo proporcionará la geolocalización en función de la IP del usuario, que no tiene una buena precisión.
Si desea una mayor precisión con esta API, debe proporcionar puntos Wifi o Bluetooth cerca del usuario (consulte la documentación aquí ), pero no creo que eso sea lo que desea, así que creo que la mejor solución es usar navigator.geolocation.getCurrentPosition
función nativa de todos los navegadores, obtendrá la ubicación directamente desde el dispositivo (GPS/Wifi/Bluetooth) como allí:
https://developers.google.com/maps/documentation/geolocalización/overview
Puede encontrar ejemplos aquí: