如何在 Openlayer 3 的图层中添加自定义 Html dom 元素
How to add Custom Html dom element in layers of Openlayer 3
我用过 Google api 叠加视图。我能够使用像素值在 latlng 位置添加带有 html div 元素的自定义叠加层。
USGSOverlay.prototype.draw = function() {
var overlayProjection = this.getProjection();
var sw = overlayProjection.fromLatLngToDivPixel(this.bounds_.getSouthWest());
var ne = overlayProjection.fromLatLngToDivPixel(this.bounds_.getNorthEast());
var div = this.div_;
div.style.left = sw.x + 'px';
div.style.top = ne.y + 'px';
div.style.width = (ne.x - sw.x) + 'px';
div.style.height = (sw.y - ne.y) + 'px';
};
现在我正在使用 OpenLayer 3。是否有任何选项可以使用像素值在特定位置添加自定义 div 元素(如标记)。每次放大或缩小地图时,我都可以找到像素位置并更新 div 元素的顶部和左侧,使其看起来位于正确的 position.Is 处,这有可能在 OpenLayer3.
如果你想在 ol3 的特定位置显示纯 HTML,请使用 ol.Overlay
。参见ol3 overlay example。您可以控制纯 HTML 中的内容和 CSS.
中的样式
// Vienna marker
var marker = new ol.Overlay({
position: pos,
positioning: 'center-center',
element: document.getElementById('marker'),
stopEvent: false
});
map.addOverlay(marker);
如果您必须对 多个位置 执行此操作,假设超过 10 个,并且您只需要显示某种标记,那么我建议使用 ol.layer.Vector
而不是使用适当的样式对象。参见ol3 icon example。您可以使用任何图像作为标记。您还可以控制它的定位。
var iconStyle = new ol.style.Style({
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
anchor: [0.5, 46],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
src: 'https://openlayers.org/en/v3.20.1/examples/data/icon.png'
}))
});
我用过 Google api 叠加视图。我能够使用像素值在 latlng 位置添加带有 html div 元素的自定义叠加层。
USGSOverlay.prototype.draw = function() {
var overlayProjection = this.getProjection();
var sw = overlayProjection.fromLatLngToDivPixel(this.bounds_.getSouthWest());
var ne = overlayProjection.fromLatLngToDivPixel(this.bounds_.getNorthEast());
var div = this.div_;
div.style.left = sw.x + 'px';
div.style.top = ne.y + 'px';
div.style.width = (ne.x - sw.x) + 'px';
div.style.height = (sw.y - ne.y) + 'px';
};
现在我正在使用 OpenLayer 3。是否有任何选项可以使用像素值在特定位置添加自定义 div 元素(如标记)。每次放大或缩小地图时,我都可以找到像素位置并更新 div 元素的顶部和左侧,使其看起来位于正确的 position.Is 处,这有可能在 OpenLayer3.
如果你想在 ol3 的特定位置显示纯 HTML,请使用 ol.Overlay
。参见ol3 overlay example。您可以控制纯 HTML 中的内容和 CSS.
// Vienna marker
var marker = new ol.Overlay({
position: pos,
positioning: 'center-center',
element: document.getElementById('marker'),
stopEvent: false
});
map.addOverlay(marker);
如果您必须对 多个位置 执行此操作,假设超过 10 个,并且您只需要显示某种标记,那么我建议使用 ol.layer.Vector
而不是使用适当的样式对象。参见ol3 icon example。您可以使用任何图像作为标记。您还可以控制它的定位。
var iconStyle = new ol.style.Style({
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
anchor: [0.5, 46],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
src: 'https://openlayers.org/en/v3.20.1/examples/data/icon.png'
}))
});