Estoy usando Laravel/livewire. Quiero obtener la latitud y la longitud del mapa de Google y mostrar el valor en las entradas:
<input id="latBranch" wire:model="lat" val=""> <input id="longBranch" wire:model="long" val="">Usando los siguientes códigos de Google y funciona bien cuando se carga la página:
... infoWindow.setPosition(pos); document.getElementById("latBranch").value = position.coords.latitude; document.getElementById("longBranch").value = position.coords.longitude; ... google.maps.event.addListener(marker, 'dragend', function (event) { document.getElementById("latBranch").value = event.latLng.lat(); document.getElementById("longBranch").value = event.latLng.lng(); infoWindow.open(map, marker); }); ...Pero el problema es que cuando selecciono una opción desde abajo, las entradas de longitud y latitud se vacían:
<select required wire:model="branchCountry"> @foreach ($countries as $row) <option value="{{$row->id}}">{{ $row->countryname }}</option> @endforeach </select> La opción de selección anterior obtiene el Id del país y lo pasa al controlador Livewire para cargar las provincias de la siguiente manera:
public function updatedbranchCountry() { if($this->branchCountry != '') { $this->provinces = Province::orderby('provincename', 'asc')->where('country_id', $this->branchCountry)->get(); } }Mi pregunta es cómo puedo mantener la longitud y la latitud en las entradas cuando selecciono o cambio la opción del elemento seleccionado.
Para resolver este problema, agregué la longitud y la latitud en una emisión de cable en vivo como se muestra a continuación:
Livewire.emit('getLatitudeForInput', event.latLng.lat()); Livewire.emit('getLongitudeForInput', event.latLng.lng());y luego en el controlador Livewire usé el oyente para obtener el valor de la siguiente manera:
protected $listeners = ['getLatitudeForInput','getLongitudeForInput']; public function getLatitudeForInput($value) { if(!is_null($value)) $this->lat = $value; } public function getLongitudeForInput($value) { if(!is_null($value)) $this->long = $value; }Luego usé esos valores.