小编Jos*_*mez的帖子

如何让openlayers 3变焦控制显示在右侧?

默认情况下,openlayers 3缩放控件位于左上角.我怎样才能将它移到右上角?进入选项时,API似乎返回断开的链接.

openlayers-3

8
推荐指数
2
解决办法
7540
查看次数

不能使用openlayers 3在正确的坐标处放置标记

我正在研究openlayers 3并希望实现一个搜索功能,它获取地点的名称并在地图上定位标记.我能够获得坐标但是当我想在地图上添加它的标记时,我总是得到不同的位置.输入位置的标记未放置在地图的实际坐标上.

这是我一直在工作的代码:

function addmarker(lat, long, pointerimgsrc){

    var iconFeature = new ol.Feature({      
        geometry: new ol.geom.Point(ol.proj.transform([lat, long], 'EPSG:4326', 'EPSG:3857')),
        name: 'NULL'
        });


    var iconStyle = new ol.style.Style({
        image: new ol.style.Icon(({
        anchor: [0.5, 46],
        anchorXUnits: 'fraction',
        anchorYUnits: 'pixels',
        opacity: 0.75,
        //src: 'data/icon.png'
        src: pointerimgsrc
        }))
    });

    iconFeature.setStyle(iconStyle);

    vectorSource = new ol.source.Vector({
        features: [iconFeature]
    });

    vectorLayer = new ol.layer.Vector({
        source: vectorSource
    });

    map.addLayer(vectorLayer);

}// END addmarkerr()
Run Code Online (Sandbox Code Playgroud)

我希望我已经清楚地解释了我的问题,期待找到解决方案.非常感谢您的时间和支持.

javascript openstreetmap openlayers-3

7
推荐指数
1
解决办法
2801
查看次数

OpenLayers:如何检测地图视图是否已完全加载?

我正在使用OpenLayers 3实现地图导出功能.

但是有一个问题:人们无法确定地图视图是否已完全加载或者是否缺少一些图块.

似乎没有这样的API或事件.最接近的是tileloadstart - tileloadend对.但OpenLayers异步加载切片,并且在切片实际加载之前,不会触发tileloadstart - 也就是说,在切片队列中排队的切片不会在实际加载之前触发该事件.

我可以检测到地图视图是否已完全加载?

openlayers-3

7
推荐指数
2
解决办法
1万
查看次数

6
推荐指数
2
解决办法
4616
查看次数

OpenLayers 3:地图模糊不清

当我将地图(相同的html,css,js)添加到不同的页面时,地图有时会模糊不清.不同的页面可能包含其他html,css和js.左侧的清晰图片位于第三方添加CSS的页面内.右边的那个没有别人的html,css和js.

我该如何解决这个问题?

锐利与模糊的比较

在检查细节时我注意到的一件事是第二个例子的画布尺寸要小得多.

锐利的地图宽度和高度是正确的 模糊的地图宽度和高度较小

编辑[固定!]:

我发现了查看ol.js源代码的问题.在控制台上,模糊图像具有map.frameState_.pixelRatio = 0.89(默认为window.devicePixelRatio),而清晰图像具有map.frameState_.pixelRatio = 1.如果我在初始化地图时设置pixelRatio = 1,则修复了问题:

var map = new ol.Map({pixelRatio: 1, ...});
Run Code Online (Sandbox Code Playgroud)

事实证明,如果你的互联网浏览器放大(例如,90%),window.devicePixelRatio将会改变,这会导致模糊.但是,当您缩放回100%时,地图仍会缩放,直到您刷新页面.

openlayers-3

6
推荐指数
1
解决办法
1922
查看次数

OpenLayers 3:如何设置矢量要素的填充样式

我正在尝试设置矢量图层的单独特征的填充颜色.使用下面的代码,我想我将能够遍历这些功能并单独设置它们的填充样式,但是会出现一个奇怪的问题.如果没有setStyle函数,则会在控制台中记录功能的各种属性.id,名称和几何.大约有5个左右的功能被记录下来.基本上就像

room1
room2
room3
room4
room5
Run Code Online (Sandbox Code Playgroud)

每个下面的额外数据(id,几何)

但是当我添加用于设置功能填充的行时,我遇到了一个奇怪的问题.它似乎将循环挂在第一个功能上,并且控制台填满了该功能属性的日志,例如:

room1
room1
room1
room1
room1
room1
room1
Run Code Online (Sandbox Code Playgroud)

很长一段时间,到达firefox日志限制的点,它告诉我没有显示2000条目!

但从好的方面来说,第一个功能实际上确实改变了它的填充颜色!所以我认为我使用的代码行至少是一半!但肯定存在一些严重错误.

代码:

vector.getSource().on('change', function (evt) {
    var source = evt.target;
    if (source.getState() === 'ready') {

        var features = vector.getSource().getFeatures()
        for (var k in features) {
            console.log(features[k].getProperties()['name']);
            console.log(features[k].getProperties()['id']);
            console.log(features[k].getGeometry()['n']);
            features[k].setStyle(new ol.style.Style({fill: fill}));
        }

    }        
});
Run Code Online (Sandbox Code Playgroud)

我真的不太了解OL3或造型功能,我通过大量的试验和猜测来达到这个目的.任何人都能指出我正确的方向吗?

javascript kml openlayers-3

6
推荐指数
1
解决办法
1万
查看次数

三星平板电脑10.1的屏幕尺寸

我根植了我的三星平板电脑10.1(Android 4.1.2)并使用AutoMacro进行自动触摸.但AutoMacro的屏幕尺寸错误.预期值为1280 X 800,但新值为4096 X 4096.我在其他自动触摸软件中遇到同样的问题.

我已经多次重置我的平板电脑,但这个问题仍然存在.

我用这个命令getevent -p来显示这条消息:

add device 7: /dev/input/event1
  name:     "sec_touchscreen"
  events:
    ABS (0003): 002f  : value 0, min 0, max 9, fuzz 0, flat 0, resolution 0
                0030  : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
                0035  : value 0, min 0, max 4095, fuzz 0, flat 0, resolution 0
                0036  : value 0, min 0, max 4095, fuzz 0, flat 0, resolution 0
                0039  : value 0, …
Run Code Online (Sandbox Code Playgroud)

android screen ui-automation samsung-mobile

6
推荐指数
1
解决办法
557
查看次数

从openlayers 3层获取EPSG代码

这是我在openlayers 3.9.0中的OSM层.

var layer = new ol.layer.Tile({
    source: new ol.source.OSM(

        {
        attributions: [
          new ol.Attribution({
            html: 'All maps © ' +
                '<a href="http://www.opencyclemap.org/">OpenCycleMap</a>'
          })
        ]
      }             

    ),
    opacity: 0.8,
    brightness: 0.8
});
Run Code Online (Sandbox Code Playgroud)

现在我想得到EPSG code图层来检查它,所以我喜欢

var a = layer.getProjection().getCode();
alert(a);
Run Code Online (Sandbox Code Playgroud)

我得到了错误layer.getProjection is not a function.

我错过了什么?

请帮我

openlayers-3

6
推荐指数
1
解决办法
3158
查看次数

打开图层3搜索功能以查找地图位置?

将搜索功能实现到OL3映射的最佳方法是什么?

我需要一个搜索输入,它会在搜索时向我显示一些选项,然后平移和缩放到特定的搜索词.非常像谷歌地图.

我需要将谷歌地图集成到我的OL3中吗?

search google-maps openlayers-3

6
推荐指数
1
解决办法
9051
查看次数

ol.overlay未正确设置位置

我正在使用openlayer 3.9.0.我有以下代码,我必须在地图上绘制一些叠加.

这些叠加层即将到来,但不是精确的坐标.但是,只要我点击地图,这些叠加移动到正确的位置.

为了克服这一点,我试图在隐藏的div上点击事件,但它不起作用.只有当我点击地图的某个地方,然后只有这些anamoly去tpo正确的位置.

for(var anamolyIndex=0; anamolyIndex< self.anamolyes.array.length ; anamolyIndex++)
            {                       
                tmpAnamolyObject = self.anamolyes.array[anamolyIndex];
                elem = document.getElementById(tmpAnamolyObject.coordinates);
                coordinate = tmpAnamolyObject.coordinates.split(",");
                longitude = parseFloat(coordinate[0]);
                lattitude = parseFloat(coordinate[1]);
                position = ol.proj.transform([longitude, lattitude],'EPSG:4326', 'EPSG:3857');                  
                popup = new ol.Overlay({
                    //position: position,
                    element: elem,
                    stopEvent:true,
                    positioning : 'center-center'
                });
                tmpAnamolyObject.type = "ANAMOLY";
                popup['identity'] = tmpAnamolyObject;
                elem.addEventListener('click', function() {
                    var coordinates = this.getAttribute('id');
                    self.send('onAnamolyClick',coordinates);
                });
                popup.setPosition(position);
                self.map.addOverlay(popup);                 

            }
Run Code Online (Sandbox Code Playgroud)

openlayers-3

6
推荐指数
0
解决办法
828
查看次数