puntos google geograficos entre distancia coordenadas calcular javascript canvas

javascript - google - Obtener distancia entre dos puntos en el lienzo



calcular distancia entre dos puntos google maps api (5)

Tengo una pestaña de dibujo de lienzo y quiero que lineWidth se base en la distancia entre dos últimas actualizaciones de coordenadas de mousemove. Haré la traducción de la distancia al ancho yo solo, necesito saber cómo obtener distancia entre esos puntos (ya tengo las coordenadas de esos puntos).


La distancia entre dos coordenadas xey x1 y y1 es el primer punto / posición, x2 y y2 es el segundo punto / posición!

function diff (num1, num2) { if (num1 > num2) { return (num1 - num2); } else { return (num2 - num1); } }; function dist (x1, y1, x2, y2) { var deltaX = diff(x1, x2); var deltaY = diff(y1, y2); var dist = Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); return (dist); };


Puedes hacerlo con el teorema de Pitágoras

Si tiene dos puntos (x1, y1) y (x2, y2), entonces puede calcular la diferencia en xy la diferencia en y, así los llamaremos a y b.

var a = x1 - x2; var b = y1 - y2; var c = Math.sqrt( a*a + b*b ); // c is the distance


Tenga en cuenta que Math.hypot es parte del estándar ES2015. También hay un buen polyfill en el documento MDN para esta característica.

Así que obtener la distancia se vuelve tan fácil como Math.hypot(x2-x1, y2-y1) .


tiendo a usar mucho este cálculo en las cosas que hago, así que me gusta agregarlo al objeto Math:

Math.dist=function(x1,y1,x2,y2){ if(!x2) x2=0; if(!y2) y2=0; return Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); } Math.dist(0,0, 3,4); //the output will be 5 Math.dist(1,1, 4,5); //the output will be 5 Math.dist(3,4); //the output will be 5

Actualizar:

Este enfoque es especialmente feliz cuando terminas en situaciones similares a esto (a menudo lo hago):

varName.dist=Math.sqrt( ( (varName.paramX-varX)/2-cx )*( (varName.paramX-varX)/2-cx ) + ( (varName.paramY-varY)/2-cy )*( (varName.paramY-varY)/2-cy ) );

esa cosa horrible se vuelve mucho más manejable:

varName.dist=Math.dist((varName.paramX-varX)/2, (varName.paramY-varY)/2, cx, cy);