[JAVA] Afficher Google Maps sur la page Web (Spring Boot + Thymeleaf)

Aperçu

J'apprenais Spring Boot et je voulais afficher Google Map sur une page Web, j'ai donc essayé d'utiliser l'API JavaScript de Maps. Cette fois, j'utiliserai un fragment de Thymeleaf pour afficher Google Map sur l'écran d'accueil. Si j'intégrais javascript et css dans le fichier html, c'était un moment avec la source officielle de l'échantillon, mais En lisant chacun dans un fichier séparé, je ne savais pas où lire lors de l'utilisation de fragments. (En fait, javascript était intégré au HTML après tout.)

environnement

Site de référence

Structure des dossiers

Certains sont omis pour faciliter la visualisation.

src
└── main/
    ├── java/
    │   └── com/
    │       └── example/
    │           └── demo/
    │               ├── SampleApplication.java
    │               ├── WebConfig.java
    │               └── login/
    │                   └── controller/
    │                       └── HomeController.java
    └── resources/
        ├── application.properties
        ├── static/
        │   └── css/
        │       └── home.css
        └── templates/
            └── login/
                ├── homeLayout.html
                └── shopMap.html

Ceci est l'écran principal. À la place de «

</ div>», je veux inclure «shopMap.html» qui décrit Google Map comme un fragment et l'afficher. .. shopMap.css est chargé ici.

homeLayout.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
    xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
    xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5">
<head>
    <meta charset="UTF-8"></meta>
    <link th:href="@{/webjars/bootstrap/3.3.7-1/css/bootstrap.min.css}" rel="stylesheet"></link>
    <script th:src="@{/webjars/jquery/1.11.1/jquery.min.js}"></script>
    <script th:src="@{/webjars/bootstrap/3.3.7-1/js/bootstrap.min.js}"></script>
    <link th:href="@{/css/home.css}" rel="stylesheet"></link>
    <title>Home</title>
</head>
<body>

···réduction···

    <!--contenu-->
    <div class="container-fluid">
        <div class="row">
            <div class="col-sm-10 col-sm-offset-2 main">
                <div th:include="__${contents}__"></div>
            </div>
        </div>
    </div>
</body>
</html>

C'est le code HTML qui décrit en fait Google Map. Réécrivez la partie de "YOUR_API_KEY" avec la clé API obtenue par GCP. Au début, j'ai chargé shopMap.css ici, mais il ne s'affichait pas correctement. Probablement seule la partie <div th: fragment =" shop_map "> du fragment est incluse dans homeLayout.html Par conséquent, il peut avoir été inutile de lire css avec la balise \ ici.

shopMap.html


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
    <meta charset="UTF-8">
</head>

<body>
    <div th:fragment="shop_map">

···réduction···

        <!--Élément Div pour afficher la carte-->
		<div id="map"></div>
		<script>
		  var map;
		  function initMap() {
		    map = new google.maps.Map(document.getElementById('map'), {
		      center: {lat: -34.397, lng: 150.644},
		      zoom: 10
		    });
		  }
		</script>
		<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" defer></script>
    </div>
</body>
</html>

C'est le seul CSS, mais c'est essentiel.

home.css


#map {
  height: 400px;
  width: 600px;
}

Enfin, ajoutez le traitement de la méthode Get dans la classe de contrôleur. Ajoutez le fragment que vous souhaitez spécifier au modèle et renvoyez homeLayout.html.

HomeController.java


package com.example.demo.login.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {
	@GetMapping("/shopMap")
	public String getShopMap(Model model) {
		model.addAttribute("contents", "login/shopMap :: shop_map");
		return "login/homeLayout";
	}
}

Démarrez Spring Boot et accédez à http: // localhost: 8080 / shopMap.

  • Le paramètre de limite de clé GCP est "URL de provenance HTTP (site Web)" et seul "http: // localhost / *" est spécifié.

Il est sorti en toute sécurité! Screen Shot 2020-11-01 at 8.32.28.png

finalement

J'ai essayé d'utiliser l'API pour la première fois en premier lieu, mais l'API Maps JavaScript est très facile si vous affichez simplement la carte, et si vous la personnalisez, il semble que vous pouvez apprendre diverses choses tout en vous amusant. Comme je l'ai mentionné au début, javascript ne fonctionnait pas bien lorsque je le lisais en tant que fichier externe, et je ne savais pas où l'importer cette fois. J'essaierai à nouveau lorsque je procéderai au développement et approfondirai ma compréhension. À ce moment-là, afin de terminer cet article inachevé, je suis désolé de le poster une fois m (._.) M

Recommended Posts

Afficher Google Maps sur la page Web (Spring Boot + Thymeleaf)
Obtenez la page Web Python, encodez et affichez les caractères
Afficher la page Web avec FastAPI + uvicorn + Nginx (conversion SSL / HTTPS)
Afficher plusieurs marqueurs sur Google Map
Afficher une page Web avec FastAPI + uvicorn + Nginx (fonction Modèles de Jinja2)
[Android] Afficher des images sur le Web dans la fenêtre info de Google Map
Afficher les diagrammes matplotlib dans une application Web
Configurons un serveur WEB avec Chromebook
Comment tester sur une page authentifiée par Django