openlayers-6 - OpenLayers 6.5.0:放大时功能消失
问题描述
放大时,所有功能都会消失。这些特征位于反子午线的两侧。为了能够使用修改交互,某些要素的地理长度超过了 180 度的值。
欢迎任何帮助!
var coords = [
[32100000, -7900000],
[28900000, -9700000],
[26300000, -10000000],
[23800000, -9300000],
[20400000, -6500000]
];
var osmLayer = new ol.layer.Tile({
source: new ol.source.OSM()
});
var featuresLayer = new ol.layer.Vector({
source: new ol.source.Vector()
});
var map = new ol.Map({
layers: [osmLayer, featuresLayer],
target: document.getElementById("map")
});
var s = featuresLayer.getSource();
for (var i = 0; i < coords.length; i++) {
s.addFeature(new ol.Feature({
geometry: new ol.geom.Point(coords[i])
}));
}
map.setView(new ol.View({
center: coords[parseInt(coords.length / 2)],
zoom: 3,
maxZoom: 18,
minZoom: 3
}));
html,
body,
.map {
width: 100%;
height: 100%;
overflow: hidden;
}
<link href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.5.0/css/ol.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.5.0/build/ol.js"></script>
<div id="map" class="map"></div>
解决方案
根据@Mike 的评论,如果您的坐标超出正常世界,请使用 new ol.source.Vector({wrapX: false})
var featuresLayer = new ol.layer.Vector({
source: new ol.source.Vector({wrapX: false})
});
更新的代码片段:
var coords = [
[32100000, -7900000],
[28900000, -9700000],
[26300000, -10000000],
[23800000, -9300000],
[20400000, -6500000]
];
var osmLayer = new ol.layer.Tile({
source: new ol.source.OSM()
});
var featuresLayer = new ol.layer.Vector({
source: new ol.source.Vector({wrapX: false})
});
var map = new ol.Map({
layers: [osmLayer, featuresLayer],
target: document.getElementById("map")
});
var s = featuresLayer.getSource();
for (var i = 0; i < coords.length; i++) {
s.addFeature(new ol.Feature({
geometry: new ol.geom.Point(coords[i])
}));
}
map.setView(new ol.View({
center: coords[parseInt(coords.length / 2)],
zoom: 3,
maxZoom: 18,
minZoom: 3
}));
html,
body,
.map {
width: 100%;
height: 100%;
overflow: hidden;
}
<link href="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.5.0/css/ol.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.5.0/build/ol.js"></script>
<div id="map" class="map"></div>
推荐阅读
- java - 语法错误(代码 1):,编译时:INSERT INTO rest_tables(0,TABLENUMBER) VALUES (?,?)
- c++ - 无锁原子在实践中是无地址的吗?
- c - C -(malloc、calloc 或静态)从函数返回的 2d 字符数组
- excel-formula - 如何更正 Excel 公式错误
- python-3.x - pd.to_numeric 不工作
- unit-testing - JUnit 参数化 @BeforeAll
- windows - 如何在文件中保存/加载带有环境变量空格的字符串值?
- python - 如何比较数据并从 pandas 的 multiIndex 数据框中选择 TOP 2?
- python - Spyder环境和Anaconda提示指向不同的解释器
- javascript - 从 JavaScript REGEX 获取分组数组