Kviewer にて一覧画面にmap表示をさせたい

お世話になります。

kintone Tips 外部連携-地図-「顧客訪問リストを地図にピン表示する」 と同等な事をKviwerでも実現したいと考えています。
kintoneでは上記のページを参考に実現できました。
検索しましたところブログ解説者様のページでJavaScriptとCSSによるカスタマイズが必要であることがわかりました。

下記コードは解説者様のコードで、多少編集を試みましたが、実現できませんでした。

どのような変更を加えたら実現可能か、ご教示いただけますでしょうか?

:arrow_heading_down:JavaScript​:arrow_heading_down:

(function () {

    “use strict”;
    
    loadJS(‘https://cdn.jsdelivr.net/jquery/2.1.1/jquery.min.js’);
   loadJS('https://maps.googleapis.com/maps/api/js?key='APIキーを直接入力);
    
    // ページとJSライブラリ群の読み込み待ち
    window.addEventListener(“DOMContentLoaded”, function() {
        (function waitForLibsLoad() {
            if((typeof jQuery !== ‘undefined’)&&(typeof google !== ‘undefined’)
                && (typeof google.maps !== ‘undefined’)
                && (typeof google.maps.version !== ‘undefined’)
                && (typeof google.maps.InfoWindow !== ‘undefined’)) {
                if( !document.URL.match(/show/) ){
                    // 一覧画面へのカスタマイズ
                    var elTable = document.getElementsByClassName(‘table1’)[0];
                    var elIndexView = document.getElementsByClassName(‘index-view’)[0];
                    var header = document.createElement(‘div’);
                    header.setAttribute(‘id’, ‘kview-header’);
                    header.setAttribute(‘name’, ‘kview-header’);
                    elIndexView.insertBefore(header, elTable);
                    kviewIndex();
                } else {
                    // 詳細画面へのカスタマイズ
                }
            } else {
                setTimeout(waitForLibsLoad, 0);
            }
        })();
    }, false);
    
    // 一覧画面のメイン関数
    function kviewIndex(){
        var elHeader = document.getElementById(‘kview-header’);
        
        var elMap = document.createElement(‘div’);
        elMap.setAttribute(‘id’, ‘map’);
        elMap.setAttribute(‘name’, ‘map’);
        elMap.setAttribute(‘style’, ‘width: auto; height: 300px; margin-bottom: 5px; border: solid 2px #c4b097’);
        elHeader.insertBefore(elMap, elHeader.firstChild);

        var lat = getViewColumnValues(‘緯度’);
        var lng = getViewColumnValues(‘経度’);

        // ポイントを先に作成
        var latlng = 0;
        for (var i=0; i < lat.length ; i+=1){
            if (isNaN(lat[i]) === false && isNaN(lng[i]) === false){
                latlng = new google.maps.LatLng(lat[i],lng[i]);
                break;
            }
        }

        // Google Mapに表示する地図の設定
        var opts = {
            zoom: 12,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            scaleControl: true,
            title: ‘target’
        };

        // 地図の要素を定義
        var map = new google.maps.Map(document.getElementById(‘map’), opts);

        // マーカーを設定
        // マーカーデータを格納
        var infowindow = new google.maps.InfoWindow();
        var titles = getViewColumnValues(‘タイトル’);
 
        for (i=0; i < lat.length ; i+=1){
            if (isNaN(lat[i]) === false && isNaN(lng[i]) === false){
                var m_latlng = new google.maps.LatLng(lat[i],lng[i]);
                var marker = new google.maps.Marker({
                    position: m_latlng,
                    map: map,
                    icon: ‘https://chart.googleapis.com/chart?chst=d_bubble_text_small&chld=edge_bc|’ + (i+1) + ‘|FF8060|000000’
                });
                google.maps.event.addListener( marker, ‘click’, (function( marker, i) {
                    return function() {
                        infowindow.setContent( ‘<b>’ + titles[i] + ‘</b>’);
                        infowindow.open( map, marker);
                    }
                })( marker, i));
            } // if 
        } // for
        return;
    }

    // ======<<以下、オプション関数群>>======

    // 外部CSSの読み込み
    function loadCSS(href) {
        var link = document.createElement(‘link’);
        link.type = ‘text/css’;
        link.href = href;
        document.getElementsByTagName(‘head’)[0].appendChild(link);
    }

    // 外部JSの読み込み
    function loadJS(src){
        var script = document.createElement(‘script’);
        script.type = ‘text/javascript’;
        script.src = src;
        document.getElementsByTagName(‘head’)[0].appendChild(script);
    }

    // 要素中のテキストを取り出し
    function getElementText(element) {
        if(element){
            if (element.innerText !== undefined) {
                return element.innerText.replace(/\r?((?!\r?)|(?=\r?\r?\r?))/g,‘’).replace(/(^\s+)|(\s+$)/g, ‘’);
            } else if (element.textContent !== undefined) {
                return element.textContent.replace(/\r?((?!\r?)|(?=\r?\r?\r?))/g,‘’).replace(/(^\s+)|(\s+$)/g, ‘’);
            }
        }else{
            return ‘’;
        }
    }

    // 一覧画面で列方向に要素取得    
    function getViewElements(fieldName){
        var elements = [];
        var elTables = document.getElementsByTagName(‘tr’);
        for(var i=0; i<elTables[0].children.length; i++){
            if(getElementText(elTables[0].children[i]) === fieldName){
                for(var j=1; j<elTables.length; j++){
                    elements.push(elTables[j].children[i]);
                }
            }
        }
        return elements;
    }

    // 一覧画面で列方向にテキスト取得
    function getViewColumnValues(fieldName){
        var values = [];
        var elements = getViewElements(fieldName);
        for(var i=0; i<elements.length; i++){
            values.push(getElementText(elements[i]));
        }
        return values;
    }

    // Google APIsの読み込み対策
    var nativeWrite = document.write;
    document.write = function(html) {
        var m = html.match(/script.+src=“([^”]+)"/);
        if(m){
            loadJS(m[1]);
        } else {
            nativeWrite(html);
        } 
    };
    
})();

:arrow_heading_down:CSS​:arrow_heading_down:

.navbar {
    background: none repeat scroll 0 0 #FFC000;
}

.table1 th {
    padding: 8px;
    border: #E3E3E3 solid;
    border-width: 0 0 1px 1px;
    background: #FFC000;
    color: #fff;
    font-weight: 200;
    text-align: center;
}