Bonjour à tous,
Je bloque sur un problème en javascript :
en effet je dois pouvoir créer un cercle de diamètre x (x étant un rayon en km prédéfini) et pouvoir diminuer ou agrandir le rayon de ce cercle avec la souris en maintenant le clic sur le bord du cercle et en tirant ou poussant (un peu à la manière d'un drag & resize...). Le cercle doit aussi diminuer ou s'agrandir en même temps que la souris... (pas que le cercle diminue d'un coup lorsqu'on lâche le clic...).
J'ai déjà un code le faisant mais en utilisant une image avec ce code :
<script type="text/javascript">
/* ... Coordonnées à accorder avec l'API Google Maps lors de l'intégration ... */
var ox=false, oy=false, centrex=700, centrey=450;
function agrandit()
{
ox=document.getElementById('carte').offsetLeft;
oy=document.getElementById('carte').offsetTop;
}
/* ... Tâche exécutée lors du relachement du bouton de la souris ... */
window.onmouseup = function ()
{
ox=false;
};
/* ... Tâche exécutée lorsque l'on bouge la souris ... */
/* ... Récupération des coordonnées du curseur de la souris ... */
/* ... Actions d'agrandissement ou de rétrécissement sur l'image ... */
window.onmousemove = function (e)
{
e = e || window.event;
var x = e.clientX, y = e.clientY;
/* ... Attention ox !== false est différent de ox ou != ox ... */
if(ox!==false)
{
var rayon=Math.round(Math.sqrt(Math.pow(x-ox-centrex,2)+Math.pow(y-oy-centrey,2)));
document.getElementById('disque').width=2*rayon;
document.getElementById('disque').style.left=(centrex-rayon)+'px';
document.getElementById('disque').style.top=(centrey-rayon)+'px';
}
};
</script>
Malheureusement ça ne répond pas exactement à ce que je souhaite, il faut vraiment que le cercle (voire le disque) se dessine et que je puisse modifier son rayon grâce à la souris.
J'ai vu le code de jhenaff pour drag & resize de div, ici :
http://www.javascriptfr.com/codes/DRAG-AND-DROP-REDIMENSIONNEMENT_39451.aspx, j'aimerai bien un truc dans le genre mais pour un cercle et non des div...
Enfin le cercle doit stocker son rayon dans une variable car après ce cercle servira pour une intégration de géolocalisation avec l'API google maps...
J'ai fait pas mal de recherches et de tests par moi-même mais en vain vu mon niveau en JS...
Merci d'avance si vous pouviez me redépanner...