gpt4 book ai didi

javascript - 缩放(中心) map 到 OpenLayers 3 中的标记

转载 作者:行者123 更新时间:2023-11-29 16:49:40 25 4
gpt4 key购买 nike


我的 OpenLayer3 map 有问题。当我向 map 添加一些标记时,我想调整 map 大小并更改缩放比例,以便在屏幕上设置所有标记。

我的代码如下:

/** CREATE MARKERS **/
for (var i=0;i<1;i++){
var iconFeature = new ol.Feature({
geometry: new
ol.geom.Point(ol.proj.transform([Math.random()*360-180, Math.random()*180-90], 'EPSG:4326', 'EPSG:3857'))
});
vectorSource.addFeature(iconFeature);
var newBound = ol.Bounds();
newBound.extend([Math.random()*360-180, Math.random()*180-90]);
map.zoomToExtent(newBound);
}

/** MARKER STYLE **/
var iconStyle = [
new ol.style.Style({
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
anchor: [0.5, 46],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
opacity: 1,
scale: 0.07,
src: 'marker.png'
}))
})
];

/** ADD LAYER VECTOR **/
var vectorLayer = new ol.layer.Vector({
source: vectorSource,
style: iconStyle
});


/** INIT MAP **/
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.MapQuest({layer: 'sat'})
}),
vectorLayer
],
overlays: [overlay],
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 2
})
});

有没有办法将 map 缩放到标记?

最佳答案

您的逻辑和一些 OL 引用文献中存在一些错误。首先,您应该创建一个包含所有标记的 ol.Extent。然后使用 map 的 View 来适应它。

// create ten random markers
for (var i = 0; i < 10; i++) {
var point = new ol.geom.Point(ol.proj.transform([Math.random() * 50, Math.random() * 50], 'EPSG:4326', 'EPSG:3857'));
var iconFeature = new ol.Feature({
geometry: point
});

vectorSource.addFeature(iconFeature);
}


// make the map's view to zoom and pan enough to display all the points
map.getView().fit(vectorSource.getExtent(), map.getSize());

这是一个笨蛋:

https://plnkr.co/edit/KVL14vdOSqJBxZz44s3u?p=preview

关于javascript - 缩放(中心) map 到 OpenLayers 3 中的标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37383802/

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