IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Plateformes réactives et architectures modulaires Java Discussion :

Affichage d'une map avec bundle


Sujet :

Plateformes réactives et architectures modulaires Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Points : 47
    Points
    47
    Par défaut Affichage d'une map avec bundle
    Bonjour,

    Je suis en train de faire une petite application de test dont le but est d'afficher une map.

    Cette application doit fonctionner avec OSGi (avec la notion de bundle) et le but final est lors de exécution de l'application la map doit être affichée.

    Je pense que je dois faire appel à la page web de map dans le code de la méthode start de la classe Activator.
    Et je pense que dans le manifest du bundle, il faut rajouter un import nécessaire à l'affichage de map.

    Je travaille avec Eclipse Apache Karaf.

    Voici mon code :

    La page testMap.xhtml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <h:form>  
     
        <p:growl id="growl" showDetail="true"/>  
     
        <p:gmap center="36.890257,30.707417" zoom="13" type="HYBRID" model="#{mapBean.simpleModel}"  style="width:600px;height:400px">  
            <p:ajax event="overlaySelect" listener="#{mapBean.onMarkerSelect}" update="growl" />  
        </p:gmap>  
     
    </h:form>
    La classe MapBean.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    package org.primefaces.examples.view;  
     
    import java.io.Serializable;  
     
    import javax.faces.application.FacesMessage;  
    import javax.faces.context.FacesContext;  
     
    import org.primefaces.event.map.OverlaySelectEvent;  
    import org.primefaces.model.map.DefaultMapModel;  
    import org.primefaces.model.map.LatLng;  
    import org.primefaces.model.map.MapModel;  
    import org.primefaces.model.map.Marker;  
     
    public class MapBean implements Serializable {  
     
        private MapModel simpleModel;  
     
        private Marker marker;  
     
        public MapBean() {  
            simpleModel = new DefaultMapModel();  
     
            //Shared coordinates  
            LatLng coord1 = new LatLng(36.879466, 30.667648);  
            LatLng coord2 = new LatLng(36.883707, 30.689216);  
            LatLng coord3 = new LatLng(36.879703, 30.706707);  
            LatLng coord4 = new LatLng(36.885233, 30.702323);  
     
            //Basic marker  
            simpleModel.addOverlay(new Marker(coord1, "Konyaalti"));  
            simpleModel.addOverlay(new Marker(coord2, "Ataturk Parki"));  
            simpleModel.addOverlay(new Marker(coord3, "Karaalioglu Parki"));  
            simpleModel.addOverlay(new Marker(coord4, "Kaleici"));  
        }  
     
        public MapModel getSimpleModel() {  
            return simpleModel;  
        }  
     
        public void onMarkerSelect(OverlaySelectEvent event) {  
            marker = (Marker) event.getOverlay();  
     
            addMessage(new FacesMessage(FacesMessage.SEVERITY_INFO, "Marker Selected", marker.getTitle()));  
        }  
     
        public Marker getMarker() {  
            return marker;  
        }  
     
        public void addMessage(FacesMessage message) {  
            FacesContext.getCurrentInstance().addMessage(null, message);  
        }  
    }
    Quelqu'un saurait-il m'expliquer comment faire ?

    Merci d'avance pour votre aide.

  2. #2
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Points : 47
    Points
    47
    Par défaut
    je trouve un autre moyen de solution

    la solution consiste à creer une class java qui permet d'afficher une map et faire l'instanciation de cette class dans la méthode "START" de la class "ACTIVATOR"

    ma solution est :

    pour la class :JGoogleMapEditorPan.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.JEditorPane;
    import javax.swing.JFrame;
    import javax.swing.text.html.HTMLDocument;
    import javax.swing.text.html.HTMLEditorKit;
     
    /**
     * Afficher une carte GoogleMap dans un JEditorPane
     * @author fobec 2010
     */
    public class JGoogleMapEditorPan extends JEditorPane {
     
        private int zoomFactor = 7;
        private String ApiKey = "";
        private String roadmap = "roadmap";
        public final String viewTerrain = "terrain";
        public final String viewSatellite = "satellite";
        public final String viewHybrid = "hybrid";
        public final String viewRoadmap = "roadmap";
     
        /**
         * Constructeur: initialisation du EditorKit
         */
        public JGoogleMapEditorPan() {
            HTMLEditorKit kit = new HTMLEditorKit();
            HTMLDocument htmlDoc = (HTMLDocument) kit.createDefaultDocument();
            this.setEditable(false);
            this.setContentType("text/html");
            this.setEditorKit(kit);
            this.setDocument(htmlDoc);
        }
     
        /**
         * Fixer le zoom
         * @param zoom valeur de 0 à 21
         */
        public void setZoom(int zoom) {
            this.zoomFactor = zoom;
        }
     
        /**
         * Fixer la clé de developpeur
         * @param key APIKey fourni par Google
         */
        public void setApiKey(String key) {
            this.ApiKey = key;
        }
     
        /**
         * Fixer le type de vue
         * @param roadMap
         */
        public void setRoadmap(String roadMap) {
            this.roadmap = roadMap;
        }
     
        /**
         * Afficher la carte d'après des coordonnées GPS
         * @param latitude
         * @param longitude
         * @param width
         * @param height
         * @throws Exception erreur si la APIKey est non renseignée
         */
        public void showCoordinate(String latitude, String longitude, int width, int height) throws Exception {
            this.setMap(latitude, longitude, width, height);
        }
     
        /**
         * Afficher la carte d'après une ville et son pays
         * @param city
         * @param country
         * @param width
         * @param height
         * @throws Exception erreur si la APIKey est non renseignée
         */
        public void showLocation(String city, String country, int width, int height) throws Exception {
            this.setMap(city, country, width, height);
        }
     
        /**
         * Assembler l'url et Générer le code HTML
         * @param x
         * @param y
         * @param width
         * @param height
         * @throws Exception
         */
        private void setMap(String x, String y, Integer width, Integer height) throws Exception {
            if (this.ApiKey.isEmpty()) {
                throw new Exception("Developper API Key not set !!!!");
            }
     
            String url = "http://maps.google.com/maps/api/staticmap?";
            url += "center=" + x + "," + y;
            url += "&amp;zoom=" + this.zoomFactor;
            url += "&amp;size=" + width.toString() + "x" + height.toString();
            url += "&amp;maptype=" + this.roadmap;
            url += "&amp;markers=color:blue" + x + "," + y;
            url += "&amp;sensor=false";
            url += "&amp;key=" + this.ApiKey;
     
            String html = "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>";
            html += "<html><head></head><body>";
            html += "<img src='" + url + "'>";
            html += "</body></html>";
            this.setText(html);
        }
     
     
     
    }

    et pour la class Activator.java


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    import java.util.logging.Level;
    import java.util.logging.Logger;
     
    import javax.swing.JFrame;
     
    import org.osgi.framework.BundleActivator;
    import org.osgi.framework.BundleContext;
     
    public class Activator implements BundleActivator {
     
     
     
    	public void start(BundleContext context) throws Exception {
     
     
    		 JGoogleMapEditorPan googleMap = new JGoogleMapEditorPan();
     
     
     
    		 try {
    	            googleMap.setApiKey("maCleGoogleMap");
    	            //  googleMap.setRoadmap(googleMap.viewHybrid);
     
    	            /**
                        Afficher la ville de Strabourg
                         */
    	            googleMap.showLocation("strasbourg", "france", 390, 400);
    	            /**
                         * Afficher Paris en fonction ses coordonnées GPS
                         */
    	            //  googleMap.showCoordinate("48.8667", "2.3333",390, 400);
    	        } catch (Exception ex) {
    	            Logger.getLogger(JGoogleMapEditorPan.class.getName()).log(Level.SEVERE, null, ex);
    	        }
     
    	        JFrame frame = new JFrame();
    	        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	        frame.add(googleMap);
    	        frame.setSize(400, 420);
    	        frame.setLocation(200, 200);
    	        frame.setVisible(true);
     
     
     
     
     
     
     
     
    	}
     
     
    	public void stop(BundleContext context) throws Exception {
     
    	}
    }


    et pour MANIFEST.MF


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Manifest-Version: 1.0
    Bundle-ManifestVersion: 2
    Bundle-Name: Mybundle
    Bundle-SymbolicName: com.test.mybundle
    Bundle-Version: 1.0.0.qualifier
    Bundle-Activator: com.test.mybundle.Activator
    Bundle-Vendor: TEST
    Bundle-RequiredExecutionEnvironment: JavaSE-1.6
    import-Package: org.osgi.framework;version="1.3.0"


    mais le problème est si je fait l’exécution de cette application :
    RUN AS-->OSGI framwork la map est afficher

    mais le but est d'afficher la map si je tape "START" dans le console

    et de fermer cette map si je tappe "STOP"

    pour le moment si je tape "START " la reponse est :

    osgi> start
    No bundle(s) specified!


    est ce que quelqu'un peut m'aidez

  3. #3
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Points : 47
    Points
    47
    Par défaut
    Peut-être j'ai fait une erreur lors de démarrage de bundle

    En fait, le nom de projet est : com.test.mybundle

    Après l’exécution du projet
    MANIFEST.MF > Run as > OSGi Framework

    La map est affichée (map avec swing)

    Après je tape : stop com.test.mybundle

    Puis : start com.esprit.mybundle

    A cet instant une nouvelle fenêtre de map est affichée.

    Comme le but est d’exécuter cette application avec Apache Karaf, je dois exporter cette application.

    En fait j'arrive à l'exporter :
    Export > Depoyable plug-ins and fragment > com.test.mybundle > destination ( C:\)

    Pour Karaf j'ai téléchargé la version 2.2.5 ici :http://karaf.apache.org/index/community/download.html

    Ma version d'Eclipse est Eclipse Java EE IDE for Web Developers

    Donc le problème est comment exécuter l'application avec Karaf et s'il y a une configuration pour Karaf à faire ?

    Merci d'avance pour votre aide.

Discussions similaires

  1. gestion et affichage d'une map
    Par Captainjuju dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 05/04/2006, 00h43
  2. Réponses: 7
    Dernier message: 06/03/2006, 16h38
  3. Limiter les affichages d'une requete avec POstgre
    Par jenny50 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 12/01/2006, 17h26
  4. [GD] Problème d'affichage d'une image avec gd2
    Par turini dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/10/2005, 12h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo