1

いくつかのカスタム マップを作成しようとしています。ドラッグ アンド ドロップ機能があるため、ol3 を使用しています。アイデアは、マップ上の各フィーチャのスタイルを設定できるようにすることです。

JOSM か​​らエクスポートされた .gpx および .json ファイルをドラッグ アンド ドロップし、各フィーチャに固有のオーバーレイを作成します。

そのオーバーレイのスタイル機能でストロークの色などを変更できます。次のドロップを行うまで、それはすべてうまく機能します。

ドロップされた機能は、ランダムな順序で表示され、前のドロップの機能が散在しているように見えます。そのドロップ操作からどの機能が新しくなったかを判断する何らかの方法が必要です。これにより、既にスタイルを設定した機能に影響を与えることなくそれらの機能をスタイルできるようになります。

この機能から取得できる何らかの一意の識別子はありますか? 固有の ID を使用して機能にタグを付ける方法はありますか?

feature.getId() を試しましたが、ドラッグ アンド ドロップ イベントが発生した時点では未定義です。

4

2 に答える 2

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']);
    })

それは役に立ちますか?幸運を。

于 2014-11-17T15:37:47.120 に答える
0

機能を作成するときに、カスタム プロパティを持つオブジェクトをコンストラクターに渡すことができます。例えば:

var myFeature = new ol.Feature({
        geometry: ..., 
        labelPoint: ..,
        name:...,
        customProp1: ...,
        customProp2: ...,
        myCustomID: myRandomIDGenerator()
      })
于 2016-01-26T09:36:36.580 に答える