edit | blame | history | raw

ExampleHtmlBoardPage 代码

import React, {Component} from 'react'
import './ExampleHtmlBoardPage.css'
import {Bp, GIS} from "../iclient3d-plot-diy";

import {Button} from "antd";
import $ from "jquery";

export default class ExampleHtmlBoardPage extends Component {

    constructor(props) {
        super(props);
        this.state = {
            htmlString: '<h3>正在加载中...</h3>',
            cssString: '<h3>正在加载中...</h3>',
            bp: null,
            clickBpIndex: -1,
        };
    }

    options = [
        {
            code: '12xxxx3123',
            "showHtmlBoard": true,
            templateHtml: `
            <div class="info-window">
                <div class="info-window-heading">
                    <span class="info-window-title" style="width: 300px;">{{title}}</span>
                    <div class="bbb">
                         <div class="btn-pin"></div>
                    </div>
                </div>
                <div class="info-window-content-container">
                    <div class="info-window-content">
                        <div class="xxx">
                            <div>名称</div>
                            <div>{{name}}</div>
                        </div>
                        <div class="xxx">
                            <div>经度</div>
                            <div>{{lon}}</div>
                        </div>
                        <div class="xxx">
                            <div>纬度</div>
                            <div>{{lat}}</div>
                        </div>
                    </div>
                </div>
            </div>
        `,
            "templateValue": {
                title: "12xxxx3123",
                name: "name",
                lon: 111.23432,
                lat: 23.1,
            },
            "infoWindowSelector": ".info-window",
            "infoWindowTitleSelector": ".info-window-heading",
            "infoWindowBtnPinSelector": ".btn-pin",
            "type": 2002,
            "useModify": false,
            "lon": 102.74521918551825,
            "lat": 30.982390144247127,
            "height": 0
        },
        {
            code: '12xxxx3122',
            "showHtmlBoard": true,
            "infoWindowSelector": ".info-window",
            "infoWindowTitleSelector": ".info-window-heading",
            "infoWindowBtnPinSelector": ".btn-pin",
            "type": 2002,
            "useModify": false,
            "lon": 112.74521918551825,
            "lat": 30.982390144247127,
            "height": 0
        }
    ]

    htmlBoardElementCallback(code){
        let html = `
            <div class="info-window">
                <div class="info-window-heading">
                    <span class="info-window-title" style="width: 300px;">{{title}}</span>
                    <div class="bbb">
                         <div class="btn-pin"></div>
                    </div>
                </div>
                <div class="info-window-content-container">
                    <div class="info-window-content">
                        <div class="xxx">
                            <div>名称</div>
                            <div>{{name}}</div>
                        </div>
                        <div class="xxx">
                            <div>经度</div>
                            <div>{{lon}}</div>
                        </div>
                        <div class="xxx">
                            <div>纬度</div>
                            <div>{{lat}}</div>
                        </div>
                    </div>
                </div>
            </div>
        `
        let values = {
            title: code,
            name: "name",
            lon: 111.23432,
            lat: 23.1,
        };
        html = html.replace(/\{\{(.*)}}/g, (g, g2) => {
            return values[g2] || '';
        });
        return $(html)[0];
    }

    componentDidMount() {

        fetch('./example/ExampleHtmlBoardPage.md')
            .then(response => response.text())
            .then(mdText => {
                this.setState({htmlString: window.marked.parse(mdText)});
            });
        fetch('./example/ExampleHtmlBoardCss.md')
            .then(response => response.text())
            .then(mdText => {
                this.setState({cssString: window.marked.parse(mdText)});
            });
        let html = `
            <div class="info-window">
                <div class="info-window-heading">
                    <span class="info-window-title" style="width: 300px;">00003 </span>
                    <div class="bbb">
                        <ng-content select="head-button"></ng-content>
                    </div>
                </div>
                <div class="info-window-content-container">
                    <div class="info-window-content">
                        <div class="xxx">
                            <div>名称</div>
                            <div>xxxx</div>
                        </div>
                        <div class="xxx">
                            <div>经度</div>
                            <div>xxxx</div>
                        </div>
                        <div class="xxx">
                            <div>纬度</div>
                            <div>xxxx</div>
                        </div>
                    </div>
                </div>
            </div>
        `;
        // let element = $(html);
        this.mapFunction.mapApiService.showDrawDatas(this.options);
    }

    showWindow() {
        // this.mapFunction.mapApiService.showDrawDatas(this.options);
        this.mapFunction.mapApiService.updateDraw('12xxxx3123', {
            "showHtmlBoard": true
        });
    }
    closeWindow() {
        this.mapFunction.mapApiService.updateDraw('12xxxx3123', {
            "showHtmlBoard": false
        });
    }

    render() {
        return (
            <div className={"example_draw_container"}>
                <h3>军标绘制拨盘功能</h3>
                <div className={"map_wrapper"}>
                    <GIS refs={
                        e => {
                            this.mapFunction = e
                        }
                    }
                         plotUrl={this.state.plotUrl}
                         mapRef={this}
                         showDefaultLayer={true}
                         htmlBoardElementCallback={this.htmlBoardElementCallback.bind(this)}
                    />
                </div>
                <Button type="primary" onClick={this.showWindow.bind(this)}>打开12xxxx3123窗口</Button>
                <Button type="primary" onClick={this.closeWindow.bind(this)}>关闭12xxxx3123窗口</Button>
                {this.state.clickBpIndex > -1 && <span
                    style={{color: '#f00', marginLeft: '20px'}}>你点击了第 {this.state.clickBpIndex + 1} 个选项!</span>}
                <div className={"code_wrapper"}>
                    <div dangerouslySetInnerHTML={{__html: this.state.htmlString}}></div>
                </div>
                <div className={"code_wrapper"}>
                    <div dangerouslySetInnerHTML={{__html: this.state.cssString}}></div>
                </div>
            </div>
        )
    }
}