0 || (jQuery('select[name="sort_by"]', $form).val() == 'nearest' || jQuery('select[name="sort_by"]', $form).val() == 'farthest')) && (jQuery(".snear", $form).val() == '' || jQuery(".snear", $form).val() == 'Cerca de')) jQuery(".snear", $form).val(default_location); geocodeAddress($form); } function updateSearchPosition(latLng, $form) { if (window.gdMaps === 'google') { jQuery('.sgeo_lat').val(latLng.lat()); jQuery('.sgeo_lon').val(latLng.lng()); } else if (window.gdMaps === 'osm') { jQuery('.sgeo_lat').val(latLng.lat); jQuery('.sgeo_lon').val(latLng.lon); } jQuery($form).trigger("submit"); } function geocodeAddress($form) { Sgeocoder = window.gdMaps == 'google' ? new google.maps.Geocoder() : null; if (jQuery('.snear', $form).val() == '' || ( jQuery('.sgeo_lat').val() != '' && jQuery('.sgeo_lon').val() != '' ) || (jQuery('.snear', $form).val() && jQuery('.snear', $form).val().match("^En:"))) { if (jQuery('.snear', $form).val() && jQuery('.snear', $form).val().match("^En:")) { jQuery(".snear", $form).val(''); } jQuery($form).trigger("submit"); } else { var address = jQuery(".snear", $form).val(); if (address && address.trim() == 'Cerca de') { initialise2(); } else if(address && address.trim() == 'Cerca de: Mi Ubicación') { jQuery($form).trigger("submit"); } else { var search_address = address; if (window.gdMaps === 'google') { var geocodeQueryParams = {'address': search_address}; if (geodirIsZipCode(address)) { if (typeof geocodeQueryParams['componentRestrictions'] != 'undefined') { if (typeof geocodeQueryParams['componentRestrictions']['postalCode'] == 'undefined') { geocodeQueryParams['componentRestrictions']['postalCode'] = address; } } else { geocodeQueryParams['componentRestrictions'] = {'postalCode': address}; } } Sgeocoder.geocode(geocodeQueryParams, function (results, status) { if (status == google.maps.GeocoderStatus.OK) { updateSearchPosition(results[0].geometry.location, $form); } else { alert("La búsqueda concluyo sin éxito por la siguiente razón :" + status); } }); } else if (window.gdMaps === 'osm') { var osmCountryCodes = false; geocodePositionOSM(false, search_address, osmCountryCodes, false, function(geo) { if (typeof geo !== 'undefined' && geo.lat && geo.lon) { updateSearchPosition(geo, $form); } else { alert("La búsqueda no tuvo éxito para la dirección solicitada."); } }); } else { jQuery($form).trigger("submit"); } } } } function geodirIsZipCode(string) { if (/^\d+$/.test(string)) { if (string.length > 3 && string.length < 7) { return true; } } return false; } function initialise2() { if (!window.gdMaps) { return; } if (window.gdMaps === 'google') { var latlng = new google.maps.LatLng(56.494343, -4.205446); var myOptions = { zoom: 4, mapTypeId: google.maps.MapTypeId.TERRAIN, disableDefaultUI: true } } else if (window.gdMaps === 'osm') { var latlng = new L.LatLng(56.494343, -4.205446); var myOptions = { zoom: 4, mapTypeId: 'TERRAIN', disableDefaultUI: true } } try { prepareGeolocation(); } catch (e) {} doGeolocation(); } function doGeolocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(positionSuccess, positionError); } else { positionError(-1); } } function positionError(err) { var msg; switch (err.code) { case err.UNKNOWN_ERROR: msg = "No ha sido posible encontrar tu ubicación"; break; case err.PERMISSION_DENINED: msg = "Permiso denegado para detectar tu ubicación"; break; case err.POSITION_UNAVAILABLE: msg = "Actualmente desconocemos tu ubicación"; break; case err.BREAK: msg = "El intento de encontrar la ubicación tardó demasiado tiempo"; break; default: msg = "El navegador no tiene activada la detección de la ubicación"; } jQuery('#info').html(msg); } function positionSuccess(position) { var coords = position.coords || position.coordinate || position; jQuery('.sgeo_lat').val(coords.latitude); jQuery('.sgeo_lon').val(coords.longitude); jQuery('.geodir-listing-search').trigger("submit"); } jQuery(window).on("beforeunload", function(e) { if(jQuery('.sgeo_lat').length ){ jQuery('.sgeo_lat').val(''); jQuery('.sgeo_lon').val(''); } });