我正在尝试创建一些自定义地图。我使用ol3是因为拖放功能。我们的想法是能够为地图上的每个特征设置样式。
我拖放从JOSM导出的.gpx和.json文件,并为每个功能创建一个独特的叠加层。
我可以在该叠加层上使用样式功能更改笔触颜色等。这一切都很有效,直到我做下一次下降。
掉落的特征似乎以一些随机的顺序出现,散布着前一滴中的那些。我需要有一些方法来告诉哪些功能是新的drop操作,所以我可以设置那些不会影响我已经设置过的那些功能。
我可以通过该功能获得某种独特的标识符吗? 有没有办法可以使用唯一ID标记功能?
我尝试了feature.getId()但是在拖放事件触发时未定义。
答案 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()
})