美文网首页
vue 高德地图 只能再矢量图形上选择坐标

vue 高德地图 只能再矢量图形上选择坐标

作者: 轩_7ca0 | 来源:发表于2021-01-19 18:09 被阅读0次

    vue 高德地图 只能再矢量图形上选择坐标

    效果图

    直接上代码:

    <template>

        <div id="outer-box">

            <div style="width: 100%;height: 300px" id="container"></div>

        </div>

    </template>

    <script>

        // eslint-disable-next-line

        import AMap from "AMap";

        var map;

        export default {

            name: "canteensignamap",

            props: {

                schoolcoordinate: {

                    type: [String, Number, Array]

                    //type: Number

                },

                coordinate: {

                    type: [String, Number, Array]

                    //type: Number

                },

                address: {

                    type: [String, Number, Array]

                }

            },

            watch: {

                //箭头学校坐标

                schoolcoordinate(val) {

                    let that = this;

                    if(val){

                        //绘制圆形遮盖物

                        that.mapcircle(val)

                    }else{

                        //初始化地图

                        that.init()

                    }

                    // 食堂坐标存在 渲染坐标点位

                    if(that.coordinate){

                            that.inits()

                    }

                },

            },

            data() {

                return {

                    ruleForm: {

                        addr: "",

                        long: "",

                        lat: "",

                    },

                    map:{},

                    geocoder:{},

                    marker:'',

                    infoWindow:'',

                    circle:''

                };

            },

            mounted: function() {

                this.init();

            },

            methods: {

                //初始化地图定义地图参数

                init() {

                    let that = this;

                    // let geocoder, marker;

                    that.map = new AMap.Map("container", {

                        resizeEnable: true,

                        // center: [116.433322, 39.900256],

                        zoom: 14,

                        searchOption: {

                            city: '襄阳市',

                            citylimit: true

                        },

                    });

                that.marker = new AMap.Marker();

                that.infoWindow = new AMap.InfoWindow({

                        offset: new AMap.Pixel(0, -20)

                    });

                AMap.plugin("AMap.Geocoder", function() {

                        that.geocoder = new AMap.Geocoder({

                            radius: 1000,

                            extensions: "all"

                        });

                });

                //地图点击事件

                that.map.on("click", function(e) {

                    that.$message.error('请在圆形范围内容点选坐标');

                    // var lnglatXY = [e.lnglat.getLng(), e.lnglat.getLat()];

                    // that.marker.setMap(that.map);

                    // that.marker.setPosition(lnglatXY);

                    // that.regeocoder(lnglatXY, that);

                    // 获取经纬度

                });

                },

                //绘制食堂点位

                inits() {

                    let that = this;

                    if (that.coordinate) {

                        that.marker.setMap(that.map);

                        that.marker.setPosition(that.coordinate.split(','));

                        that.map.setCenter(that.marker.getPosition());

                        that.map.setFitView(that.marker);

                    }

                },

                //根据经纬度获取地址并创建点位

                regeocoder(lnglatXY, that) {

                            that.geocoder.getAddress(lnglatXY, function(status, result) {

                                if (status === "complete" && result.info === "OK") {

                                    var address = result.regeocode.formattedAddress;

                                    that.ruleForm.addr = address;

                                    var obj = {

                                        address: address,

                                        coordinate: lnglatXY.toString()

                                    }

                                    //返回父组件数据

                                    that.$emit('handlerJump', obj)

                                }

                            });

                            if (!that.marker) {

                                that.marker = new AMap.Marker();

                                that.map.add(that.marker);

                            }

                            that.marker.setPosition(lnglatXY);

                            that.map.setFitView(that.marker);

                },

                //根据学校坐标绘制圆形遮盖物

                mapcircle(val){

                    let that = this;

                    that.circle = new AMap.Circle({

                                center: val.split(','),

                                radius: 500, //半径

                                strokeColor: "#FF33FF", 

                                strokeOpacity: 1,

                                strokeOpacity: 0.4,

                                fillOpacity: 0.1,

                                strokeDasharray: [0, 0], 

                                fillColor: '#1791fc',

                                zIndex: 10,

                            })

                            that.circle.setMap(that.map)

                    //遮盖物添加点击创建点位坐标

                    that.circle.on("click", function(e) {

                        var lnglatXY = [e.lnglat.getLng(), e.lnglat.getLat()];

                        that.marker.setMap(that.map);

                        that.marker.setPosition(lnglatXY);

                        that.regeocoder(lnglatXY, that);

                        // 获取经纬度

                    });

                    // 缩放地图到合适的视野级别

                    that.map.setFitView([ that.circle ])

                },

            }

        };

    </script>

    <style>

        #container {

            width: 100%;

            height: 100%;

            margin: 0px;

            font-size: 13px;

        }

        #pickerBox {

            position: absolute;

            z-index: 9999;

            top: 10px;

            left: 20px;

            width: 300px;

        }

        #pickerInput {

            width: 200px;

            padding: 5px 5px;

        }

        #poiInfo {

            background: #fff;

        }

        .amap_lib_placeSearch .poibox.highlight {

            background-color: #CAE1FF;

        }

        .amap_lib_placeSearch .poi-more {

            display: none !important;

        }

    </style>

    相关文章

      网友评论

          本文标题:vue 高德地图 只能再矢量图形上选择坐标

          本文链接:https://www.haomeiwen.com/subject/etdczktx.html