Openlayers 3:如何更改Geojson Icon src,以便它不会覆盖其他geojson类型?

时间:2017-03-27 08:40:35

标签: openlayers-3 geojson

以这种方式加载Point / MultiPoint Geojson时,我可以更改图标的src:

 that.geojsonLayers[index]  = new that.openlayers.ol.layer.Vector({
      source: new that.openlayers.ol.source.Vector({
        format: new that.openlayers.ol.format.GeoJSON(),
        url: url         
      }),
      style: new that.openlayers.ol.style.Style({
        image: new that.openlayers.ol.style.Icon({
          src: 'http://mapmip.webiks.com/assets/Markers/marker-icon-blue.png'
        })
      })

然后我无法加载其他类型的Geojson - 多边形根本没有加载,而Geometry Collection(由图标和线条组成)只加载图标。

更改图标src的方法是什么,以便它不会覆盖其他geojson类型?

1 个答案:

答案 0 :(得分:1)

您可以使用样式函数来验证需要设置样式的几何类型。设置多边形样式的图标不正确。 检查一下

1.Declare your style

var myMultiStyle = {
//here replace with your icon style
        'Point': new ol.style.Style({
          image: new ol.style.Circle({
            fill: new ol.style.Fill({
              color: 'rgba(255,255,0,0.4)'
            }),
            radius: 5,
            stroke: new ol.style.Stroke({
              color: '#ff0',
              width: 1
            })
          })
        }),
        'LineString': new ol.style.Style({
          stroke: new ol.style.Stroke({
            color: '#f00',
            width: 3
          })
        }),
        'Polygon': new ol.style.Style({
         fill: new ol.style.Fill({
         color: 'rgba(0,255,255,0.5)'
         }),
         stroke: new ol.style.Stroke({
         color: '#0ff',
         width: 1
      })
    })
      };
  1. 创建样式函数
  2. function myStyleFunction(feature,resolution){ return myMultiStyle[feature.getGeometry().getType()]; }

    1. 将样式函数设置为矢量源
    2. that.geojsonLayers[index] = new that.openlayers.ol.layer.Vector({ source: new that.openlayers.ol.source.Vector({ format: new that.openlayers.ol.format.GeoJSON(), url: url
      }), style: myStyleFunction })

      检查this official example以查看结果。