LoginSignup
2
1

More than 1 year has passed since last update.

Oracle Visual Builder Cloud Service(VBCS)でGoogle Map APIを利用する

Last updated at Posted at 2022-01-20

Oracle Visual Builder Cloud Service(VBCS)でGoogle Mapを利用する手順をまとめておきます。

VBCSとは

前提条件

VBCSアプリケーションの作成

適当なVBCSアプリケーションを作成します。
image.png

適当なWebアプリケーションを作成します。
image.png

メインページの編集

(見栄えのため)main-start(メインページ)にヘッダを設定します。
Heading要素をドラッグアンドドロップで追加し、任意の値に変更します。
image.png

コード・モードに切り替え、以下のhtmlを追加します。
padding-top: 50%;の部分で表示するMapの高さを設定できます。

html
<div class="oj-flex">
  <h1 class="oj-flex-item oj-sm-12 oj-md-12">Google Map App</h1>
  <div id="map" class="oj-flex-item oj-sm-12 oj-md-11"></div>
</div>

<style type="text/css">
<!--
#map {
position: relative;
width: 100%;
height: 0;
padding-top: 50%; /* ajust map height here */
overflow: hidden;
}
-->
</style>

image.png

Google Map読み込み処理の設定

次にGoogle Map APIからMapを取り込む処理の設定をします。
JavaScriptタブを開き、以下のコードを追加します。

js
PageModule.prototype.Load = function() {

    var points = google.maps.geometry.encoding.decodePath(
      '_onagAjphtxDwuBz@SolKnlAg@bcA?fO?rmBSnZ?j{B?fT?bqDg@~sA?zkASbLS~jC?reA?~W?bj@Srq@g@v~@R~\\f@zaAjCnd@bBrq@zErb@~CzYjCfObBz^fEnn@bGngAvLvo@jCf|@f@jsA{@~a@Rja@SzJSfTg@fc@{@jHbB~p@kC~z@cGfEryAnAjMbBfJbBbGrDvGfEvGbGbGfTrNjRrNrIjHbGjHzErIzEbLvBfJnAjHzErb@bB~\\z@~u@Sv`@S~WkCzuA{@zYSzJcGvnCwBv~@gOrfHwB~iAcBzw@{EvkBsDneB{@~W_DnoB{@zc@?~H{EntB{J~zEoAvo@RzT?~MRbG?zEnAjRnAvQbBfTbBvLnA~Hf@rDzEjWrIz^rIrXz@jCvLrXvLvVbLjRjMvQ~RvVjRbQ~MnKbGfE~HnFjM~HrNvGnFbBnPbGj\\rIfTrD~\\jCbe@z@vt@?bo@S~~CoAjR?jdAS~gBSvaG{@znBg@~f@?z^nAjRvBzObBfO~CrNrDfYrIvQ~HnP~HbQzJjMrIrNbLbLzJjMvLrNbQ~MvQj\\be@nUr]vwAntB~\\rg@fOrSvVj\\nP~RbV~W~\\r]vrAvmA~dAr`AbcAv~@bo@rl@bQfOzm@fm@bVfYrNbQfm@bt@jp@jz@~z@bcAvbDz~Dr{@~dArq@zw@bcAbmAvrAj}Aja@be@vVv[~a@jf@zzA~gBj}AnjB~\\v`@ffAfpAb[z^nPvQbQzOzJfJjMzJrNzJ~RjMvV~MrXvLfYzJbVvGrSzEbVfEbQvBfTvBrNf@nPf@nPRjaEg@f^g@bVvBzTbB~WnArl@~CvGz@vBz@vBjCbBrDbBbGR~H~Mf@bj@{@jp@?rNS?vL?rXvBnP?rNRngA?r]?nvA?bG{@r]{@b`@?fTSb~@?~k@RnPz@r]bBbj@?fTz@bpBz@bkBnAvkB?v`@f@reAvhAoAnbASbfBoAzr@g@vmAg@bhAg@~C?zYSr~A{@jM?zYSr{@Sj\\SvuBoAzOf@zOz@fm@f@j_A?vQRzJRjMvBrN~CnU~HbG~CzEbBjM~HfYfTzTbQnn@nd@bLrIrSjMrSnKnU~HbVzEbVbBvVzE~CnA~CjCbBjCbBrD~C~MR~R?jRRjz@R~Rf@~R~Cbe@bBfTjCjf@z@z^z@v`@Rfh@f@bj@jCbaBz@v`@bBzc@RnPRfJRvLnA~MbBfOfEnUjH~a@jHzc@rDjRjHr]fEvQzJbe@f@bBnAvGzJn_@f@~CrDbGvBbBjCRvBg@jH{EnAcBRkCz@gJ_Nka@_DgJ_DwLoFsScLoi@oFsb@sD{^_D_XwB{TcGwj@sD_b@kCce@wBwe@oAc[{@{dBv`@?r]?rI?rIRbfBgEjHSfc@{@~nA{@bhAg@rg@g@oAwzBnAvzBsg@f@chAf@_oAz@gc@z@kHRcfBfEsISsI?s]?w`@?S_g@S_l@?gYbBcj@RoKz@{T?kCRoU?oZcBwo@SwLg@we@g@sg@{@s`Ag@oi@Swj@kCc`@ScBcB_b@_I_tA_Dsq@kC_]oAogASc`@{@{zAsDcnCg@cy@{J_nIwB_bE?kM{@gm@jC_g@nAsNbBgOvBwLz@sDfE{OvGoUzw@sfCvBcGbB{EfEcGbGsI~H_IzJoF~M{EbLoAzYkCrNg@bt@g@zw@oAzmO?vcASbpBg@bo@g@zr@cBjWoA~WwBbQcBbL{@ni@{Erb@{EbVkCv[gEnbAoPnU{Evo@_NbcAwVb[sI~u@gTvL{EzYoKfYoK~RsIf^gOnd@_SvhA{h@~\\sNzOoFzw@wVvrAc[rjA_XreAkWnoBce@rXwGnPsD~HkCbBg@rI_DjH_D~MwGvQcL~RsNbLgJbQ{O~HsIjHgJbGsIvLsSvLcVvQka@nbAwuBbQc`@vo@_yArIgT~HgTnKk\\rIc[fJ{^rDsSzE_XfEcVrD_XzEo_@~C_]~Cg^rDoqAbBgzArIszHjCg^rDsl@bGwe@zJgm@zJ_l@~CkR?{EzaAS~RkC~H?bB?nA?jbB{@nbASj_A?zE?rwBg@nn@?vmF{@roAg@b|A?~H?zuASSwmA?{pA?cj@?sl@RolASk{B?cB?obAnFf@nAz@nArD?fE'
    );
    console.log("**** " + points.length);

    var pointsFixed = [];

    for (var i = 0; i < points.length; i++) {

      var x = {
        "lat": Number((points[i].toJSON().lat / 10).toFixed(5)),
        "lng": Number((points[i].toJSON().lng / 10).toFixed(5))
      }

      pointsFixed[i] = x;
    }

    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 11,
      center: pointsFixed[Math.floor(pointsFixed.length / 2)]
    });

    var poly = new google.maps.Polyline({
      strokeColor: '#000000',
      strokeOpacity: 1,
      strokeWeight: 3,
      map: map,
      path: pointsFixed
    });

var markers = [ {"lat": 37.789435, "lng": -97.342812, "name":"BN51"},
  {"lat": 37.6648693, "lng": -97.4327273, "name":"7308200"},
 {"lat": 37.611052,  "lng": -97.3624598, "name":"7308201"}];

  var iconUrl = "https://maps.google.com/mapfiles/ms/icons/";
  var url;

  for (var i=0; i<markers.length ; i++)
  {

   url = iconUrl + "green-dot.png";
   if (i == 0)
     url = iconUrl + "blue-dot.png";

   if (i == markers.length-1 )
     url = iconUrl + "red-dot.png";


  new google.maps.Marker({

    position: markers[i],
    map: map,
    title: markers[i].name,
    icon: {
      url:  url
    }
  });
  }


  };

image.png

次に先ほど記述したコードをアプリケーションのライフサイクル・イベントに登録します。

Event Listenersタブを開き、「+Event Listener」を押下します。
image.png

「vbEnter」を選択し、「Next」を押下します。

vbEnterのイベントが呼ばれるタイミングについてはこちらのドキュメントをご確認ください。

image.png

New Page Action Chainの「+」を押下し、インプット・テキストに任意の名前を入力し、「Finish」を押下します。

Page, Flow, Applicationについてはこちらのドキュメントをご確認ください。

image.png

次に作成したAction Chainに処理を追加します。
「Go to Action Chain」のリンクを押下します。
image.png

「Call Function」のアクションをパレットにドラッグアンドドロップで設定し、右側に表示されたPropertiesのFunction Nameに「Load」を選択します。(この「Load」は前の手順で追加したJavascriptの関数名です。)
image.png

"Sorce View"のindex.htmlを開き、以下のhtmlを追加します。
<YOUR API KEY>の部分はご自身のGoogleMap API KEYを入力してください。
image.png

設定は以上で終了です、プレビュー画面(もしくはデザイン画面)で実際の動作を確認してみましょう。
Google Mapが画面上に表示されることが確認できます。

  • デザイン画面
    image.png

  • プレビュー
    image.png

以上です。

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1