Google지도에서 이미지를 배치하기위한 사용자 인터페이스를 개발 중입니다. 나는 다음과 같이 시작했다 : http://overlay-tiler.googlecode.com/svn/trunk/upload.html 이것은 내가 원하는 것에 거의 가깝다.Google지도에서 회전/크기 조정/변환을 사용하여 이미지 위치 지정
하지만 3 개의 접촉점 대신 회전 도구, 크기 조정 도구 및 변환 도구 (나중에 있음)가 필요합니다.
은 내가 회전 도구를 추가하려고하지만 예상대로 작동하지 않습니다 :내가 (이미지의 중심을) 회전을 제어하는 왼쪽 하단 모서리에 점을 넣어. 마우스로 컨트롤 점을 드래그하면 3 점을 계산합니다.
내 코드는 선점 개체를 기반으로하지만 난으로 onMouseMove 기능 변경 :
overlaytiler.Rotater.prototype.rotateDot_ = function(dot, theta, origin) {
dot.x = ((dot.x - origin.x) * Math.cos(theta) - (dot.y - origin.y) * Math.sin(theta)) + origin.x;
dot.y = ((dot.x - origin.x) * Math.sin(theta) + (dot.y - origin.y) * Math.cos(theta)) + origin.y;
dot.render();
};
overlaytiler.Rotater.prototype.onMouseMove_ = function(e) {
var dots = this.controlDots_;
var center = overlaytiler.Rotater.prototype.getCenter_(dots);
// Diagonal length
var r = Math.sqrt(Math.pow(this.x - center.x, 2) + Math.pow(this.y - center.y, 2));
var old = {
x: this.x,
y: this.y
};
// Real position
var newPos = {
x: this.x + e.clientX - this.cx,
y: this.y + e.clientY - this.cy
}
var newR = Math.sqrt(Math.pow(newPos.x - center.x, 2) + Math.pow(newPos.y - center.y, 2));
var theta = - Math.acos((2 * r * r - (Math.pow(newPos.x - old.x, 2) + Math.pow(newPos.y - old.y, 2)))/(2 * r * r));
// Fixed distance position
this.x = (newPos.x - center.x) * (r/newR) + center.x;
this.y = (newPos.y - center.y) * (r/newR) + center.y;
dots[1].x = center.x + (center.x - this.x);
dots[1].y = center.y + (center.y - this.y);
dots[1].render();
overlaytiler.Rotater.prototype.rotateDot_(dots[2], theta, center);
overlaytiler.Rotater.prototype.rotateDot_(dots[0], theta, center);
// Render
this.render();
this.cx = e.clientX;
this.cy = e.clientY;
};
불행하게도 정밀도와 각도 기호에 문제가있는 것입니다. 이미지가 매우 왜곡되고 회전이 한 방향으로 만지지되는 몇 회전 후
.
어떻게하면 왜곡없이 큰 정밀도를 얻을 수 있을지 궁금합니다.
내 접근 방식이 유용하지 않을 수도 있습니다. (오른쪽 좌표로 모서리를 이동하려고 시도합니다.) 캔버스로 이미지를 회전하려했지만 시도가 실패했습니다.
편집 : 전체 작업 버전 : http://jsbin.com/iQEbIzo/7/
축하! 작동하는 것처럼 보입니다. 각도와 회전 기능에 문제가 있다고 생각합니다. – luxcem
@BenR 기꺼이 도와 드릴 수 있습니다. 나는 주된 문제가 내 생각에 무엇인지 지적하기 위해 더 많은 발언과 그래픽을 추가했다. – efux
가끔 스크립트가 멈추고 이미지가 원래 위치로 돌아가고 점을 이동할 수 없습니다 ... 콘솔에 오류가 없습니다. – luxcem