Модифицируйте массив с помощью jQuery для получения последовательных индексов - PullRequest
1 голос
/ 24 сентября 2011

Этот массив javascript содержит координаты, которые я отправляю в API Карт Google, чтобы нарисовать путь на карте. Иногда координирует [0] пусто, потому что это зависит от предыдущего маршрута, который может существовать или не существовать (с помощью Google Maps).

Это мой код:

coordinates = [];

(между здесь я ищу предыдущий путь (координаты [0]). В этом случае мы предполагаем, что он нулевой. Поэтому у нас есть следующие значения:

coordinates[1] = '50,20'; //route 1
coordinates[2] = '10,18'; //route 2
coordinates[3] = '27,34'; //route 3

После этого я рисую путьна карте вот так:

travel_path = new google.maps.Polyline({
  path: coordinates
});
travel_path.setMap(map);

Проблема: Когда есть нет координат [0] (что происходит, когда нет предыдущего сегмента пути перемещения), метод .Polylineвыдает ошибку, потому что ему нужно получить массив с последовательными индексами, начинающимися с 0.

Вопрос: Как я могу преобразовать мой исходный массив в этот (сравните индексы):

coordinates[0] = '50,20'; //route 1
coordinates[1] = '10,18'; //route 2
coordinates[2] = '27,34'; //route 3

Ответы [ 4 ]

2 голосов
/ 24 сентября 2011

coordinates.shift() удаляет первый элемент из массива.

var coordinates = [];
//coordinates[0] = undefined;
coordinates[1] = '50,20'; //route 1
coordinates[2] = '10,18'; //route 2
coordinates[3] = '27,34'; //route 3
coordinates.shift();

coordinates.shift() вызывает это:

coordinates[0] = coordinates[1];
coordinates[1] = coordinates[2];
coordinates[2] = coordinates[3];
//coordinates[3] is removed.
1 голос
/ 24 сентября 2011

Как сказал Роб, используйте shift (), вы можете проверить, не определены ли сначала координаты [0].

if( !coordinates[0] )
    coordinates.shift(); 
0 голосов
/ 24 сентября 2011

Использование:

travel_path = new google.maps.Polyline({
  path:(function(){
        var arrayCoord=[],k=0;
        for(var key in coordinates){
            arrayCoord[k]=coordinates[key];
            ++k;
        }
        return arrayCoord;
  })()
});
travel_path.setMap(map);
0 голосов
/ 24 сентября 2011

Вы можете сделать это, используя slice:

coordinates.slice(1);

Посмотреть это в действии .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...