高德地图设置点标记和自定义信息窗口

效果图1,不加关闭信息窗口按钮


代码如下:

1.public/index.html页面里引入高德地图

 <script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=你申请的key"></script>

2.页面代码

<template>

    <div class="screebox mapview">

        <div id="mapContainer" style="width: 100%; height: calc(100vh - 140px);"></div>

    </div>

</template>

<script>

var map

export default {

    name: 'scree',

    components: {

    },

    computed: {},

    data() {

        return {

        }

    },

    watch: {},

    mounted() {

        this.initMap();

    },

    created() { },

    methods: {

        initMap() {

            let than = this

            // 初始化地图实例,设置中心点坐标和缩放级别

            map = new AMap.Map('mapContainer', {

                resizeEnable: true,

                center: [117.211941, 39.19778], // 中心点坐标(经度,纬度)

                zoom: 15 // 初始缩放级别

            });

            var markers = [{

                title: 'title1',

                icon: 'https://dingzhi.vipin.net.cn/uploads/store/comment/20250211/368ce949e1790d7fe5b25401ab746b1e.png',

                position: [117.211941, 39.19778]

            }, {

                title: 'title2',

                icon: 'https://dingzhi.vipin.net.cn/uploads/store/comment/20250211/20531171e5aaf7b277bda374b386d700.png',

                position: [117.209447, 39.195732]

            }, {

                title: 'title3',

                icon: 'https://dingzhi.vipin.net.cn/uploads/store/comment/20250210/b03609c36ec3e6072a09ec4276e4f625.png',

                position: [117.210525, 39.191866]

            }];

            markers.forEach(function (marker) {

                var markerbox = new AMap.Marker({

                    map: map,

                    icon: new AMap.Icon({

                        image: marker.icon,

                        size: new AMap.Size(52, 52), //图标大小

                        imageSize: new AMap.Size(26, 26)

                    }),

                    position: [marker.position[0], marker.position[1]],

                    offset: new AMap.Pixel(-13, -30)

                });

                var content = []

                var str = "<div>1:hhha</div>"

                var str2 = "<div>2:hhha</div>"

                content.push(str);

                content.push(str2);

                var infoWindow = new AMap.InfoWindow({

                    isCustom: true,  //使用自定义窗体

                    position: [marker.position[0], marker.position[1]],

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

                    content: than.createInfoWindow(marker.title, content)

                });

                markerbox.on('click', function () {

                    infoWindow.open(map);

                });

            });

        },

        //初始化信息窗口

        createInfoWindow(title, content) {

            var info = document.createElement("div");

            info.className = "dotclass";

            info.style.padding = '5px';

            // 定义顶部标题

            var top = document.createElement("div");

            var titleD = document.createElement("div");

            top.className = "topstyle";

            top.style.fontSize = '15px';

            titleD.innerHTML = title;

            top.appendChild(titleD);

            info.appendChild(top);

            // 定义中部内容

            var centrebox = document.createElement("div");

            centrebox.className = "centreBox";

            content.map(item => {

                var middle = document.createElement("div");

                middle.className = "info-middle";

                // middle.style.fontSize = '12px';

                middle.innerHTML = item;

                centrebox.appendChild(middle);

            })

            info.appendChild(centrebox);

            // 向下指示箭头

            var down = document.createElement("div");

            // down.style.fontSize = '15px';

            down.className = "downbox";

            down.innerHTML = '<div class="daosanjiao"></div>';

            info.appendChild(down);

            return info;

        },

    },

};

</script>

<style>

.mapview .downbox .daosanjiao {

    width: 0;

    height: 0;

    border-left: 5px solid transparent;

    border-right: 5px solid transparent;

    border-top: 12px solid #534b4b;

    margin: 0 auto;

}

.mapview .topstyle {

    background-color: #c7c7c7;

    padding: 2px 10px;

    font-size: 20px;

    color: #535151;

    min-width: 50px;

}

.mapview .dotclass {

    width: 200px;

    color: #00FFD4;

}

.mapview .centreBox{

    background: #d7d4d4;

    padding: 2px 3px;

}

</style>

<style scoped>

.screebox {

    width: 100%;

    min-height: calc(100vh - 140px);

    /* background-color: pink; */

}

</style>

效果2:加信息关闭按钮


代码:

<template>

    <div class="screebox mapview">

        <div id="mapContainer" style="width: 100%; height: calc(100vh - 140px);"></div>

    </div>

</template>

<script>

var map

export default {

    name: 'scree',

    components: {

    },

    computed: {},

    data() {

        return {

        }

    },

    watch: {},

    mounted() {

        this.initMap();

    },

    created() { },

    methods: {

        initMap() {

            let than = this

            // 初始化地图实例,设置中心点坐标和缩放级别

            map = new AMap.Map('mapContainer', {

                resizeEnable: true,

                center: [117.211941, 39.19778], // 中心点坐标(经度,纬度)

                zoom: 15 // 初始缩放级别

            });

            var markers = [{

                title: 'title1',

                icon: 'https://dingzhi.vipin.net.cn/uploads/store/comment/20250211/368ce949e1790d7fe5b25401ab746b1e.png',

                position: [117.211941, 39.19778]

            }, {

                title: 'title2',

                icon: 'https://dingzhi.vipin.net.cn/uploads/store/comment/20250211/20531171e5aaf7b277bda374b386d700.png',

                position: [117.209447, 39.195732]

            }, {

                title: 'title3',

                icon: 'https://dingzhi.vipin.net.cn/uploads/store/comment/20250210/b03609c36ec3e6072a09ec4276e4f625.png',

                position: [117.210525, 39.191866]

            }];

            markers.forEach(function (marker) {

                var markerbox = new AMap.Marker({

                    map: map,

                    icon: new AMap.Icon({

                        image: marker.icon,

                        size: new AMap.Size(52, 52), //图标大小

                        imageSize: new AMap.Size(26, 26)

                    }),

                    position: [marker.position[0], marker.position[1]],

                    offset: new AMap.Pixel(-13, -30)

                });

                var content = []

                var str = "<div>经纬度:" + marker.position + "</div>"

                var str2 = "<div>2:hhha</div>"

                content.push(str);

                content.push(str2);

                var infoWindow = new AMap.InfoWindow({

                    isCustom: true,  //使用自定义窗体

                    position: [marker.position[0], marker.position[1]],

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

                    content: than.createInfoWindow(marker.title, content, infoWindow)

                });

                markerbox.on('click', function () {

                    infoWindow.open(map);

                });

            });

        },

        //初始化信息窗口

        createInfoWindow(title, content, infoWindow) {

            let than = this

            var info = document.createElement("div");

            info.className = "dotclass";

            info.style.padding = '5px';

            // 定义顶部标题

            var top = document.createElement("div");

            top.className = "topstyle";

            top.style.fontSize = '15px';

            var titleD = document.createElement("div");

            titleD.innerHTML = title;

            var close = document.createElement("div"); //关闭信息窗口容器

            close.className = "closebox";

            close.innerHTML = '<img onclick="closeInfoWindowClick()"  src="https://dingzhi.vipin.net.cn/uploads/store/comment/20250211/e07db12a853e737b016f95726bfd9715.png" alt="">';

            titleD.appendChild(close);

            top.appendChild(titleD);

            info.appendChild(top);

            // 定义中部内容

            var centrebox = document.createElement("div");

            centrebox.className = "centreBox";

            content.map(item => {

                var middle = document.createElement("div");

                middle.className = "info-middle";

                // middle.style.fontSize = '12px';

                middle.innerHTML = item;

                centrebox.appendChild(middle);

            })

            info.appendChild(centrebox);

            // 向下指示箭头

            var down = document.createElement("div");

            // down.style.fontSize = '15px';

            down.className = "downbox";

            down.innerHTML = '<div class="daosanjiao"></div>';

            info.appendChild(down);

            const win = window

            win.closeInfoWindowClick = () => {

                // 关闭信息窗口方法

                // 调用methods里面的方法

                than.closeHalen()

            }

            return info;

        },

        closeHalen() {

            // 关闭信息窗口

            map.clearInfoWindow();

        }

    },

};

</script>

<style>

.mapview .downbox .daosanjiao {

    width: 0;

    height: 0;

    border-left: 5px solid transparent;

    border-right: 5px solid transparent;

    border-top: 12px solid #534b4b;

    margin: 0 auto;

}

.mapview .topstyle {

    background-color: #c7c7c7;

    padding: 2px 10px;

    font-size: 20px;

    color: #535151;

    min-width: 50px;

}

.mapview .closebox {

    float: right;

}

.mapview .closebox img {

    width: 16px;

    height: 16px;

}

.mapview .closebox img:hover {

    cursor: pointer;

}

.mapview .dotclass {

    width: 200px;

    color: #00FFD4;

}

.mapview .centreBox {

    background: #d7d4d4;

    padding: 2px 3px;

}

</style>

<style scoped>

.screebox {

    width: 100%;

    min-height: calc(100vh - 140px);

    /* background-color: pink; */

}

</style>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容