2015-02-10 32 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