2017-08-24 11 views
0

セレクタでマーカーの円の半径を変更する際に問題があります。私は変更をjqueryで達成しようとしていますが、それdoesnt仕事.Jquery関数がセレクタによってトリガされ、値を取得し、マーカーの円の半径を変更します。
エラーがどこにあるか教えていただけますか?リーフレットの円の半径をjqueryとセレクタで

これは、セレクタです:

<div id="map"></div> 
<form> 
    <select id="distance-selector" name="distance"> 
     <option value="">Select distance:</option> 
     <option value="1">500m</option> 
     <option value="2">1km</option> 
     <option value="3">5km</option> 
     <option value="4">10km</option> 
     <option value="5">50km</option> 
    </select> 
</form> 

、ここではリーフレットマップの私のjavascript/jqueryのコードです:

$(document).ready(function() { 
    var mymap = L.map('map').setView([51.505, -0.09], 13); 
    L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=xxx', { 
     attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>', 
     maxZoom: 18, 
     id: 'mapbox.streets', 
     accessToken: 'xxx' 
    }).addTo(mymap); 

    var marker; 
    var circle; 
    var all; 
    mymap.on('click', function (e) { 
     if (all) { 
      mymap.removeLayer(all); 
     } 
     marker = new L.Marker(e.latlng, { draggable: true }); 
     circle = new L.circle(e.latlng, { radius: 500 }); 
     var circlePos = e.latlng; 
     $('distance-selector').on('change', function() { 
      if (circle) { 
       mymap.removeLayer(circle); 
      } 
      if (this.value == "") { 
       circle = new L.circle(circlePos, { radius: 500 }); 
      } 
      if (this.value == "1") { 
       circle = new L.circle(circlePos, { radius: 500 }); 
      } 
      if (this.value == "2") { 
       circle = new L.circle(circlePos, { radius: 1000 }); 
      } 
      if (this.value == "3") { 
       circle = new L.circle(circlePos, { radius: 5000 }); 
      } 
      if (this.value == "4") { 
       circle = new L.circle(circlePos, { radius: 10000 }); 
      } 
      if (this.value == "5") { 
       circle = new L.circle(circlePos, { radius: 50000 }); 
      } 
      all = L.layerGroup([marker, circle]); 
      mymap.addLayer(all); 
     }); 
     marker.on('dragend', function (e) { 
      if (circle) { 
       mymap.removeLayer(circle); 
      } 
      circle = new L.circle(e.target.getLatLng(), { radius: 500 }); 
      all = L.layerGroup([marker, circle]); 
      mymap.addLayer(all); 
     }); 

     all = L.layerGroup([marker, circle]); 
     mymap.addLayer(all); 
    }); 
}) 
+0

半径をオプション値に直接追加してみませんか?だからこそこれを置く必要はありません。オプションを選択してその値をあなたの半径に入れるだけでよいでしょう。 – Baptiste

+0

どうすればいいですか?私は分かりません – Peslis

+0

すべての 'if value = ...'を削除して置き換えてください: 'var radiusFromSelect = this.value; circle = new L.circle(circlePos、{radius:radiusFromSelect}); ' – Baptiste

答えて

0

ワイルド推測:$('#distance-selector')#が不足して?

+0

omgはいそれです... – Peslis

関連する問題