2017-07-04 60 views
2

我必須在我的圖層上單擊功能時顯示一個圓圈。 當我嘗試創建圈子時,出現此錯誤:Error: Invalid LatLng object: (41.961124103390674, NaN)添加圈子以與carto.js和傳單庫進行映射

如果我在此錯誤之前打印對象,我可以閱讀:Array [ 41.84664960937685, 12.008056640625 ]。 我試圖寫分離的值,但它不起作用。

這怎麼可能? 有人可以幫助我嗎?謝謝,對不起,我的英語

編輯

我試過這個解決方案:

layer.getSubLayer(1).on('featureClick', function (event, latlon, pos, data, index) { 
var coord = {lat:data.lat, lng:data.lon}; 
console.log(coord) 
L.circle(coord, {radius: data.distance}).addTo(map); 

錯誤和日誌是一樣的...

EDIT 2

有了這個代碼

var coord = L.latLng(42,21); 
var cerchio = L.circle(coord,{radius: data.distance}); 
    console.log(cerchio); 
    cerchio.addTo(map); 

我注意到Circle對象是正確創建的,所以問題出在addTo(map)方法上。

+0

請發佈解決方案作爲答案,而不是更新您的問題。這是爲了避免混淆。謝謝。如果您想將解決方案複製並粘貼到答案,請檢查您的[revision](https://stackoverflow.com/posts/44903639/revisions)歷史記錄。 – Bugs

回答

0

按照Carto Docslatlon說法在featureClick回調包含:

Array with the LatLng ([lat,lng]) where the layer was clicked.

那是你想要的圓放在哪裏?如果是這樣,使用下面這行:

L.circle(latlon, {radius: data.distance}).addTo(map); 
+0

是的,但我已經使用'latlon',結果總是一樣的。 –

+0

'console.log(latlon);'的結果是什麼? –

+0

'陣列[41.94478317075675,12.183837890625]' –

-1

添加1609*3

var coord = L.latLng(42,21,1609*3); 
0

解決

正確的方法是

L.circle([data.lat, data.lon], data.distance, {}).addTo(map); 

其中data.distance是圓的半徑。正式文檔的例子L.circle([50.5, 30.5], {radius: 200}).addTo(map);似乎是錯誤的。