En este momento, tengo un detector de eventos para que un usuario pueda escribir su ubicación y pueda obtener sus coordenadas. Mi función se ve así para el selector:
searchBox.addListener('places_changed', () => { const place = searchBox.getPlaces()[0] if (place == null) return const latitude = place.geometry.location.lat() const longitude = place.geometry.location.lng() /* MY WEATHER FETCH FUNCTION HERE */ }).then(res => res.json()).then(data => { setWeatherData(data, place.formatted_address) }) })Luego, los datos meteorológicos se transmiten, junto con la dirección formateada de Google Maps. Pero se establece un div con la ubicación actual del usuario que escribieron.
function setWeatherData(data,place){ locationElement.textContent = place statusElement.textContent = titleCase(data.weather[0].description) } Lo que realmente importa en este código es el locationElement.textContent = place part . Establece el elemento de ubicación en el "lugar" de la dirección que escribieron usando formatted_address.
Pero quiero poder tomar su ubicación actual usando navigator.geolocation.getCurrentPosition() , si otorgan el permiso de ubicación. Si lo conceden, establecerá el elemento de ubicación en la ubicación que tomó utilizando la longitud y la longitud que recibió de la API de JavaScript de geolocalización.
Idealmente, me gustaría ejecutar una función que:
Si el usuario otorga permisos de ubicación, complete automáticamente el cuadro de búsqueda con sus coordenadas y eso activará el detector de eventos.
Ahora mismo estoy usando
navigator.geolocation.getCurrentPosition(grabLocation, onError, options);La función grabLocation actualmente se parece a
function grabLocation(pos) { var crd = pos.coords; /* My WEATHER FETCH FUNCTION HERE */ }).then(res => res.json()).then(data => { setWeatherData(data,place) }) }Pero, desafortunadamente, no estoy seguro de cómo transmitir "lugar" con searchBox.getPlaces()[0] como lo estaba haciendo en el detector de eventos, ya que la API de javascript de geolocalización solo puede obtener cables.
¿Cómo puedo conseguir esto?