2015-02-10 59 views
0

我目前有一組使用javascript和mySQL很好地聲明緯度/經度點的數組,並且當我使用這組數組顯示爲多段線時,它是成功的。單張 - 如何顯示標記而不是多義線

var polyline = L.polyline(xxx).addTo(map);

但是,當我厭倦改變標記時,地圖沒有描繪任何標記。

任何幫助?非常感謝:)

回答

0

這是因爲L.Polyline,需要多個經緯度座標的嵌套數組作爲第一個參數,L.Marker需要一個單一的數組與lat/lng座標。簽名是不同的:

L.Polyline:

new L.Polyline([[-45, -45], [45, 45]], {/*options*/}); 

L.Marker:

new Marker([-45, -45], {/*options*/}); 

當通過一個嵌套陣列L.Marker,像在折線上面顯示的一個,它拋出錯誤:

Uncaught TypeError: Cannot read property 'lat' of null

如果要使用多段線的座標集t在該行的起點和/或終點o顯示標記,你可以這樣做:

var coordinates = [[-45, -45], [45, 45]]; 

var startMarker = new Marker(coordinates[0], {/*options*/}); 
var endMarker = new Marker(coordinates[1], {/*options*/}); 

正如評論答應另一個更簡單的方法來從一個大的陣列添加標記:

var coordinates = [ 
    [-41.31825,174.80768], 
    [-41.31606,174.80774], 
    [-41.31581,174.80777], 
    [-41.31115,174.80827], 
    [-41.30928,174.80835], 
    [-41.29127,174.83841], 
    [-41.33571,174.84846], 
    [-41.34268,174.82877] 
]; 

coordinates.forEach(function (coordinate) { 
    new L.Marker(coordinate).addTo(map); 
}); 

容易得多不是做:

new L.Marker(coordinate[0]).addTo(map); 
new L.Marker(coordinate[1]).addTo(map); 
new L.Marker(coordinate[2]).addTo(map); 
new L.Marker(coordinate[3]).addTo(map); 
new L.Marker(coordinate[4]).addTo(map); 
new L.Marker(coordinate[5]).addTo(map); 
new L.Marker(coordinate[6]).addTo(map); 
new L.Marker(coordinate[7]).addTo(map); 

工作Plunker例如:http://plnkr.co/edit/3dbJgb?p=preview

+0

親愛的@ IH8,感謝您的回覆,我有一組座標,您的代碼是否仍適用?非常感謝您的幫助。 '變種planelatlong = [ [-41.31825,174.80768], [-41.31606,174.80774], [-41.31581,174.80777], [-41.31115,174.80827], [-41.30928,174.80835], [ -41.29127,174.83841], [-41.33571,174.84846], [-41.34268,174.82877]];' – hftan 2015-02-12 13:13:01

+0

不用謝了,你總是受歡迎的,這是SO的目的。只要接受答案,如果它是解決您的問題,以便其他正在尋找類似解決方案的用戶也可以從已接受的解決方案中受益,請參閱:http://stackoverflow.com/help/someone-answers是的,該方法將仍然可以工作,但我會更新我的答案以添加第二個解決方案,這將在處理大型數組時使用起來更加方便。 – iH8 2015-02-12 13:29:47