Archivos de Categoría: Javascript - Paginas 3

Centrar gmap segun marcadores

Si queremos centrar un mapa de gmaps dependiendo de unos marcadores que tengamos puestos, deberemos primero calcular el centro de los marcadores:

mapa.fitBounds(markerBounds);
centrar = JSON.parse(JSON.stringify(markerBounds.getCenter()));

y para centrar el mapa ya creado sobre la nueva posición:

var myCenter = new google.maps.LatLng(centrar.lat, centrar.lng);
mapa.setCenter(myCenter);

Pero si tenemos solo un marcador o pocos marcadores muy juntos puede que tengamos un zoom demasiado cercano y queramos poner un zoom máximo para el mapa:

var listener = google.maps.event.addListener(mapaObj.mapa, "idle", function() {
  if (mapa.getZoom() > 15) mapa.setZoom(15);
  google.maps.event.removeListener(listener);
});

Aquí podeis ver el código fuente

Poner target blank a enlaces externos

Si queremos que todos los enlaces externos de nuestra web se abran en una ventana nueva, podemos usar javascript a pelo sin necesidad de jquery

window.onload = function() {
   var links = document.getElementsByTagName('a');
   for (var i = links.length-1; i >= 0 ; i--) {
       if(links[i].host !== window.location.host) links[i].setAttribute('target', '_blank');
    }
}

Funciones cortar cadena y formatear url

Hoy ando liado con un buscador que recupera vía Ajax un JSON con los resultados y los muestra en un desplegable. Dos de las necesidades han sido tener una funciona que convierta una cadena de texto en formato url (quitar símbolos raros, espacios, etc) y la otra ha sido recortar cadenas de texto a una longitud determinada pero sin cortar palabras, así que en vez de usar funciones me ha dado por prototipar dos funciones para los strings de JavaScript.

String.prototype.url = String.prototype.url || function() {
  var from = "ÃÀÁÄÂÈÉËÊÌÍÏÎÒÓÖÔÙÚÜÛãàáäâèéëêìíïîòóöôùúüûÑñÇç ",
      to   = "AAAAAEEEEIIIIOOOOUUUUaaaaaeeeeiiiioooouuuunncc-",
      mapping = {};
  for(var i = 0, j = from.length; i < j; i++ ) mapping[ from.charAt( i ) ] = to.charAt( i );
  var result = [];
  for(var i = 0, j = this.length; i < j; i++ ){
    if( mapping.hasOwnProperty(this[i])) result.push(mapping[this[i]]);
    else result.push(this[i]);
  }
  return result.join('').replace(/[^A-Za-z0-9-]/g,'');
}

String.prototype.cut = String.prototype.cut || function(maxlength) {
    var result = [];
    for(var i = 0, j = this.length; i < j; i++ ) result.push(this[i]);
    if(maxlength >= this.length) return result.join('');
    else if(result[maxlength] == ' ') return result.slice(0, maxlength).join('');
    else{
      for(var i = maxlength, j = 0; i > j; i-- ){
          if(result[i] == ' ') return  result.slice(0, i).join('');
      }
    }
}

// y la forma de usarlas serían:
alert('Esta es la cadena a formatear áéíóú%&/()ñÇ'.url());
alert('Esta es la cadena a cortar'.cut(11));