2013-11-04 76 views
1

我試圖將我的L.polygon數據移動到不同的文件。我使用jQuery從單獨的文件中獲取數據。現在看來似乎應該返回我使用當我有它作爲index.html文件一L.polygon完全相同的數據,而是它返回這個錯誤:傳單錯誤:無效的LatLng對象:(,undefined)

Invalid LatLng object: (, undefined) 

我搜索的錯誤,但似乎所有其他人都報告說它使用的數據類型與我的不同。

下面是完整的例子:

的index.html:

<!DOCTYPE html> 
<meta charset="utf-8"> 
<html> 
<head> 
    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.css" /> 
    <script src="http://cdn.leafletjs.com/leaflet-0.6.4/leaflet.js"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> 
</script> 
    <style type="text/css"> 
    #map { 
    height: 500px; 
    } 
    </style> 
</head> 
<body> 

<div id="map"></div> 
<script type="text/javascript"> 
    var map = L.map('map').setView([33.720818, -84.240], 11); 

    $.get("data/temp.csv", function(data) { 
    console.log(data); 
    var temp = new L.polygon(data).setStyle(defaultStyle).addTo(map); 
    }); 
</script> 

</body> 
</html> 

數據/ temp.csv:

[ 
[33.829205,-84.377261], 
[33.829121,-84.377257], 
[33.829039,-84.377271], 
[33.828937,-84.377204], 
[33.828871,-84.377122] 
] 

編輯:澄清,加入以下中的index.html文件工作正常,但從另一個文件(上面)中引入不起作用。

var temp = L.polygon([ 
    [33.829205,-84.377261], 
    [33.829121,-84.377257], 
    [33.829039,-84.377271], 
    [33.828937,-84.377204], 
    [33.828871,-84.377122] 
    ]).setStyle(defaultStyle).addTo(map); 
+1

這裏的'data'可能是一個字符串,這意味着您正在執行'L.polygon(「[]]」)而不是'L.polygon([...])'。也許試試'$ .getJSON'而不是'$ .get',或者'data = $ .parseJSON(data);'。 – apsillers

回答

3

L.polygon()預計LatLng對象的數組。

您需要對數組進行迭代,在每個元素中創建一個LatLng,或者將此列表包裝在GeoJSON對象中,並使用GeoJSON類爲您完成此操作。

喜歡的東西:

L.geoJson({"type": "Polygon", "coordinates": data}).setStyle(defaultStyle).addTo(map); 

從評論編輯:原來,L.polygon()不實際自動轉換數組的數組的LatLng數組。問題在於,你需要顯式地傳遞「json」作爲$.get()的最後一個參數,以確保它實際上將字符串解析爲JSON,而不是返回原始字符串。

+0

在這種情況下,爲什麼這個工作正常? 變種臨時= L.polygon([ \t [33.829205,-84.377261], \t [33.829121,-84.377257], \t [33.829039,-84.377271], \t [33.828937,-84.377204], \t [33.828871 ,-84.377122] ])。setStyle(defaultStyle).addTo(map); – user2926101

+2

哦,嗯,也許它會自動轉換一組數組。在那種情況下,你確定'$ .get()'解析爲JSON而不是返回字符串嗎?你應該顯式地傳入''json''作爲'$ .get()'的最後一個參數,以確保它實際上解析字符串。 –

+0

這和@apsillers解答了這兩個工作。有關是否可以迭代數組,轉換爲GeoJSON或更改$ .get()命令的任何想法? – user2926101

1

您可以使用JSON.parse(data)。對我來說,它的工作原理。

相關問題