因此,我正在使用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);
}
答案 0 :(得分:1)
显然它与网站证书有关。由于我的网站没有证书,浏览器不允许它获取用户的位置。我尝试使用Chrome,Firefox,Edge和Safari,唯一一个让网站获得用户位置的人就是Edge。