OpenLayers 4只获取用户在localhost上的位置

时间:2017-03-30 18:20:53

标签: javascript openlayers

因此,我正在使用OpenLayers 4并尝试获取用户位置以在地图上设置标记。在localhost上工作正常,它跟踪用户的位置并在地图上设置标记但是当我通过本地IP从另一台设备访问该网站时,它甚至不会要求许可使用GPS。

以下是代码:

function initMap(eId) {
        map = new ol.Map({
            target: eId,
            layers: [
                new ol.layer.Tile({
                    source: new ol.source.OSM()
                })
            ],
            controls: ol.control.defaults().extend([
                new app.generateGeoJSONControl()
            ]),
            view: new ol.View({
                center: ol.proj.fromLonLat([-47.88281816303313, -15.79413706965552]),
                zoom: 12
            })
        });
        map.on('singleclick', click, this);
        trackMe(map.getView());
    };

function trackMe(view) {
        var geolocation = new ol.Geolocation({
            tracking: true
        });
        geolocation.on('change:position', function (evt) {
            var coordinate = geolocation.getPosition();
            userLonLat = coordinate;
            setMarker({
                longitude: coordinate[0],
                latitude: coordinate[1],
                id: -1
            }, '/assets/marker-user.png', 1000);
        });
    };


function setMarker(ua, imageSrc, zIndex){
        var iconFeature = new ol.Feature({
            geometry: new ol.geom.Point(ol.proj.transform([parseFloat(ua.longitude), parseFloat(ua.latitude)], 'EPSG:4326', 'EPSG:3857')),
            data: ua,
        });
        iconFeature.setId(ua.id);
        var vectorSource = new ol.source.Vector({
            features: [iconFeature]
        });

        var iconStyle = new ol.style.Style({
            image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
                anchor: [0.5, 27],
                anchorXUnits: 'fraction',
                anchorYUnits: 'pixels',
                opacity: 1,
                src: imageSrc
            }))
        });

        var vectorLayer = new ol.layer.Vector({
            source: vectorSource,
            style: iconStyle
        });

        if(zIndex){
            vectorLayer.setZIndex(zIndex);
        }

        map.addLayer(vectorLayer);
    }

1 个答案:

答案 0 :(得分:1)

显然它与网站证书有关。由于我的网站没有证书,浏览器不允许它获取用户的位置。我尝试使用Chrome,Firefox,Edge和Safari,唯一一个让网站获得用户位置的人就是Edge。