No encontré ninguna manera nativa para crear esta animación. Puede crear su propia animación haciendo un paso desde el punto actual al punto final usando setPosition. Aquí es un fragmento de código para darle una idea:
var map = undefined;
var marker = undefined;
var position = [43, -89];
function initialize() {
var latlng = new google.maps.LatLng(position[0], position[1]);
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
marker = new google.maps.Marker({
position: latlng,
map: map,
title: "Your current location!"
});
google.maps.event.addListener(map, 'click', function(me) {
var result = [me.latLng.lat(), me.latLng.lng()];
transition(result);
});
}
var numDeltas = 100;
var delay = 10; //milliseconds
var i = 0;
var deltaLat;
var deltaLng;
function transition(result){
i = 0;
deltaLat = (result[0] - position[0])/numDeltas;
deltaLng = (result[1] - position[1])/numDeltas;
moveMarker();
}
function moveMarker(){
position[0] += deltaLat;
position[1] += deltaLng;
var latlng = new google.maps.LatLng(position[0], position[1]);
marker.setPosition(latlng);
if(i!=numDeltas){
i++;
setTimeout(moveMarker, delay);
}
}
Esto probablemente se puede limpiar un poco, pero le dará un buen comienzo. Estoy usando el método setTimeout de JavaScript para crear la animación. La llamada inicial a 'transición' hace que comience la animación. El parámetro para 'transición' es una matriz de dos elementos [lat, lng]. La función 'transición' calcula los tamaños de paso para lat y lng en función de un par de parámetros de animación (numDeltas, retraso). Luego llama a 'moveMarker'. La función 'moveMarker' mantiene un contador simple para indicar cuándo el marcador ha llegado al destino final. Si no está allí, se llama de nuevo.
Aquí es una jsFiddle del trabajo código: http://jsfiddle.net/rcravens/RFHKd/13/
Espero que esto ayude.
Bob
buena solución! Modifiqué tu código para poder agregar una velocidad específica en km/h: http://jsfiddle.net/pmrotule/9tfq5sqc/8/ – pmrotule
@pmrotule Genial. Traté de modificar para mostrar etiquetas dinámicas en el marcador. Pero puede ser porque cambia constantemente el marcador, no se muestra. ¿Alguna idea de cómo puedo proceder? –
@ User-8017771 En realidad, no tendría que ver su código. Supongo que oculta la etiqueta cuando cambias la posición. Para tener el control total del aspecto de su marcador, puede usar algo como esto https://github.com/aaronmiler/beer-map/blob/master/app/assets/javascripts/custom_marker.js – pmrotule