Ol3功能的唯一标识符

时间:2014-05-04 15:55:06

标签: javascript openlayers-3

我正在尝试创建一些自定义地图。我使用ol3是因为拖放功能。我们的想法是能够为地图上的每个特征设置样式。

我拖放从JOSM导出的.gpx和.json文件,并为每个功能创建一个独特的叠加层。

我可以在该叠加层上使用样式功能更改笔触颜色等。这一切都很有效,直到我做下一次下降。

掉落的特征似乎以一些随机的顺序出现,散布着前一滴中的那些。我需要有一些方法来告诉哪些功能是新的drop操作,所以我可以设置那些不会影响我已经设置过的那些功能。

我可以通过该功能获得某种独特的标识符吗? 有没有办法可以使用唯一ID标记功能?

我尝试了feature.getId()但是在拖放事件触发时未定义。

2 个答案:

答案 0 :(得分:0)

您可以用json格式定义功能

var geoSource = new ol.source.GeoJSON({
    /* @type {olx.source.GeoJSONOptions} */
    "projection": "EPSG:3857"  //us
    , "object": {
        "type": "FeatureCollection"
        , "crs": { "type": "name", "properties": { "name": "EPSG:4326" } }//'EPSG:3857'//euro 'urn:ogc:def:crs:EPSG::4326'//'urn:ogc:def:crs:OGC:1.3:CRS84'
        , "features": [
          {
              "type": "Feature", "id": "01"
              , "geometry": { "type": "Point", "coordinates": [-80.0874386, 26.7816928] }
              , "properties": { "myproperty": "West Palm Beach" }
          }
        , {
            "type": "Feature", "id": "02"
            , "geometry": { "type": "Point", "coordinates": [-82.0838700, 26.9262480] }
            , "properties": { "myproperty": "Punta Gonda" }
        }
        ]
    }
});

然后您通过

访问该功能
    var ff = geoSource.getFeatureById('02');
    alert(ff.getProperties()['myproperty']);

或 如果您需要分析所有功能,可以

    geoSource.getFeatures().forEach(function (ff) {
        alert(ff.getProperties()['myproperty']);
    })

有帮助吗?祝你好运。

答案 1 :(得分:0)

创建要素时,可以将具有自定义属性的对象传递给构造函数。例如:

var myFeature = new ol.Feature({
        geometry: ..., 
        labelPoint: ..,
        name:...,
        customProp1: ...,
        customProp2: ...,
        myCustomID: myRandomIDGenerator()
      })