页面1、mapbox添加自定义图片marker标记点和气泡弹窗

实现功能:自定义mapbox地图标记点的图标样式,换成自己的图片,并在点击图片的时候,弹出自定义的气泡弹窗。

HTML源码在最后面哦,复制就能直接使用(accessToken要换成自己的才行哦)

效果图:

 【实现步骤】

1、新建HTML页面,引入mapbox-gl.css和mapbox-gl.js

        <link href="https://api.mapbox.com/mapbox-gl-js/v2.15.0/mapbox-gl.css" rel="stylesheet">
        <script src="https://api.mapbox.com/mapbox-gl-js/v2.15.0/mapbox-gl.js"></script>

2、创建一个地图容器,用来放地图:

<div id="map"></div>

3、在js里创建一个地图:

mapboxgl.accessToken =  ''; //这里换成你自己的就行了
       
           //创建地图
            const map = new mapboxgl.Map({
                container: 'map',
                style: 'mapbox://styles/mapbox/streets-v12',
                center: [-0.1048690838691802, 51.52323567974473], //中心点,伦敦法灵顿
                zoom: 14
            });

4、根据定义的图标数组,在map的load方法里,遍历将标记点添加到地图上,并添加气泡弹窗:

map.on('load', () => {
                //添加自定义标记点
                for (const item of geojson) {

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要在 mapbox-gl 中为不同的标记添加弹窗,需要执行以下步骤: 1. 创建一个地图并添加标记,每个标记都应该有一个唯一的 ID。 ```javascript // 创建地图 var map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/streets-v11', center: [-98.5795, 39.8283], zoom: 3 }); // 添加标记 map.on('load', function() { map.addSource('places', { type: 'geojson', data: { type: 'FeatureCollection', features: [ { type: 'Feature', properties: { id: 'marker1', title: 'New York City' }, geometry: { type: 'Point', coordinates: [-74.0059, 40.7128] } }, { type: 'Feature', properties: { id: 'marker2', title: 'San Francisco' }, geometry: { type: 'Point', coordinates: [-122.4194, 37.7749] } } ] } }); map.addLayer({ id: 'places', type: 'circle', source: 'places', paint: { 'circle-radius': 10, 'circle-color': '#3887be' } }); }); ``` 2. 创建一个弹窗,将其添加到地图上但保持隐藏状态。 ```javascript var popup = new mapboxgl.Popup({ closeButton: false, closeOnClick: false }); // 在地图上添加弹窗 map.on('mouseenter', 'places', function(e) { // 显示弹窗 map.getCanvas().style.cursor = 'pointer'; var coordinates = e.features[0].geometry.coordinates.slice(); var title = e.features[0].properties.title; // 设置弹窗内容 popup.setLngLat(coordinates) .setHTML('<h3>' + title + '</h3>') .addTo(map); }); map.on('mouseleave', 'places', function() { // 隐藏弹窗 map.getCanvas().style.cursor = ''; popup.remove(); }); ``` 3. 在上述步骤中,我们将弹窗添加到地图上并在鼠标进入标记时显示它。现在我们需要在鼠标标记时显示它。 ```javascript map.on('click', 'places', function(e) { var coordinates = e.features[0].geometry.coordinates.slice(); var title = e.features[0].properties.title; // 设置弹窗内容 popup.setLngLat(coordinates) .setHTML('<h3>' + title + '</h3>') .addTo(map); }); ``` 这些步骤将为每个标记创建一个弹窗,并在鼠标进入或标记时显示它。您可以根据需要自定义弹窗样式和内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值