前提・実現したいこと
javascriptにて、geojsonデータからサークルを描画したいと考えています。
最終的には、geojsonのpropertiesにある半径(m)の数値をradiusに指定したいと考えています。
発生している問題・エラーメッセージ
L.CircleMarkerでは、半径はピクセルで指定する必要があるのですが、この半径をmで指定するために
どのようにすればいいか教えていただきたいです。
L.Circleでは、mで指定できるようです、、、
Lhankor_Mhy様に回答を頂いた後、該当ソースコードを変更→その後発生したエラー
Error: Invalid LatLng object: (35.0155833957335, NaN)
該当のソースコード
Lhankor_Mhy様に回答していただき、ソースコードを調整いたしました。
views_models.py(geojsonを形成しているpythonファイル)
1from math import cos, sqrt 2import numpy as np 3class NodeLatlngMapper: 4 """ノードマッパー""" 5 def as_dict(self, node1, node2): 6 def qick_distance(Lat1, Long1, Lat2, Long2): 7 #degreeからradianへ 8 Lat1 = np.deg2rad(Lat1) 9 Lat2 = np.deg2rad(Lat2) 10 Long1 = np.deg2rad(Long1) 11 Long2 = np.deg2rad(Long2) 12 x = Lat2 - Lat1 13 y = (Long2 - Long1) * cos((Lat2 + Lat1)*0.00872664626) 14 #戻り地はm 15 return 111.138 * sqrt(x*x + y*y) * 1000 16 return { 17 "type": "FeatureCollection", 18 "features": [ 19 { 20 "type": "Feature", 21 "properties": { 22 'node': { 23 'node_id': node1.node_id, 24 }, 25 'popupContent': 'これは'+ str(node1.node_id) + '番目です。', 26 "distance": qick_distance(node1.latlng.x,node1.latlng.y,node2.latlng.x,node2.latlng.y), 27 }, 28 "geometry": { 29 "type": "Point", 30 "coordinates": [node1.latlng.x,node1.latlng.y], 31 }, 32 }, 33 ]}
canvas.jsの一部
1 V.showNodesLayer = function(geojson) { 2var Marker = function(feature, latlng) { 3 return new L.Circle(latlng, { 4 radius: 3, 5 color: "#00ff00", 6 fillColor: '#00ff00', 7 fillOpacity: 0.2, 8 }) 9 }; 10 L.geoJson(geojson, {pointToLayer: Marker},).addTo(map).on( 'click', function(e) { clickEvt(e); }); 11 function onEachFeature(feature, layer) { 12 if (feature.properties && feature.properties.popupContent) { 13 layer.bindPopup(feature.properties.popupContent); 14 } 15 } 16 function clickEvt(e){ 17 alert('HelloWorld'); 18 } 19}
試したこと
mからpixelに変換する方法も試してみたのですが、上手くいきませんでした。
補足情報(FW/ツールのバージョンなど)
必要な情報が抜けているかもしれません。
こちらも教えていただけましたら幸いです。
マップのサイズは(縦,横:500pixel,500pixel)で描画しています。
回答2件
あなたの回答
tips
プレビュー