はじめに
実装
- 自分の実装方法が正しいとは思いませんが、もっと良い方法があれば教えてくだしあ。
useEffect( () => {
/*
google api を読み込むscriptタグの生成
*/
const script = document.createElement("script");
const API = '<あなたが取得したgoogle map apiのkeyの設定>';
script.src = `https://maps.googleapis.com/maps/api/js?key=${API}&callback=initMap`;
script.async = false;
script.defer = false;
document.body.appendChild(script);
/*
地図を表示するためのdivタグの生成
*/
const element = document.createElement('div');
element.id = "map";
document.body.appendChild(element);
/*
google map api のcall back関数を出力する
これはreactでうまいことできないか調べたかった
*/
const script2=document.createElement('script');
script2.innerHTML = " var map; function initMap() {map = new google.maps.Map(document.getElementById('map'), {center: {lat: -34.397, lng: 150.644},zoom: 8});}"
document.body.appendChild(script2);
}, []
結果
- 上記のソースを実行すると地図が表示されていることを確認できる
余談
import React, { useEffect } from 'react';
const Location = () => {
useEffect( () => {
const script = document.createElement("script");
const API = '<あなたのAPIキーを指定して下さい>'
script.src = `https://maps.googleapis.com/maps/api/js?key=${API}&callback=initMap`;
script.async = false;
script.defer = false;
document.body.appendChild(script);
const script2=document.createElement('script');
script2.innerHTML = " var map; function initMap() {map = new google.maps.Map(document.getElementById('map'), {center: {lat: -34.397, lng: 150.644},zoom: 8});}"
document.body.appendChild(script2);
}, [])
return (
<>
<div id="map"></div>
</>
)
};
export default Location;