Openlayers4中图片填充的实现

概述

本文讲述如何在Openlayers实现面状要素的图片填充。

实现后

面要素的图片填充

实现代码

var bounds = [73.4510046356223, 18.1632471876417,
    134.976797646506, 53.5319431522236];
var projection = new ol.proj.Projection({
    code: 'EPSG:4326',
    units: 'degrees'
});
$.get("data/province.geojson", null, function (result) {
    var features = (new ol.format.GeoJSON()).readFeatures(result);
    var vectorSource = new ol.source.Vector();
    vectorSource.addFeatures(features);
    var vector = new ol.layer.Vector({
        renderMode: "image", //image, vector
        source: vectorSource
    });
    var map = new ol.Map({
        controls: ol.control.defaults({
            attribution: false
        }),
        target: 'map',
        layers: [vector],
        view: new ol.View({
            projection: projection
        })
    });
    map.getView().fit(bounds, map.getSize());
 
    var cnv = document.createElement('canvas');
    var ctx = cnv.getContext('2d');
    var img = new Image();
    img.src = './css/fill.png';
    img.onload = function () {
        var pattern = ctx.createPattern(img, 'repeat');
        vector.setStyle(new ol.style.Style({
            stroke: new ol.style.Stroke({
                color: 'red',
                lineDash: [5],
                width: 2
            }),
            fill: new ol.style.Fill({
                color: pattern
            })
        }));
    };
});

技术博客
CSDN:http://blog.csdn.NET/gisshixisheng
在线教程
https://edu.csdn.net/course/detail/799
https://edu.csdn.net/course/detail/7471
联系方式

类型内容
qq1004740957
公众号lzugis15
e-mailniujp08@qq.com
webgis群452117357
Android群337469080
GIS数据可视化群458292378

“GIS讲堂”知识星球开通了,在星球,我将提供一对一的问答服务,你问我答,期待与你相见。
知识星球二维码

LZUGIS

您可以使用 `ol.style.Fill` 类来填充多边形(polygon)的颜色和图案,其 `ol.style.Fill` 类的 `color` 属性可以设置填充颜色,而 `ol.style.Fill` 类的 `image` 属性可以设置填充图案。具体来说,如果您想要使用一张图片填充多边形,可以按照以下步骤进行操作: 1. 创建一个 `ol.style.Fill` 对象,并将 `image` 属性设为 `new ol.style.Icon`。 2. 在 `ol.style.Icon` 对象设置图片的 URL 和大小(可选)。 3. 创建一个 `ol.style.Style` 对象,并将 `fill` 属性设为刚才创建的 `ol.style.Fill` 对象。 4. 将 `ol.style.Style` 对象绑定到您的多边形上,即可实现使用图片填充多边形的效果。 以下是一个使用图片填充多边形的示例代码: ```javascript // 创建一个 ol.style.Icon 对象 var iconStyle = new ol.style.Icon({ src: 'path/to/image.png', size: [32, 32] // 可选,设置图片大小 }); // 创建一个 ol.style.Fill 对象,并将 image 属性设为 iconStyle 对象 var fillStyle = new ol.style.Fill({ color: 'rgba(255, 255, 255, 0.6)', image: iconStyle }); // 创建一个 ol.style.Style 对象,并将 fill 属性设为 fillStyle 对象 var style = new ol.style.Style({ fill: fillStyle }); // 创建一个多边形 feature,并将 style 对象绑定到该 feature 上 var polygon = new ol.Feature({ geometry: new ol.geom.Polygon([[[0, 0], [0, 100], [100, 100], [100, 0]]]) }); polygon.setStyle(style); // 将多边形 feature 添加到地图 var vectorSource = new ol.source.Vector({ features: [polygon] }); var vectorLayer = new ol.layer.Vector({ source: vectorSource }); var map = new ol.Map({ target: 'map', layers: [vectorLayer], view: new ol.View({ center: [50, 50], zoom: 2 }) }); ``` 在上述代码,我们首先创建了一个 `ol.style.Icon` 对象,并将其设为 `ol.style.Fill` 对象的 `image` 属性。然后,我们创建了一个 `ol.style.Style` 对象,并将 `ol.style.Fill` 对象设为其 `fill` 属性。最后,我们将 `ol.style.Style` 对象绑定到一个多边形 feature 上,并将该 feature 添加到地图。这样就实现了使用图片填充多边形的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛老师讲GIS

感谢老板支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值