Apresentar o resultado de uma rota em uma aplicação desktop

4 respostas
MaiqueL

Olá pessoal,

Gostaria de apresentar o resultado de uma rota calculada pela minha aplicação desktop.

Estou usando um algoritmo da minha aplicacao para calcular a rota mas estou usando a api do google maps para gerar os dados.

Alguma dica de como apresentar esse resultado?

obs: eu preciso de algo que rode no windows e no Mac então comando shell para abrir o navegador eu acho que não daria.

[]s

4 Respostas

Margel_Douglas

Cara não sei se te entendi…

Vc esta fazendo uma aplicação desktop usando swing?

Vc tem uma página web (tua rota do google maps) e quer mostrar isso em swing?

Nunca fiz isso mas acho q vc pode usar o JEditorPane para exibir páginas web, mais ou menos assim:

JEditorPane editor = new JEditorPane();
editor.setDocument(new HTMLDocument());
editor.setContentType("text/html");
editor.setPage("SUA_URL");

Da uma testada ai e v como q fica … abraço!

MaiqueL

Margel Douglas:
Cara não sei se te entendi…

Vc esta fazendo uma aplicação desktop usando swing?

Vc tem uma página web (tua rota do google maps) e quer mostrar isso em swing?

Nunca fiz isso mas acho q vc pode usar o JEditorPane para exibir páginas web, mais ou menos assim:

JEditorPane editor = new JEditorPane();
editor.setDocument(new HTMLDocument());
editor.setContentType("text/html");
editor.setPage("SUA_URL");

Da uma testada ai e v como q fica … abraço!

Obrigado por responder mas o que eu queria era abrir um mapa do Google maps dentro de um JFrame.

Eu consegui isso usando JavaFx.

[]s

Margel_Douglas

Legal cara!

Se tiver como posta o código ai :wink:

MaiqueL

Margel Douglas:
Legal cara!

Se tiver como posta o código ai ;)

Segue o code que me ajudou.

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Accordion;
import javafx.scene.control.TitledPane;
import javafx.scene.effect.Reflection;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class Main extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    WebEngine engine;

    @Override
    public void start(Stage stage) {
        Scene scene = new Scene(createMap());
        scene.setFill(Color.rgb(230, 230, 230));
        stage.setScene(scene);
        stage.setTitle("Java Conference Tour");
        stage.setHeight(450);
        stage.setWidth(700);
        stage.show();
    }

    private BorderPane createMap() {
        BorderPane inner = new BorderPane();
        inner.setCenter(createWebView());
        inner.setLeft(createConferences());
        BorderPane outer = new BorderPane();
        AnchorPane anchor = new AnchorPane();
        anchor.getChildren().add(inner);
        AnchorPane.setBottomAnchor(inner, 100d);
        AnchorPane.setTopAnchor(inner, 30d);
        AnchorPane.setLeftAnchor(inner, 30d);
        AnchorPane.setRightAnchor(inner, 30d);
        outer.setCenter(anchor);
        return outer;
    }

    private WebView createWebView() {
        WebView webView = new WebView();
        engine = webView.getEngine();
        webView.getEngine().load(getClass().getResource("content.html").toString());
        webView.setEffect(new Reflection());
        return webView;
    }

    private Accordion createConferences() {
        Accordion accordion = new Accordion();
        final TitledPane india = createConference("JavaOne India", 17.385371, 78.484268, "http://steveonjava.com/wp-content/uploads/2011/03/javaone-india.png");
        accordion.getPanes().add(india);
        accordion.getPanes().add(createConference("OSCON", 45.515008, -122.693253, "http://steveonjava.com/wp-content/uploads/2011/05/oscon.png"));
        accordion.getPanes().add(createConference("Devoxx", 51.206883, 4.44, "http://steveonjava.com/wp-content/uploads/2010/07/LogoDevoxxNeg150.png"));
        accordion.getPanes().add(createConference("J-Fall", 52.219913, 5.474253, "http://steveonjava.com/wp-content/uploads/2011/11/jfall3.png"));
        accordion.getPanes().add(createConference("JavaOne SF", 37.775057, -122.416534, "http://steveonjava.com/wp-content/uploads/2010/07/JavaOne-2010-Speaker.png"));
        accordion.getPanes().add(createConference("Jazoon", 47.382079, 8.528137, "http://steveonjava.com/wp-content/uploads/2010/04/jazoon.png"));
        accordion.getPanes().add(createConference("GeeCON", 50.064633, 19.949799, "http://steveonjava.com/wp-content/uploads/2011/03/geecon.png"));
        india.setExpanded(true);
        accordion.setExpandedPane(india);
        accordion.expandedPaneProperty().addListener(new ChangeListener<TitledPane>() {
            public void changed(ObservableValue<? extends  TitledPane> ov, TitledPane t, TitledPane t1) {
                if (t1 != null) {
                    ((ConferencePane)t1).navigateTo();
                }
            }
        });
        return accordion;
    }

    private ConferencePane createConference(String name, final double lat, final double lon, String imageUrl) {
        return new ConferencePane(name, new ImageView(new Image(imageUrl)), lat, lon);
    }

    public class ConferencePane extends TitledPane {
        private final double lat;
        private final double lon;

        private ConferencePane(String label, Node node, double lat, double lon) {
            super(label, node);
            this.lat = lat;
            this.lon = lon;
        }
        public void navigateTo() {
            engine.executeScript("moveMap(" + lat + ", " + lon + ");");
        }
    }
}

content.html

<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
        <style type="text/css">
            html { height: 100% }
            body { height: 100%; margin: 0px; padding: 0px }
            #map_canvas { height: 100% }
        </style>
        <script type="text/javascript"
                src="http://maps.google.com/maps/api/js?sensor=true">
        </script>
        <script type="text/javascript">
            var map ;
            function initialize() {
                var latlng = new google.maps.LatLng(17.385371, 78.484268);
                var myOptions = {
                    zoom: 12,
                    center: latlng,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                map = new google.maps.Map(document.getElementById("map_canvas"),
                myOptions);
            }

            function addMarker(lat, lng) {
                var newmarker = new google.maps.Marker({
                    position: new google.maps.LatLng(lat, lng),
                    map: map
                });
            }

            function moveMap(lat, lng) {
                var latlng = new google.maps.LatLng(lat, lng);
                map.setCenter(latlng);
            }
        </script>
    </head>
    <body onload="initialize()">
        <div id="map_canvas" style="width:100%; height:100%"></div>
    </body>
</html>
Criado 24 de novembro de 2012
Ultima resposta 26 de nov. de 2012
Respostas 4
Participantes 2