2016-12-05 13 views
0

場で描画楽器を変更すると、私は午前たびポイントからラインストリングまたはポリゴン描画モードへの切り替え、それだけで初めてに対して適切に動作し、まだされますオーバータイムの切り替えに失敗する私は<a href="http://openlayers.org/en/latest/examples/draw-and-modify-features.html?q=draw" rel="nofollow noreferrer">openlayers basic draw example</a>を調整した

F.I.私はラインストリングを使用した後ポイントを描くに戻って取得することはできません(それは私がLINESTRING描く、まだあるdrawingtoolプリントをログに記録し続けポイント

モーダル内のボタンのための私のhtml:

<div class="modal-body row"> 
    <div class="col-xs-12 col-sm-3"> 
     <a id="Point" href="#" class="draw btn btn-primary btn-block"><span class="icon ion-android-pin"></span> Point</a> 
    </div> 
    <div class="col-xs-12 col-sm-3"> 
     <a id="LineString" href="#" class="draw btn btn-primary btn-block"><span class="icon ion-android-pin"></span> Polyline</a> 
    </div> 
    <div class="col-xs-12 col-sm-3"> 
     <a id="Polygon" href="#" class="draw btn btn-primary btn-block"><span class="ion ion-ios-grid-view-outline"></span> Polygon</a> 
    </div> 
    <div class="col-xs-12 col-sm-3"> 
     <a href="#" class="btn btn-primary btn-block"><span class="ion ion-pinpoint"></span> Coordinates</a> 
    </div> 
    </div> 
</div> 

そして、ここのjsの一部です:

function addInteraction() { 
    draw = new ol.interaction.Draw({ 
    features: features, 
    type: /** @type {ol.geom.GeometryType} */ (drawtool) 
    }); 
    map.addInteraction(draw); 
} 
$('.draw').on("click", function(e) { 
    //e.preventDefault(); - commented by me - no difference 
    drawtool = $(this).attr('id'); 
    $("#drawModal").modal('toggle'); 
    addInteraction(); 
}); 

あなたはまた、見つけることができます全体コードjsFiddle

答えて

1

addInteraction()を呼び出すたびに、既存のものが削除されないように、ol.interaction.Drawの新しいインスタンスをマップに追加するという問題があります。

すばやく解決策は、新しいものを作成する前に既存のやりとりを削除することです。

だけ更新フィドル https://jsfiddle.net/zuarah4t/3/

+0

感謝を参照してください

draw = new ol.interaction.Draw(... 

map.removeInteraction(draw); 

を追加し、私は既存の相互作用を削除する方法を見つけ出すことができませんでした。より洗練された、より慎重な方向性の指導もできますか? – Kaha

関連する問題

 関連する問題