Rechercher : dans
Par :

[Java] Coordonnées, zoom, échelle : intéract°

Dernière réponse le 31 jan 2008 à 12:09:12 JavaStunt, le 2 mai 2007 à 10:05:51 
 Signaler ce message aux modérateurs

Bonjour,
Je cherche une api (ou des classes) de modification d'affichage d'image en temps réel en java.

Je vais préciser :
J'ai programmé une interface graphique qui affiche des cartes.
Mon but est de rentre intéractifs certains points sur celle ci.
Pour ce faire je définis des points d'après un tableau exel contenant les coordonnées GPS des points.

Le problème c'est que les coordonnée GPS en java... ^^ c'est pas google map quoi.

Je voudrais donc trouver un moyen de :
- Définir de nouvelles coordonnées sur la carte (changer la valeur du point d'origine...).
- Définir une nouvelle échelle...


2 ° problème :

Intéragir sur la carte en effectuant des zooms !
Pour rendre plus précis l'affichage des points qui sont rapprochés.
En quelque sorte cliquer sur un "+" qui "zoome".
D'ou le changement d'échelle aussi.


Donc si vous connaissez des packages, classes seules, apis qui pouraient m'aider à avancer je vous en serais très reconnaissant :).

Merci d'avance.

Configuration: Windows XP
Firefox 1.5.0.11

Meilleures réponses pour « [Java] Coordonnées, zoom, échelle : intéract° » dans :
[Firefox] plugin Java Jre de Sun VoirA) Les différentes variantes Java chez Sun B) Installation sous Mandriva Limited Edition 2005 ETAPE 1 ETAPE 2: Création du lien symbolique C) Installation sous debian lenny D) Installation sous ubuntu hardy heron A) Les différentes...
Installer Java sous Ubuntu VoirPar défaut, Firefox n'est pas fourni avec Java. Voici comment procéder pour l'installer: Ouvrez un terminal (Menu Applications > Accessoires > Terminal) et tapez: sudo aptitude install sun-java6-jre sun-java6-plugin ou sudo aptitude install ...
[Logiciel libre] Installation firefox 2.0+java+flash VoirInstallation firefox 2.0+java+flash en ligne de commande A. INTRODUCTION B. INSTALLATION FIREFOX 1. Création d'environnement 2. Téléchargement et vérification de la signature 3. Installation de Firefox 4. Démarrage de l'application C....
Télécharger Java Runtime Environment VoirJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
J2EE - Java 2 Enterprise Edition VoirIntroduction au Java Framework Le «Java Framework» (Java 2 Platform) est composé de trois éditions, destinées à des usages différents : J2ME : Java 2 Micro Edition est prévu pour le développement d'applications embarquées, notamment sur des...

1

JavaStunt, le 2 mai 2007 à 11:52:03
  • +1

Je souhaiterais aussi ajouter une barre défilante lors du zoom, afin de se déplacer sur la carte.

Répondre à JavaStunt

2

kij_82, le 2 mai 2007 à 12:23:42

Pour ce qui est des classes de modifs... aucune idée.
Pour ce qui est de la barre de défilement, donc une scrollbar, il te suffit de mettre ton image dans un JScrollPane et de fixer la taille de ce JScrollPane.
Ainsi, quand tu zoom, ton image grandie (plutot que de faire toujours la même taille).
De la même facon (cela peut etre une idée), sur ta carte, tu peux mettre en place une hiérarchie des éléments de manière a n'afficher que certains lorsque le zomm atteind un certains seuil, un peu comme tous les systemes de map actuels.

Par exemple, les villes seraient au niveau 3, les villages au niveau 4, etc...

Enfin c'est une piste que je propose, je ne suis pas spécialiste en la matière malheureusement pour toi ^^

Bon courage pour la suite en tout cas !
~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

3

JavaStunt, le 2 mai 2007 à 14:38:38

En te remerciant, ca va déja bien m'aider :).


Par contre pour le zoom ce serais plus un zoom en "temps direct" . Le zoom ici ne permettra pas d'entrer dans les détails mais de voir plus précisément un point par rapport à un autre. (certains lieu géographiques se superposent presque en zoom 100% mais sont différents a 150% ...).


Merci beaucoup kij



PS : 82 powa :)

Répondre à JavaStunt

4

JavaStunt, le 3 mai 2007 à 09:55:02

Voila du nouveau,

Pour les coordonnées je vais faire du "bricolage".
Faire une addition avec l'origine existante et celle que je veu.
Et donc pour la nouvelle échelle trouver un coefficiant multipliant celles données pour trouver celles souhaitées.


Mais il me reste encore le problème de zoom.

Si un de vos a des idées?

En vous remerciant.

Répondre à JavaStunt

5

kij_82, le 3 mai 2007 à 16:31:06

Re :)

Pour l'histoire du zoom, je ne suis pas sur que tu puisse vraiment zoomer correctement de cette facon.
Si c'est un genre de google map que tu veux faire, je pense que le systeme mis en place est plus basés sur des niveaux hiérarchiques d'informations plutot que sur un zoom plus précis d'une seule et même image.

Enfin, si c'est ce que tu souhaite faire, tu peux toujours regarder ce tutos sur les opération sur images :
http://java.developpez.com/faq/gui/?page=graphique_general_i­mages

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

6

HackTrack, le 3 mai 2007 à 16:55:22
  • +2

Salut!

Voici une piste (à affiner) pour le zoom:


import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * Created on 03-mai-07
 * 
 * @author:HackTrack
 */

public class ZoomPanel extends JPanel implements MouseWheelListener {
	private BufferedImage sourceImage;

	private int sourceImageWidth;

	private int sourceImageHeight;

	private Image scaledImage;
	private double zoom = 1d;

	public ZoomPanel() {
		super();
		initializePanel();
	}

	private void initializePanel() {
		setPreferredSize(new Dimension(640, 480));
		try {
			sourceImage = ImageIO.read(new File("F:/testBG.jpg"));
			sourceImageWidth = sourceImage.getWidth();
			sourceImageHeight=sourceImage.getHeight();
			addMouseWheelListener(this);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void paint(Graphics g){
		
		int width = (int)(sourceImageWidth*zoom);
		int height = (int)(sourceImageHeight*zoom);
		Image img = sourceImage.getScaledInstance(width, height, Image.SCALE_SMOOTH);
		g.drawImage(img,0,0,null);
	}

	public void mouseWheelMoved(MouseWheelEvent e) {
		int wheelRotation =e.getWheelRotation(); 
		if(zoom>1){
			zoom+=wheelRotation;
		}else if(zoom==1){
			zoom=(wheelRotation==1?zoom+wheelRotation:0.5);
		}else if(zoom<1){
			zoom/=(wheelRotation*2);
		}
		repaint();
	}

	public static void main(String[] args) {
		JFrame demo = new JFrame();
		demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		demo.add(new ZoomPanel());
		demo.pack();
		demo.setVisible(true);
	}

}



;-)
HackTrack

Répondre à HackTrack

7

 Djoh, le 31 jan 2008 à 12:09:12
  • +2

Il est pas mal cet exemple !

Par contre, il faudrait s'occuper des coordonnées de l'image après le zoom, pour zoomer sur la partie centrale de l'image.

Répondre à Djoh
Collection CommentÇaMarche.net