수정 된 버전의 리플릿을 사용하여 FullCanvas Plugin 리플렉션을 사용하여지도에 선을 그립니다. 이 라인은 Firefox와 Chrome에서 완벽하게 작동하지만 Internet Explorer (버전 11, Windows 8.1 사용)에서는지도를 이동/확대/축소 할 때이 라인이 재설정되지 않습니다.캔버스 요소 + Internet Explorer가 아닌 Chrome 및 Firefox에서 작동하는 Javascript
드래그 앤 크롬이나 파이어 폭스, 다음 Internet Explorer (11)에 잠시 확대 시도 : 나는 문제를 설명하기 위해 바이올린을했다. 이 코드에서 무슨 일이 벌어지고 있습니까? 선이 다시 그려야 할 때마다 호출되는 방법은 drawCanvas()입니다 :
drawCanvas: function() {
var canvas = this.getCanvas();
var ctx = canvas.getContext('2d');
var me = this;
ctx.clearRect(0, 0, canvas.width, canvas.height);
var bounds = this._myMap.getBounds();
if (!this.options.filterPointsInBounds) bounds = new L.LatLngBounds([-90, -180], [90, 180]);
var points = this._myQuad.retrieveInBounds(this.boundsToQuery(bounds));
points.forEach(function (point) {
var d = point.data;
if (d.draw && !d.draw(d)) return; // allows dynamic filtering of curves
var spoint = me._myMap.latLngToContainerPoint(new L.LatLng(d.slat, d.slon));
if (d.tlat && d.tlon) {
var tpoint = me._myMap.latLngToContainerPoint(new L.LatLng(d.tlat, d.tlon));
me.drawCurve(point, spoint, tpoint, d.style ? d.style(d) : null);
}
});
},
사람이 여기에 무슨 일이 일어나고 있는지 어떤 생각을 가지고 있습니까? 픽스가 좋을 지 모르겠지만 아무도 지적 할 수 없다면 나는 이미 행복하다. 왜 이런 일이 일어나고 있는지 스스로 고칠 수있다.
자세한 설명 주셔서 감사합니다! 나는 이미 집에 가고 있지만, 불쾌한 이벤트 청취자를 내일 jQuery로 대체하려고 노력할 것이다. – ohyeah
먼저 다른 것을 시도해 보았습니다. drawCanvas 함수에 간단한 console.log를 추가했습니다. http://jsfiddle.net/tee99z65/2/ 지도를 드래그하여지도를 확대/축소하면 콘솔에 메시지가 기록됩니다. 이것은 IE11에서도 작동하므로 마우스 이벤트가 인식되고 함수가 호출됩니다. 또는 귀하의 설명을 문제의 원인으로 오해하고 있습니까? – ohyeah
어제의 더 좋은 부분을 차지한 버그가 오늘 한 시간도 안 채 안되어 해결되었습니다. 내 인생을 만끽하십시오. 내 솔루션을 참조하십시오. 어쨌든 도움을 주셔서 감사합니다! – ohyeah