为啥 OpenLayers-3 加载太多地图?
Posted
技术标签:
【中文标题】为啥 OpenLayers-3 加载太多地图?【英文标题】:Why does OpenLayers-3 load too much map?为什么 OpenLayers-3 加载太多地图? 【发布时间】:2015-01-21 21:29:06 【问题描述】:我正在尝试在网页中从我的地理服务器加载地图,当它加载时它几乎翻了一番。第一张地图是来自 geoserver 管理页面的预览,第二张是它在网页上拉起时的加载方式。
【问题讨论】:
我不明白你的问题是什么。您是否正在考虑不重复/包装世界? 是的,它正在扩展地图,所以每个大陆都有两个 【参考方案1】:我最终通过在图层中添加一些属性来解决这个问题,这是我的代码:
mapInit: function()
var _this = this;
this.map = new ol.Map(
target: 'mapdiv', //element to render in
interactions: ol.interaction.defaults(
shiftDragZoom: false,
altShiftDragRotate: false,
dragPan: false
),
controls: ol.control.defaults(
attributionOptions: (
collapsible: true
)
).extend([ new ol.control.ScaleLine() ]),
renderer: 'canvas',
layers: [
new ol.layer.Tile(
source: new ol.source.TileWMS(
url: 'http://***.**.**.***:8080/geoserver/Global/wms',
params: 'LAYERS': 'Global Map', 'TILED': true,
noWrap: true, //<----added this
wrapX: false //<----added this
),
//constrain the extent of the servable tiles to only 1 world's coordinates.
extent: [-20037508.34, -20037508.34, 20037508.34, 20037508.34] //<----added this
)
],
【讨论】:
你想和我们分享一个通用的,也兼容 3.1.1 吗?【参考方案2】:Openlayers 使用平铺系统,地图将在网络浏览器中不断重复,以确保持续的覆盖范围和填充屏幕/div 的无缝视图。专注于特定区域的最简单方法是使用缩放级别。
var map = new OpenLayers.Map("mapdiv");
map.setCenter(new OpenLayers.LonLat(yourLong, yourLat), zoomLevel);
上面的代码将以给定缩放级别作为 int 值以特定区域为中心。这里还有其他设置边界和缩放的方法:
http://dev.openlayers.org/docs/files/OpenLayers/BaseTypes/Bounds-js.html
【讨论】:
以上是关于为啥 OpenLayers-3 加载太多地图?的主要内容,如果未能解决你的问题,请参考以下文章
使用openlayers 3 在线加载天地图及GeoServer发布的地图
OpenLayers 3 - Bing 地图不会在 Windows 应用程序中加载