Mapbox 描述框的地图样式

2023-12-27

我是新手,正在研究他的前端技能,我正在设计自己的网站来学习。我正在尝试使用 Mapbox API 实现地图,但无法获取我在地图中使用的描述框的样式。

链接到我的网站 http://rohanchhabra.in/

地图位于底部。现在我已经成功在地图上放置了一个隐藏的描述框。单击地图上的标记时,隐藏属性将被删除,单击地图时,隐藏属性将再次添加回来。

map.css

#map {
    width:100%;
    height: 500px;
}

pre#description{
    position: relative;
    top: -100px;
    left: 20px;
    padding:5px 10px;
    background: rgba(0,0,0,0.5);
    color: #fff;
    font-size: 11px;
    line-height: 18px;
    border-radius: 5px;
    max-width: 25%;
    overflow-x: hidden;
    overflow-y: visible; 
}

map.js

L.mapbox.accessToken = 'pk.eyJ1Ijoicm9oYW4wNzkzIiwiYSI6IjhFeGVzVzgifQ.MQBzoHJmjH19bXDW0b8nKQ';
var map = L.mapbox.map('map', 'examples.map-i86nkdio')
    .setView([30, 60])
    .on('click', function(){
        $("#description").addClass('hidden');
    });

L.marker([28.612896, 77.177275], {
    icon: L.mapbox.marker.icon({
        'marker-size': 'large',
        'marker-symbol': 'warehouse',
        'marker-color': '#2880CA'
    }),
    title: 'My Location'
})
.on('click', function(){
    $("#description").removeClass('hidden').empty().append('My Location');
})
.addTo(map);

L.marker([51.081482, 10.300311], {
    icon: L.mapbox.marker.icon({
        'marker-size': 'large',
        'marker-symbol': 'circle-stroked',
        'marker-color': '#74DF00'
    }),
    title: 'Social Accounting System'
})
.on('click', function(){
    $("#description").removeClass('hidden')
        .empty()
        .append('Social Accounting System developed using Laravel + Bootstrap.Project includes different user roles performing a variety of operations such as transferring commodities and selling them on the market');
})
.addTo(map);

L.marker([22.281385, 114.171317], {
    icon: L.mapbox.marker.icon({
        'marker-size': 'large',
        'marker-symbol': 'circle-stroked',
        'marker-color': '#74DF00'
    }),
    title: 'Social Accounting System'
})
.on('click', function(){
    $("#description").removeClass('hidden')
        .empty()
        .append('AngulAir was a demo project developed to show basic CRUD operations performed on the front end using AngularJS');
})
.addTo(map);

map.fitBounds([
    [22.281385, 114.171317],
    [51.081482, 10.300311]
]);

问题是我不太擅长 CSS,我试图将描述框放置在右上角的左上角。我已成功将其放置在左下角,但每当该框出现时,地图底部也会出现一个空白。

除此之外,盒子上有一个水平滚动条,但我想要一个垂直滚动条。所以我做了overflow-x: hidden and overflow-y: visible。水平滚动现在已关闭,但我需要将文本换行为垂直滚动。

我还想我会用max-width: 25%以便它在所有视图端口上都能响应。有一个更好的方法吗?

如何完成这些任务?


为什么不使用默认的控制层并创建自定义的L.控制 http://leafletjs.com/reference.html#icontrol?这样做,定位就已经为您处理好了:

JS:

var MyCustomControl = L.Control.extend({
    options: {
        // Default control position
        position: 'bottomleft'
    },
    onAdd: function (map) {
        // Create a container with classname and return it
        return L.DomUtil.create('div', 'my-custom-control');
    },
    setContent: function (content) {
        // Set the innerHTML of the container
        this.getContainer().innerHTML = content;
    }
});

// Assign to a variable so you can use it later and add it to your map
var myCustomControl =  new MyCustomControl().addTo(map);

现在添加一些样式,注意:empty伪选择器,如果容器为空,它将隐藏容器。

CSS:

.my-custom-control {
    padding:5px 10px;
    background: rgba(0,0,0,0.5);
    color: #fff;
    font-size: 11px;
    line-height: 18px;
    border-radius: 5px;
}

.my-custom-control:empty {
    display: none;
}

现在您可以在点击处理程序中使用它:

// Set content on a marker click
marker.on('click', function () {
    myCustomControl.setContent('My awesome content');
});

// Remove content on map click
map.on('click', function () {
    myCustomControl.setContent('');
});

这是 Plunker 上的一个工作示例:http://plnkr.co/edit/wrlC7AAHLBWsDgzk8PRw?p=preview http://plnkr.co/edit/wrlC7AAHLBWsDgzk8PRw?p=preview

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mapbox 描述框的地图样式 的相关文章

  • 如何在 CSS 中将子元素居中,即使它比父元素大?

    我想创建一个 css 类 以便可以将 div 放置在其父级的中心 我正在使用的代码是 centered position absolute margin auto bottom 0px left 0px top 0px right 0px
  • Tailwind CSS:“outline”类不存在。但这不是自定义样式,而是框架类

    在一个新项目中 我得到了奇怪的行为 除了大纲和相关内容之外 一切都按预期进行 https tailwindcss com docs outline style https tailwindcss com docs outline style
  • HTML5 Audio Element 无法在 IOS 11 设备上的 safari 中播放 mp3 直播

    我是一家广播公司的网络开发人员 自 iOS 11 发布以来 我们收到了一些用户投诉 称我们的音频直播流无法再在 IOS 11 设备上播放 为了将流嵌入我们的网站 我们使用 HTML5 AudioElement 在 iOS 11 的 iPho
  • 如何在 vuejs 中防止/停止点击传播

    我有一个递归列表 树 每个元素都有一个 click sayHello el id 现在的问题是 因为它是一个嵌套列表 例如 list element 0 01 list el 1 01 list el 2 01 list el 1 02 l
  • 使用 AngularJS $resource 进行 jsonp 请求

    我在 AngularJS 中定义了以下 2 个服务 两者都应该返回 JSONP 因为我正在进行跨域请求 服务A angular module ServiceA ngResource factory A function resource r
  • 为什么 Number.isNaN() 对字符串返回 false?

    据我的理解NaN代表Not A Number Strings不是绝对的Numbers因此我希望下面的代码返回true对于字符串 然而 事实并非如此 console log Number isNaN Stack Overflow 有人可以澄清
  • 如何查明在 Chrome 控制台中按下按钮时会调用哪些函数?

    我正在尝试自学 Google Closure javascript 库 我正在检查 TreeControl UI 小部件 如何使用Chrome控制台分析当我点击下面演示中的 剪切 按钮时运行了哪些功能 例如 我可以为此设置一个断点吗 我尝试
  • 将 JSON 字符串传递给 Django 模板

    我一直在用头撞墙 试图找出为什么我无法将从 Django 模型生成的 JSON 字符串传递到模板的 javascript 静态文件中 事实证明 问题不在模型级别 使用serializers serialize 在脚本本身中放入相同的字符串将
  • 是否可以全局文本对齐表列而不在每行中指定类?

    想知道提高效率的最佳方法是什么 也许使用 jQuery 我可以接受不兼容 ie7 的解决方案 如果需要的话 即使缺乏对 ie8 的支持也可以 table th td class cal center td td left td td cla
  • 如何使 Meteor 上的服务器可以访问文本文件

    我很惊讶我无法在这里搜索我的答案 似乎没有其他人遇到这个问题 当您运行meteor服务时 js html等被打包在 meteor local build文件夹中 但它似乎排除了不是js或html的内容 我有一个名为 magicsets 的文
  • 如何在纯 HTML 页面中返回特定的 HTTP 状态代码

    Google 建议当网站暂时不可用时返回 503 HTTP 响应 我有一些纯 HTML 网站 如何在纯 HTML 网站中返回 503 状态 我使用的是带有 Apache 的 Linux 机器 您必须在服务器上而不是在 HTML 文件中设置状
  • EaselJS Alpha 遮罩滤镜

    我对 Canvas 还很陌生 我一直在尝试将图像颠倒过来EaselJS Alpha 蒙版 http www createjs com demos easeljs alphamaskreveal示例 以便初始图像清晰 并且您可以paint是模
  • 如何实现 chromecast 对 html5 播放器的支持

    我使用js和html5设计了一个具有一些自定义功能的html5播放器 现在我需要在html5播放器上添加chromecast选项 例如https raw githubusercontent com kim company videojs c
  • 在成功回调之前修改 JSONP 结果

    我想从外部服务加载一些 JSON 数据 然而 它提供 foo bar useful 而我真正关心的是 有用 的部分 我需要将那部分传递给success打回来 我正在尝试使用Deferred一次从多个数据源加载 类似this https st
  • 掩码输入数字 - 百分比

    如何通过 jQuery 创建具有百分比的数字掩码输入 我是否让输入仅接受三个数字 并在用户完成输入时在数字后添加百分号 keyup 我不使用插件 例子 1 Or 30 Or 99 Or 100 Or 200
  • 如何控制谷歌地图标记的不透明度

    我需要根据时间使一些标记半透明 有什么方法可以控制标记的 CSS 不透明度吗 或者是否可以可靠地找出标记的 DOM 元素 我使用 Google 地图 API v3 标记的不透明度可以设置为marker setOptions opacity
  • 在 Nest.js 中发送之前如何格式化响应?

    我按照文档进行操作 并能够添加用于响应映射的拦截器 我想要一致的 json 格式输出作为响应 我怎样才能用拦截器或其他比这种方法更好的方法来实现这一点 statusCode 201 message Custom Dynamic Messag
  • ExtJS:简单表单忽略 formBind

    我有一个小问题让我发疯了好几天 我有一个表单面板 Ext define EC view PasswordPanel extend Ext form Panel alias widget pwdpanel bodyPadding 15 ini
  • 显示对象内容 - JS/jQuery

    With this data events 返回 object Object 我需要看看里面到底发生了什么 我找到了这个 var Finder each this data events function i n Finder Name i
  • TypeScript 中 C# 类虚拟成员的等效项

    因此 在 C 中 当我创建模型类和延迟加载内容时 我会执行以下操作 public int User ID get set public int Dept ID get set 然后在我的班级稍远一点的地方 我像这样弹出我的虚拟 public

随机推荐