Thursday, January 5, 2023

Membuat Google Maps Menggunakan Java Swing

 


1. Buat file : map.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: 0; padding: 0 }

       #map-canvas { height: 100% }

   </style>

   <script type="text/javascript"

           src="https://maps.googleapis.com/maps/api/js?key=API_KEY"></script>

   <script type="text/javascript">

     var map;

     function initialize() {

       var mapOptions = {

         center: new google.maps.LatLng(48.209331, 16.381302),

         zoom: 4

       };

       map = new google.maps.Map(

              document.getElementById("map-canvas"), mapOptions);

     }

     google.maps.event.addDomListener(window, 'load', initialize);


   </script>

</head>

<body>

<div id="map-canvas"></div>

</body>

</html>


2. Buat file java 

2.1. Standard  

import static com.teamdev.jxbrowser.engine.RenderingMode.HARDWARE_ACCELERATED;

import com.teamdev.jxbrowser.browser.Browser;

import com.teamdev.jxbrowser.engine.Engine;

import com.teamdev.jxbrowser.engine.EngineOptions;

import com.teamdev.jxbrowser.view.swing.BrowserView;

import java.awt.BorderLayout;

import javax.swing.JFrame;

import javax.swing.SwingUtilities;

public class GoogleMaps {

    public static void main(String[] args) {

        EngineOptions options =

                EngineOptions.newBuilder(HARDWARE_ACCELERATED).build();

        Engine engine = Engine.newInstance(options);

        Browser browser = engine.newBrowser();

        SwingUtilities.invokeLater(() -> {

            BrowserView view = BrowserView.newInstance(browser);

            JFrame frame = new JFrame("Google Maps");

            frame.add(view, BorderLayout.CENTER);

            frame.setSize(800, 500);

            frame.setVisible(true);

            browser.navigation().loadUrl("file:///Users/me/map.html");

        });

    }

}

2.2.  Plust Zoom

import static com.teamdev.jxbrowser.engine.RenderingMode.*;

import com.teamdev.jxbrowser.browser.Browser;

import com.teamdev.jxbrowser.engine.Engine;

import com.teamdev.jxbrowser.engine.EngineOptions;

import com.teamdev.jxbrowser.view.swing.BrowserView;

import java.awt.BorderLayout;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.SwingUtilities;

public class GoogleMaps {

    private static final int MIN_ZOOM = 0;

    private static final int MAX_ZOOM = 21;

    private static final String setMarkerScript =

            "var myLatlng = new google.maps.LatLng(48.4431727,23.0488126);\n" +

                    "var marker = new google.maps.Marker({\n" +

                    "    position: myLatlng,\n" +

                    "    map: map,\n" +

                    "    title: 'Hello World!'\n" +

                    "});";

    /**

     * In map.html file default zoom value is set to 4.

     */

    private static int zoomValue = 4;

    public static void main(String[] args) {

        EngineOptions options =

                EngineOptions.newBuilder(HARDWARE_ACCELERATED).build();

        Engine engine = Engine.newInstance(options);

        Browser browser = engine.newBrowser();

        SwingUtilities.invokeLater(() -> {

            BrowserView view = BrowserView.newInstance(browser);

            JButton zoomInButton = new JButton("Zoom In");

            zoomInButton.addActionListener(e -> {

                if (zoomValue < MAX_ZOOM) {

                    browser.mainFrame().ifPresent(frame ->

                            frame.executeJavaScript("map.setZoom(" +

                                    ++zoomValue + ")"));

                }

            });

            JButton zoomOutButton = new JButton("Zoom Out");

            zoomOutButton.addActionListener(e -> {

                if (zoomValue > MIN_ZOOM) {

                    browser.mainFrame().ifPresent(frame ->

                            frame.executeJavaScript("map.setZoom(" +

                                    --zoomValue + ")"));

                }

            });

            JButton setMarkerButton = new JButton("Set Marker");

            setMarkerButton.addActionListener(e ->

                    browser.mainFrame().ifPresent(frame ->

                            frame.executeJavaScript(setMarkerScript)));

            JPanel toolBar = new JPanel();

            toolBar.add(zoomInButton);

            toolBar.add(zoomOutButton);

            toolBar.add(setMarkerButton);

            JFrame frame = new JFrame("Google Maps");

            frame.add(toolBar, BorderLayout.SOUTH);

            frame.add(view, BorderLayout.CENTER);

            frame.setSize(800, 500);

            frame.setVisible(true);

            browser.navigation().loadUrl("file:///Users/me/map.html");

        });

    }

}


Catatan : Library JxBrowser 

Download Trial JxBrowser selama 30 hari, lalu di extrak. Perlu mendapatkan license dari JxBrowser dengan cara evaluate, nanti license akan dikirim melalui email yang digunakan untuk mendaftar pastikan juga license yang dikirim didownload. Setelah extrak,  setelah itu import library JxBrowser. Jika untuk windows file jxbrowser-6.14.1 dengan jxbrowser-win32-6.14.1, jika linux pilih jxbrowser-linux32-6.14.1 atau jxbrowser-linux64-6.14.1 dan untuk mac os jxbrowser-mac-6.14.1.

Memunculkan Simbol & Emoji Pada OS Mac

  Memunculkan Simbol & Emoji  1. Buka aplikasi Pages / Notes pada Macbook. 2. Klik pada Menubar Edit --> Pilih Emoji and Symbols a...