HTML5-Canvas-Größe ändern Bild Klicken um zu Vergrößern
Ich habe ein Bild einer Karte in eine Leinwand, ich möchte handeln, wie die google-Maps-interface mit HTML5 und jQuery. Ich möchte die folgenden Aktionen ausführen:
• Double click on pan in without changing the size of the containing div
• Click on a building to bring up a pop up of information on that building
• Click and drag to pan
Den code habe ich jetzt das Bild im canvas-Bereich. Ich fand einige codes, die zeigen, dass "Zoomen" auf das Bild, sondern entweder die Größe der div-container, oder nicht glatt und reaktionsschnell Weg, es zu tun, nur es springt auf eine größere Größe und ich möchte das Zoomen animiert werden soll.
Gibt es einige Gebäude, die sind "angepinnt" auf der Karte, die der Benutzer anklicken kann, um Informationen über das Gebäude.
Der code ist wie folgt:
JS:
$( document ).ready( function() {
var canvas = document.getElementById( 'canvas' );
var context = null;
var map = null;
if( canvas.getContext )
{
context = canvas.getContext( '2d' );
$( '#map' ).load( function( evt ) {
context.drawImage( evt.currentTarget, 10, 10 );
} );
map = new Image();
map.onload = function() {
context.drawImage( this, 20, 20 );
};
map.src = 'images/asu_poly_map.png';
} else {
alert( 'Your browser does not support canvas.' );
}
} );
HTML:
<div id="map">
<canvas id="canvas" width="1055" height="600"></canvas>
</div>
CSS:
#map {
margin:0 auto;
margin-top : 180px;
width : 1200px;
}
BEARBEITET, UM HINZUFÜGEN:
Ich gehe davon aus, es wäre so etwas ähnlich wie diese, aber kann nicht herausfinden, wie Sie für ein image vom server gezogen und auf die Leinwand.
Zoom in auf einen Punkt (mit scale und translate)
InformationsquelleAutor Jen | 2013-04-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Boom! Ich kombinierte eine Reihe von StackOverflow verweisen, in etwas, das für Sie arbeitet: http://jsfiddle.net/CMse5/1/
Hier ist der code:
HTML:
CSS:
JS:
Auch, Sie erwähnen, animieren das Zoomen in eine glatte Art und Weise. Um dies zu tun, müssen Sie erleichtern das Zoomen in jedem frame. Also, in deiner draw Funktion, die jeden frame, den Sie wollen, um Leichtigkeit, zwischen einem original-Skala mit der neuen. Sie wollen auf jeden Fall ändern, requestAnimationFrame, so dass Sie eine bessere framerate.
Es möglicherweise einfacher, verwenden Sie eine Leinwand/DOM-hybrid, und die Nutzung der CSS3-Transformationen und-Animationen auf ein Bild, das kümmert sich um alle die Entspannung für Sie. Sie könnte overlay notwendige canvas Dinge, wenn nötig.
jsfiddle.net/CMse5/4 -- mit requestAnimationFrame Schleife, sehr glatte Zeichnung mit der kontinuierlichen mousewheels, wie das Apple trackpad.
Ich legte mein Bild in es und ich bekomme es nicht, etwas zu tun.
jsfiddle.net/CMse5/4 Hier ist der link. Ich bin mir nicht sicher ob es eine Einstellung die ich ändern muß oder so? Wenn ich doppelt auf das Bild klicken, passiert nichts. :/
Das ist eine doppelte Verknüpfung. Haben Sie speichern Sie die Geige?
InformationsquelleAutor Dan