2016-08-08 10 views
1

私はol.interaction.Drawを使って地図に新しい機能を描いていますが、マップ上にはすでに既存の機能もあります。マウスが既存のフィーチャーをホバリングしているときに、ユーザーが新しいフィーチャーを配置できないようにしたい。 ol.interaction.Drawマウス移動時の状態?

は、今の私は、それがすでに機能があるピクセルに設定されていますときfalseを返しドロー相互作用に conditionを使用しています。しかし、これらのピクセル上にマウスを動かすだけで、ユーザーがマーカーを置くことができたかのようなスタイルになっています。クリックするだけでなく、マウスの移動ごとにチェックされる conditionのようなものがありますか?

アップデート:私の現在の状態は次のとおりです。

condition: function(e) { 
    var isFirstOne = true; 
    var feature = map.forEachFeatureAtPixel(e.pixel, function(feature) { 
    var n = feature.get('name'); 
    // if n is undefined, feature is the current drawing one 
    if (!!n) return feature; 
    }); 
    return (!feature); 
} 
+0

は、あなたが使用している 'condition'用のコードを提供することができますか? –

+0

@HichamZouarhi:私は質問を更新しました – levu

+0

あなたの条件内で描画操作のスタイルを変更することはできますが、私はOL3でそれを行うための定義済みの関数を見つけることができませんでした –

答えて

1

はありませんクリックするだけで、すべてのマウス移動 でチェックされている状態のようなものはありますか?

はい、あなたはpointermoveを使用し、(CSS経由)カーソルを変更することができます。

map.on('pointermove', function(e) { 
    if (e.dragging) return; 
    var hit = map.hasFeatureAtPixel(map.getEventPixel(e.originalEvent)); 
    map.getTargetElement().style.cursor = hit ? 'pointer' : ''; 
}); 
関連する問題