<template>
    <view class="content">
        <map class="map" id="map1" ref="map1" :controls="controls" :scale="scale" :longitude="location.longitude"
            :latitude="location.latitude" :show-location="showLocation" :enable-3D="enable3D" :rotate="rotate" :skew="skew"
            :show-compass="showCompass" :enable-overlooking="enableOverlooking" :enable-zoom="enableZoom"
            :enable-scroll="enableScroll" :enable-rotate="enableRotate" :enable-satellite="enableSatellite"
            :enable-traffic="enableTraffic" :markers="markers" :polyline="polyline" :circles="circles" :polygons="polygons"
            :include-points="includePoints" @tap="maptap" @controltap="oncontroltap" @markertap="onmarkertap"
            @callouttap="oncallouttap" @poitap="onpoitap" @updated="onupdated" @regionchange="onregionchange"></map>
        <scroll-view class="scrollview" scroll-y="true">
            <!-- <view class="list-item">
                <text class="list-text">显示3D楼块</text>
                <switch :checked="enable3D" @change="enableThreeD" />
            </view>
            <view class="list-item">
                <text class="list-text">显示指南针</text>
                <switch :checked="showCompass" @change="changeShowCompass" />
            </view>
            <view class="list-item">
                <text class="list-text">开启俯视</text>
                <switch :checked="enableOverlooking" @change="changeEnableOverlooking" />
            </view>
            <view class="list-item">
                <text class="list-text">是否支持缩放</text>
                <switch :checked="enableZoom" @change="changeEnableZoom" />
            </view>
            <view class="list-item">
                <text class="list-text">是否支持拖动</text>
                <switch :checked="enableScroll" @change="changeEnableScroll" />
            </view>
            <view class="list-item">
                <text class="list-text">是否支持旋转</text>
                <switch :checked="enableRotate" @change="changeEnableRotate" />
            </view>
            <view class="list-item">
                <text class="list-text">是否开启卫星图</text>
                <switch :checked="enableSatellite" @change="changeEnableSatellite" />
            </view>
            <view class="list-item">
                <text class="list-text">是否开启实时路况</text>
                <switch :checked="enableTraffic" @change="changeEnableTraffic" />
            </view> -->
			<!-- #ifndef MP-JD -->
            <button class="button" @click="changeScale">changeScale</button>
			<!-- #endif -->
			<!-- #ifndef H5 || APP || MP-JD || MP-KUAISHOU -->
			<button class="button" @click="changeRotate">changeRotate</button>
			<button class="button" @click="changeSkew">changeSkew</button>
			<!-- #endif -->

            <button class="button" @click="addMarkers">addMarkers</button>
            <button class="button" @click="addPolyline">addPolyline</button>
			<!-- #ifndef MP-JD -->
            <button class="button" @click="addPolygons">addPolygons</button>
			<!-- #endif -->
            <button class="button" @click="addCircles">addCircles</button>
            <button class="button" @click="includePoint">includePoints</button>
            <button class="button" @click="handleGetCenterLocation">getCenterLocation</button>
            <button class="button" @click="handleGetRegion">getRegion</button>
			<!-- #ifndef MP-JD -->
            <button class="button" @click="handleTranslateMarker">translateMarker</button>
			<!-- #endif -->
        </scroll-view>
    </view>
</template>

<script>
    const testMarkers = [{
            id: 0,
            latitude: 39.989631,
            longitude: 116.481018,
            title: '方恒国际 阜通东大街6号',
            zIndex: '1',
            rotate: 0,
            width: 20,
            height: 20,
            anchor: {
                x: 0.5,
                y: 1
            },
            callout: {
                content: '方恒国际 阜通东大街6号',
                color: '#00BFFF',
                fontSize: 10,
                borderRadius: 4,
                borderWidth: 1,
                borderColor: '#333300',
                bgColor: '#CCFF99',
                padding: '5',
                display: 'ALWAYS'
            }
        },
        {
            id: 1,
            latitude: 39.9086920000,
            longitude: 116.3974770000,
            title: '天安门',
            zIndex: '1',
            iconPath: '/static/location.png',
            width: 40,
            height: 40,
            anchor: {
                x: 0.5,
                y: 1
            },
            callout: {
                content: '首都北京\n天安门',
                color: '#00BFFF',
                fontSize: 12,
                borderRadius: 2,
                borderWidth: 0,
                borderColor: '#333300',
                bgColor: '#CCFF11',
                padding: '1',
                display: 'ALWAYS'
            }
        }
    ];
    const testPolyline = [{
            points: [{
                    latitude: 39.925539,
                    longitude: 116.279037
                },
                {
                    latitude: 39.925539,
                    longitude: 116.520285
                }
            ],
            color: '#FFCCFF',
            width: 7,
            dottedLine: true,
            arrowLine: true,
            borderColor: '#000000',
            borderWidth: 2
        },
        {
            points: [{
                    latitude: 39.938698,
                    longitude: 116.275177
                },
                {
                    latitude: 39.966069,
                    longitude: 116.289253
                },
                {
                    latitude: 39.944226,
                    longitude: 116.306076
                },
                {
                    latitude: 39.966069,
                    longitude: 116.322899
                },
                {
                    latitude: 39.938698,
                    longitude: 116.336975
                }
            ],
            color: '#CCFFFF',
            width: 5,
            dottedLine: true,
            arrowLine: true,
            borderColor: '#CC0000',
            borderWidth: 3
        }
    ];
    const testPolygons = [{
            points: [{
                    latitude: 39.781892,
                    longitude: 116.293413
                },
                {
                    latitude: 39.787600,
                    longitude: 116.391842
                },
                {
                    latitude: 39.733187,
                    longitude: 116.417932
                },
                {
                    latitude: 39.704653,
                    longitude: 116.338255
                }
            ],
            fillColor: '#FFCCFF',
            strokeWidth: 3,
            strokeColor: '#CC99CC',
            zIndex: 11
        },
        {
            points: [{
                    latitude: 39.887600,
                    longitude: 116.518932
                },
                {
                    latitude: 39.781892,
                    longitude: 116.518932
                },
                {
                    latitude: 39.781892,
                    longitude: 116.428932
                },
                {
                    latitude: 39.887600,
                    longitude: 116.428932
                }
            ],
            fillColor: '#CCFFFF',
            strokeWidth: 5,
            strokeColor: '#CC0000',
            zIndex: 3
        }
    ];
    const testCircles = [{
            latitude: 39.996441,
            longitude: 116.411146,
            radius: 15000,
            strokeWidth: 5,
            color: '#CCFFFF',
            fillColor: '#CC0000'
        },
        {
            latitude: 40.096441,
            longitude: 116.511146,
            radius: 12000,
            strokeWidth: 3,
            color: '#CCFFFF',
            fillColor: '#FFCCFF'
        },
        {
            latitude: 39.896441,
            longitude: 116.311146,
            radius: 9000,
            strokeWidth: 1,
            color: '#CCFFFF',
            fillColor: '#CC0000'
        }
    ];
    const testIncludePoints = [{
            latitude: 39.989631,
            longitude: 116.481018,
        },
        {
            latitude: 39.9086920000,
            longitude: 116.3974770000,
        }
    ];
    export default {
        data() {
            return {
                location: {
                    longitude: 116.3974770000,
                    latitude: 39.9086920000
                },
                controls: [{
                    id: 1,
                    position: {
                        left: 5,
                        top: 180,
                        width: 30,
                        height: 30
                    },
                    iconPath: '/static/logo.png',
                    clickable: true
                }],
                showLocation: false,
                scale: 13,
                showCompass: true,
                enable3D: true,
                enableOverlooking: true,
                enableZoom: true,
                enableScroll: true,
                enableRotate: true,
                enableSatellite: false,
                enableTraffic: false,
                polyline: [],
                markers: [],
                polygons: [],
                circles: [],
                includePoints: [],
                rotate: 0,
                skew: 0
            }
        },
        onLoad() {},
        onReady() {
            this.map = uni.createMapContext("map1", this);
        },
        methods: {
			  // #ifndef MP-JD
            changeScale() {
                this.scale = this.scale == 9 ? 15 : 9;
            },
            changeRotate() {
                this.rotate = this.rotate == 90 ? 0 : 90;
            },
				changeSkew() {
				    this.skew = this.skew == 30 ? 0 : 30;
				},
				// #endif
            enableThreeD(e) {
                this.enable3D = e.detail.value;
            },
            changeShowCompass(e) {
                this.showCompass = e.detail.value;
            },
            changeEnableOverlooking(e) {
                this.enableOverlooking = e.detail.value;
            },
            changeEnableZoom(e) {
                this.enableZoom = e.detail.value;
            },
            changeEnableScroll(e) {
                this.enableScroll = e.detail.value;
            },
            changeEnableRotate(e) {
                this.enableRotate = e.detail.value;
            },
            changeEnableSatellite(e) {
                this.enableSatellite = e.detail.value;
            },
            changeEnableTraffic(e) {
                this.enableTraffic = e.detail.value;
            },
            addMarkers() {
                this.markers = testMarkers;
            },
            addPolyline() {
                this.polyline = testPolyline;
            },
				// #ifndef MP-JD
            addPolygons() {
                this.polygons = testPolygons;
            },
				// #endif
            addCircles() {
                this.circles = testCircles;
            },
            includePoint() {
                this.includePoints = testIncludePoints;
            },
            handleGetCenterLocation() {
                this.map.getCenterLocation({
                    success: ret => {
                        console.log(JSON.stringify(ret));
                        uni.showModal({
                            content: JSON.stringify(ret)
                        })
                    }
                })
            },
            handleGetRegion() {
                this.map.getRegion({
                    success: ret => {
                        console.log(JSON.stringify(ret));
                        uni.showModal({
                            content: JSON.stringify(ret)
                        })
                    }
                })
            },
				// #ifndef MP-JD
            handleTranslateMarker() {
                this.map.translateMarker({
                    markerId: 1,
                    destination: {
                        latitude: 39.989631,
                        longitude: 116.481018
                    },
                    duration: 2000
                }, ret => {
                    console.log(JSON.stringify(ret));
                    uni.showModal({
                        content: JSON.stringify(ret)
                    })
                });
            },
				// #endif
            maptap(e) {
                uni.showModal({
                    content: JSON.stringify(e)
                })
            },
            onmarkertap(e) {
                uni.showModal({
                    content: JSON.stringify(e)
                })
            },
            oncontroltap(e) {
                uni.showModal({
                    content: JSON.stringify(e)
                })
            },
            oncallouttap(e) {
                uni.showModal({
                    content: JSON.stringify(e)
                })
            },
            onupdated(e) {
                console.log(JSON.stringify(e))
            },
            onregionchange(e) {
                console.log(JSON.stringify(e));
            },
            onpoitap(e) {
                uni.showModal({
                    content: JSON.stringify(e)
                })
            }
        }
    }
</script>

<style>
    .content {
        flex: 1;
    }

    .map {
        width: 750rpx;
		/* #ifdef H5 */
		width: 100%;
		/* #endif */
        height: 350px;
        background-color: #f0f0f0;
    }

    .scrollview {
        flex: 1;
        padding: 10px;
    }

    .list-item {
        flex-direction: row;
        flex-wrap: nowrap;
        align-items: center;
        padding: 5px 0px;
    }

    .list-text {
        flex: 1;
    }

    .button {
        margin-top: 5px;
        margin-bottom: 5px;
    }
</style>
