2015-02-10 2 views
0

В настоящее время у меня есть набор хорошо объявленных массивов точек широты/долготы с использованием javascript и mySQL, и когда я использовал этот набор массивов для отображения в виде полилиний, он был успешным.Листовка - Как показать маркеры вместо полилиний

var polyline = L.polyline (xxx) .addTo (Карта);

Однако, когда я устал переходить на маркеры, карта не изображала никаких маркеров.

Любая помощь? Большое спасибо :)

ответ

0

Это потому, что L.Polyline, принимает вложенный массив из нескольких координат lat/lng в качестве первого параметра, 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 о шоу-маркеры в начале и/или конечной точки линии, которую вы могли бы сделать это:

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

+0

Нет, спасибо, вы всегда рады, это то, для чего СОСТОИТСЯ. Просто примите ответ, если это решение вашей проблемы, так что другие пользователи, которые ищут подобное решение, могут воспользоваться также принятым решением, см .: http://stackoverflow.com/help/someone-answers. Да, этот подход будет но я обновляю свой ответ, чтобы добавить второе решение, которое будет работать немного при работе с большими массивами. – iH8