gpt4 book ai didi

javascript - Javascript+OpenLayers 中的侧边栏

转载 作者:行者123 更新时间:2023-11-28 17:43:29 25 4
gpt4 key购买 nike

我想在 map 一侧创建一个侧边栏来放置各种按钮。我选择了 ol-3 侧边栏 ( https://github.com/Turbo87/sidebar-v2 ),它可以工作,唯一的问题是侧边栏在任何 View (桌面或移动设备)中都没有与 map 对齐。请你帮助我好吗?我的代码(普通版本)是这样的:

enter image description here

<html>
<head>
<meta charset='utf-8'/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>.
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.1/js/tether.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js" type="text/javascript"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/openlayers/4.4.2/ol.js" type="text/javascript"></script>
<script src="js/ol3-sidebar.min.js" type="text/javascript"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="css/ol3-sidebar.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/openlayers/4.4.2/ol.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.1/css/tether.min.css">
</head>
<style>body {padding: 0;margin: 0;overflow: hidden;background-color: #ff9900;}</style>
<body>
<div class="container-fluid" id="index">
<div id="sidebar" class="sidebar collapsed" style= "max-width: 100%; height: auto;">
<div class="sidebar-tabs">
<ul role="tablist">
<li><a href="#a" role="tab">A</a></li>
<li><a href="#b" role="tab">B</a></li>
<li><a href="#c" role="tab">C</a></li>
</ul>
<ul role="tablist">
<li><a href="#settings" role="tab">Settings</a></li>
</ul>
</div>
<div class="sidebar-content">
<div class="sidebar-pane" id="a">
<h1 class="sidebar-header">a</h1>
<hr width="100%" size="8" align="center">
</div>
<div class="sidebar-pane" id="b">
<h1 class="sidebar-header">b</h1>
<hr width="100%" size="8" align="center">
</div>
<div class="sidebar-pane" id="c">
<h1 class="sidebar-header">c</h1>
<hr width="100%" size="8" align="center">
</div>
<div class="sidebar-pane" id="settings">
<h1 class="sidebar-header">Settings</h1>
<hr width="50%" size="8" align="center">
</div>
</div>
</div>
<div id="map" class="sidebar-map mymap" style="width: 100%; height: 85%;">
<script>
var layers = [
new ol.layer.Tile({source: new ol.source.OSM()})
];
var map = new ol.Map({
controls: ol.control.defaults({
attributionOptions: ({collapsible: false})
}).extend([
new ol.control.ZoomSlider(),
new ol.control.Rotate(),
new ol.control.OverviewMap(),
new ol.control.ScaleLine(),
new ol.control.FullScreen()
]),
interactions: ol.interaction.defaults().extend([
new ol.interaction.Select({condition: ol.events.condition.mouseMove})
]),
layers: layers,
target: 'map',
view: new ol.View({
center: [2687148, 4556999],
zoom: 7
})
});
var sidebar = new ol.control.Sidebar({element: 'sidebar', position: 'left'});
map.addControl(sidebar);
</script>
</div>
</div>
</body>

最佳答案

您可以尝试嵌入 sidebar map 内的 div分区:

<div id="map" class="sidebar-map mymap" style="width: 100%; height: 85%;">
<div id="sidebar" class="sidebar collapsed" style= "max-width: 100%; height: auto;">
...
</div>
</div>

它对我有用(使用 Openlayers 4.6.5 和 sidebar-v2)。唯一的问题是单击导航选项卡会将页面​​滚动到该元素。

编辑:最后一个问题可以通过添加感叹号轻松解决,即使用 <a href="#!...>而不是<a href="#...> (参见:How do I stop a web page from scrolling to the top when a link is clicked that triggers JavaScript?)

EDIT2:更好的是,添加 class="tab"向导航选项卡列表中的所有内容添加一个函数(因为您使用的是 JQuery):

$('.tab').click(function($e) {
$e.preventDefault();
});

关于javascript - Javascript+OpenLayers 中的侧边栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47374641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com