因此,我正在使用 OpenLayers 4 并尝试获取用户位置以在 map 上设置标记。在本地主机上,它工作正常,它跟踪用户的位置并在 map 上设置标记,但是当我从另一台设备通过本地 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);
}
显然与网站证书有关。由于我的网站没有证书,浏览器不允许它获取用户的位置。我尝试过 Chrome、Firefox、Edge 和 Safari,唯一能让网站获取用户位置的是 Edge。
我是一名优秀的程序员,十分优秀!