Agregar marcador especifico a una localización Google Maps – javascript google-maps

Pregunta:


¿Cómo podría añadir un marcador personalizado en Google maps?

Actualmente el código que tengo es el siguiente:

var locations = [
  ['Bondi Beach', -33.890542, 151.274856, 4],
  ['Coogee Beach', -33.923036, 151.259052, 5],
  ['Cronulla Beach', -34.028249, 151.157507, 3],
  ['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
  ['Maroubra Beach', -33.950198, 151.259302, 1]
];

var map = new google.maps.Map(document.getElementById('map'), {
  zoom: 10,
  center: new google.maps.LatLng(-33.92, 151.25),
  mapTypeId: google.maps.MapTypeId.ROADMAP
});

var infowindow = new google.maps.InfoWindow();

var marker, i;

for (i = 0; i < locations.length; i++) {  
  marker = new google.maps.Marker({
    position: new google.maps.LatLng(locations[i][1], locations[i][2]),
    map: map
  });

  google.maps.event.addListener(marker, 'click', (function(marker, i) {
    return function() {
      infowindow.setContent(locations[i][0]);
      infowindow.open(map, marker);
    }
  })(marker, i));
}

Quisiera saber cómo añadirle a cada “location” un icono diferente en vez del tradicional de Google maps.

Preguntado por: CoreXL

Alvaro Montoro

Lo que puedes hacer es añadir la imagen personalizada para cada lugar al array con información de localizaciones:

var locations = [
  ['Bondi Beach', -33.890542, 151.274856, 4, "http://i.imgur.com/GyqbZzs.gif"],
  ['Coogee Beach', -33.923036, 151.259052, 5, "http://i.imgur.com/LTCOHYH.gif"],
  ['Cronulla Beach', -34.028249, 151.157507, 3, "http://i.imgur.com/4CCFNWR.gif"],
  ['Manly Beach', -33.80010128657071, 151.28747820854187, 2, "http://i.imgur.com/dRIZ8LN.gif"],
  ['Maroubra Beach', -33.950198, 151.259302, 1, "http://i.imgur.com/WjZlFve.gif"]
];

Y luego cuando creas el marcado, especificas la imagen con el parámetro icon (en este caso sería el quinto elemento del array, así que usarías locations[i][4]):

  marker = new google.maps.Marker({
    position: new google.maps.LatLng(locations[i][1], locations[i][2]),
    map: map,
    icon: locations[i][4]
  });

Así cada localización tendrá su icono personalizado. El código completo se vería así:

var locations = [
  ['Bondi Beach', -33.890542, 151.274856, 4, "http://i.imgur.com/GyqbZzs.gif"],
  ['Coogee Beach', -33.923036, 151.259052, 5, "http://i.imgur.com/LTCOHYH.gif"],
  ['Cronulla Beach', -34.028249, 151.157507, 3, "http://i.imgur.com/4CCFNWR.gif"],
  ['Manly Beach', -33.80010128657071, 151.28747820854187, 2, "http://i.imgur.com/dRIZ8LN.gif"],
  ['Maroubra Beach', -33.950198, 151.259302, 1, "http://i.imgur.com/WjZlFve.gif"]
];

var map = new google.maps.Map(document.getElementById('map'), {
  zoom: 10,
  center: new google.maps.LatLng(-33.92, 151.25),
  mapTypeId: google.maps.MapTypeId.ROADMAP
});

var infowindow = new google.maps.InfoWindow();

var marker, i;

for (i = 0; i < locations.length; i++) {  
  marker = new google.maps.Marker({
    position: new google.maps.LatLng(locations[i][1], locations[i][2]),
    map: map,
    icon: locations[i][4]
  });

  google.maps.event.addListener(marker, 'click', (function(marker, i) {
    return function() {
      infowindow.setContent(locations[i][0]);
      infowindow.open(map, marker);
    }
  })(marker, i));
}

Siguiendo la documentación que toledano te ha comentado es sencillo:

Definimos un marcador por cada localización:

var locations = [
  ['Bondi Beach', -33.890542, 151.274856, 4, 'ruta/a/tu/imagen1.png'],
  ['Coogee Beach', -33.923036, 151.259052, 5, 'ruta/a/tu/imagen2.png'],
  ['Cronulla Beach', -34.028249, 151.157507, 3, 'ruta/a/tu/imagen3.png'],
  ['Manly Beach', -33.80010128657071, 151.28747820854187, 2, 'ruta/a/tu/imagen4.png'],
  ['Maroubra Beach', -33.950198, 151.259302, 1, 'ruta/a/tu/imagen5.png']
];

En tu definición del marker haces:

var marker = new google.maps.Marker({
    position: new google.maps.LatLng(locations[i][1], locations[i][2]),
    map: map,
    icon: locations[i][4]
});

Fuente

Related Posts:

¿Cómo obtener la respuesta de una llamada asíncrona (AJAX) fuera de ella? – javascript jquery asincrónico
Pregunta: Actualmente tengo esta función: function devuelveButaca(posicion){ var array = posicion.split('_'); var row = array; var column ...
Evitar múltiples toggle con misma clase – javascript
Pregunta: Para un evento toggle con puro javascript lo desarrollo de la siguiente forma: Javascript // Esta clase lo expande. const expandButton = document.querySelector('.expand-button'); expandButton.addEventListener('click', ()=> { ...
Validación de datos nulos en una función – javascript
Pregunta: Tengo la siguiente función pero al momento validar todos mis datos me los registra todos a excepción del los "containers" que son grids y ...
Como poner una imagen de fondo a pantalla completa – javascript jquery html5
Pregunta: Como puedo hacer que la imagen abarque todo el tamaño de la pantalla. Se que de las propiedad min-width y min-heigth pero ellas no ...
Error de: Uncaught TypeError: url.indexOf is not a function por Jquery – javascript jquery
Pregunta: En el navegador, reviso en inspeccionar elemento, y me sale el siguiente error: Uncaught TypeError: url.indexOf is not a function Me imagino que es ...
Como validar array checkbox – javascript php jquery
Pregunta: Que tal buen dia, alguien me podria decir como se puede hacer para que cuando presione el boton "BAJAR DATOS" si este esta vacio ...
Uso de js y c# en unity. ¿Igual rendimiento? – javascript c# unity3d
Pregunta: Estoy comenzando con unity . Y veo que se pueden usar c# y js para programar. Mi pregunta es si tanto c# como js ...
Como cambiar una propiedad html dependiendo del valor de un perfil recogido de clase java – javascript jquery html
Pregunta: Tengo una caja de texto en la que me gustaría poder escribir o no dependiendo del perfil que utilice la aplicación. Esta caja de ...
Usar variable en otra función con javascript – javascript html app
Pregunta: Primero que todo voy a dejar un enlace donde pueden ver el ejemplo funcionando de manera completa. Enlace a la pagina AQUI El valor elegido en ...
Ocultar y Mostrar con Mapa de Google – javascript c# asp.net
Pregunta: Tengo un div en mi página ASP.NET que contiene un Mapa de Google, y necesito mostrarlo y ocultarlo pero no me funciona. Este es el ...
Copiar valor a un input que esta dentro de un footer de un datatable – javascript jquery datatables
Pregunta: Estoy usando los DataTables de jQuery y me estoy encontrando con el siguiente problema: cuando pulso en un botón necesito pasarle un valor con ...
¿Cómo rellenar cada circulo al pasar el mouse encima? – javascript jquery html
Pregunta: ¡Hola! Estoy practicando jQuery, y me gustaría poder hacer como un ranking. A lo que quiero llegar es que cada vez que el mouse ...
convertir array a Map en javascript – javascript map nodejs
Pregunta: quiero convertir un arreglo a Map(), en este console "console.log(arrayParaMap);" sale undefined el ejemplo que uso es este //example {a:1,a:2,a:1,b:1,b:5,b:6} el map que prentendo obtener es ...
como iterar un objeto en nodejs – javascript nodejs
Pregunta: Hice esta función: const obj = ; const objMapped = obj.reduce((acc, item) => { ...
¿Cómo mostrar cualquier contenido HTML con ng-bind-html y $sce? – javascript angularjs json
Pregunta: El contenido HTML de mi página está compuesto por archivos JSON, todas las etiquetas se muestran correctamente, como las <h1>, <p>, <img>, etc... Pero ...

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *