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 © <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);
});
})
半径をオプション値に直接追加してみませんか?だからこそこれを置く必要はありません。オプションを選択してその値をあなたの半径に入れるだけでよいでしょう。 – Baptiste
どうすればいいですか?私は分かりません – Peslis
すべての 'if value = ...'を削除して置き換えてください: 'var radiusFromSelect = this.value; circle = new L.circle(circlePos、{radius:radiusFromSelect}); ' – Baptiste