印刷に適した地図に変更する

実行結果

次の例では、ボタンを押した際に印刷に適した地図に変更します。

Your borwser is not supporting object tag. Please use one of the latest browsers.
Go to ./apisample/utility/utility_002.html

ソースコードと解説

印刷に適した地図に変更するには、ZDC.MapクラスのsetPrintModeOn()を利用します。
setPrintModeOn()を実行せずに印刷すると、正常に表示されない可能性があります。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="//test.api.its-mo.com/v3/loader?key=JSZddc5111626c8|Zo4wz&api=zdcmap.js,shape.js,control.js,submap.js,search.js&enc=SJIS" type="text/javascript"></script>
<script type="text/javascript">

    var map, mrk1, mrk2, msginfo, from, to, labelhtml,
        lat = 35.6778614, lon = 139.7703167, zoom = 7;

    function loadMap() {
        map = new ZDC.Map(
            document.getElementById('ZMap'),
            {
                latlon: new ZDC.LatLon(lat, lon),
                zoom: 9,
                mapType: ZDC.MAPTYPE_HIGHRES_LV18
            }
        );

        /* 中心点画像を追加 */
        map.addWidget(new ZDC.MapCenter());

        /* スケールバーを追加 */
        map.addWidget(new ZDC.ScaleBar());

        /* コントロールを表示 */
        map.addWidget(new ZDC.Control());

        /* スタート地点の緯度経度 */
        from = new ZDC.LatLon(35.685754722, 139.785605556);
        /* ゴール地点の緯度経度 */
        to   = new ZDC.LatLon(35.669612, 139.75245);

        /* マーカを作成 */
        mrk1 = new ZDC.Marker(to, {
            color: ZDC.MARKER_COLOR_ID_BLUE_S,
            number: ZDC.MARKER_NUMBER_ID_2_S
        });
        map.addWidget(mrk1);

        /* マーカを作成 */
        mrk2 = new ZDC.Marker(from, {
            color: ZDC.MARKER_COLOR_ID_BLUE_S,
            number: ZDC.MARKER_NUMBER_ID_1_S
        });
        map.addWidget(mrk2);

        labelhtml = '<div><div><b>Zetバーガー1号店</b></div>';
        labelhtml += '<table cellspacing="0">';
        labelhtml += '<tr><td><u>電話番号:03-xxxx-xxxx</u></td></tr>';
        labelhtml += '<tr><td><u>email:xxx@xxx.xxx</u></td></tr></table></div>';

        /* 吹き出しを作成 */
        msginfo = new ZDC.MsgInfo(to, 
            {html: labelhtml, offset: ZDC.Pixel(0, -18)});
        /* 吹き出しを地図に追加 */
        map.addWidget(msginfo);
        /* 吹き出しを表示 */
        msginfo.open();

        /* サブマップを追加 */
        map.addWidget(new ZDC.Submap(map,
            {size: ZDC.WH(150, 150)}));

        ZDC.Search.getByZmaps('route3/drive', {
            searchType: 0,
            from: from.lat + ',' + from.lon,
            to: to.lat + ',' + to.lon
        },function(status, res) {
            if (status.code === 200 && res.status.code === '0000') {
                /* 取得成功 */
                writeRoute(status, res);
            } else {
                /* 取得失敗 */
                alert(status.text);
            }
        });

    };

    function writeRoute(status, res) {
        var pl, link = res.route.link;
        for (var i=0, j=link.length; i<j; i++) {
            var opt = {strokeColor: '#a600e3', strokeWeight: 5, lineOpacity: 0.8, lineStyle: 'solid'};
            var pllatlons = [];
            var latlons = link[i].line.latlon;
            for (var k=0, l=latlons.length-1; k<l; k+=2) {
                pllatlons.push(new ZDC.LatLon(latlons[k],latlons[k+1]));
            }
            var pl = new ZDC.Polyline(pllatlons, opt);
            map.addWidget(pl);
        }
    };

    function showPrintPage(){
        var parm = lat + '&'+ lon + '&' + map.getZoom();
            parm += '&' + from.lat + '&' + from.lon + '&'+ to.lat;
            parm += '&' + to.lon + '&' + encodeURI(labelhtml);
        window.open('./printPage.html?' + parm, '_blank', 'toolbar=0, location=0, status=0, menubar=yes, scrollbars=0, resizable=0, width=660, height=870');
    };

</script>
</head>

<body onload="loadMap();">
    <div id="ZMap" style="border:1px solid #777777; width:750px; height:500px; top:0px; left:20px; position:absolute;">
        <div style="top:10px; right:10px; position:absolute;z-index:100;">
            <input type="button" value="印刷用にする" onclick="showPrintPage();">
        </div>
    </div>
</body>
</html>


印刷ページ表示用のソースコードです。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="//test.api.its-mo.com/v3/loader?key=JSZddc5111626c8|Zo4wz&api=zdcmap.js,shape.js,control.js,submap.js,search.js&enc=SJIS" type="text/javascript"></script>
<script type="text/javascript">

    var map, mrk1, mrk2, msginfo, from, to, lat, lon , zoom, labelhtml;

    function loadMap() {

        if(window.location.search){
            /* URLのパラメータを取得する */
            var n = window.location.search.substring(1, window.location.search.length);
            var parm = n.split('&');
            lat = Number(parm[0]);
            lon = Number(parm[1]);
            zoom = Number(parm[2]);
            from = new ZDC.LatLon(Number(parm[3]), Number(parm[4]));
            to = new ZDC.LatLon(Number(parm[5]), Number(parm[6]));
            labelhtml = decodeURI(parm[7]);
        }

        map = new ZDC.Map(
            document.getElementById('ZMap'),
            {
                latlon: new ZDC.LatLon(lat, lon),
                zoom: zoom,
                mapType: ZDC.MAPTYPE_HIGHRES_LV18
            }
        );

        /* 中心点画像を表示 */
        map.addWidget(new ZDC.MapCenter());

        /* スケールバーを表示 */
        map.addWidget(new ZDC.ScaleBar());

        /* コントロールを表示 */
        map.addWidget(new ZDC.Control());

        /* マーカを作成 */
        mrk1 = new ZDC.Marker(to, {
            color: ZDC.MARKER_COLOR_ID_BLUE_S,
            number: ZDC.MARKER_NUMBER_ID_2_S
        });
        map.addWidget(mrk1);

        /* マーカを作成 */
        mrk2 = new ZDC.Marker(from, {
            color: ZDC.MARKER_COLOR_ID_BLUE_S,
            number: ZDC.MARKER_NUMBER_ID_1_S
        });
        map.addWidget(mrk2);

        /* 吹き出しを作成 */
        msginfo = new ZDC.MsgInfo(to, {html: labelhtml, offset: ZDC.Pixel(0, -18)});
        /* 吹き出しを地図に追加 */
        map.addWidget(msginfo);
        /* 吹き出しを表示 */
        msginfo.open();

        /* サブマップを追加 */
        map.addWidget(new ZDC.Submap(map));

        /* 吹き出しの内容をメモ欄に表示 */
        labelhtml = labelhtml.replace(/<td>/g, '\r\n');
        while(labelhtml.indexOf('<') !== -1){
            var sindx = labelhtml.indexOf('<'),
                eindx = (labelhtml.indexOf('>')) +1,
                str = labelhtml.substring(sindx, eindx);
            labelhtml = labelhtml.replace(str, '');
        }

        document.getElementById('id_txt1').value = labelhtml;

        ZDC.Search.getByZmaps('route3/drive', {
            searchType: 0,
            from: from.lat + ',' + from.lon,
            to: to.lat + ',' + to.lon
        },function(status, res) {
            if (status.code === 200 && res.status.code === '0000') {
                /* 取得成功 */
                writeRoute(status, res);
            } else {
                /* 取得失敗 */
                alert(status.text);
            }
        });
    };

    function writeRoute(status, res) {
        var pl, link = res.route.link;
        for (var i=0, j=link.length; i<j; i++) {
            var opt = {strokeColor: '#a600e3', strokeWeight: 5, lineOpacity: 0.8, lineStyle: 'solid'};
            var pllatlons = [];
            var latlons = link[i].line.latlon;
            for (var k=0, l=latlons.length-1; k<l; k+=2) {
                pllatlons.push(new ZDC.LatLon(latlons[k],latlons[k+1]));
            }
            var pl = new ZDC.Polyline(pllatlons, opt);
            map.addWidget(pl);
        }

        /* ウィジットを印刷用の仕様に変更する */
        map.setPrintModeOn();
    };

</script>
</head>

<body onload="loadMap();">
    <div>
        <form>
            <textarea id="id_txt1" style="width:600px;height:60px;"></textarea>
        </form>
    </div>
    <div id="ZMap" style="display: block; width: 640px; height: 780px; top:10px; position: relative; overflow-x: hidden; overflow-y: hidden;align:center;"></div>
</body>
</html>