2013-05-19 5 views
2

У меня возникли проблемы с попыткой вырезать несколько маркеров на карту, используя информацию, хранящуюся в массиве.Google Maps - Создание нескольких маркеров

код создает карту не проблема, но она не отображает маркеры Пытаюсь петли из ...

Как вы можете видеть из приведенного ниже кода, есть две функции, которые создают маркеры. Первый - это просто использование двух значений. Этот маркер отображается отлично.

Вторая функция, однако, захватывает данные из массива (массив был настроен так, чтобы «хлюпать» данные о широте и долготе в таком порядке, как это требует Google Maps) и не отображает что-нибудь при запуске.

Любые идеи? Я в тупике!

Заранее благодарен!

Вот код:

Начальное "место" массив:

var locations = new Array(); 

for (var i = 0; i < data.length; i++) 
     { 
     var row = data[i]; 

     var longitude = row[0]; 
     var latitude = row[1]; 

     locations[i] = latitude + longitude; 
     } 

callMap(locations, locationFilename, userLatitude, userLongitude); 

Google Maps Функция

function callMap(locations, locationFilename, userLatitude, userLongitude) { 

var mapOptions = { 
     zoom:16, 
     center: new google.maps.LatLng(userLatitude, userLongitude), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

    var map = new google.maps.Map(document.getElementById('mapView'),mapOptions); 

    setMarkers(map, locations, locationFilename); 
    currentPosition(map, userLatitude, userLongitude); 
    } 

    function currentPosition(map, userLatitude, userLongitude) 
    { 

    var userLatLng = new google.maps.LatLng(userLatitude, userLongitude); 

    var marker = new google.maps.Marker({ 
     position: userLatLng, 
     map: map 
      }); 

    } 

    function setMarkers(map, locations, locationFilename) { 

    for (var i = 0; i < locations.length; i++) { 

    var markerLatLng = new google.maps.LatLng(locations[i]); 

      var marker = new google.maps.Marker({ 
       position: markerLatLng, 
       map: map 
        }); 

    } 
    } 
+1

Я не думаю, что места в конце концов, содержащие соответствующие объекты LatLng, или что-нибудь вам может инициализировать LatLng от ... –

+0

Спасибо за ответ. Как так? –

+0

Как-то я не думаю, что широта + долгота даст вам то, что вам нужно. Проверьте это и посмотрите документацию для LatLng. В частности, его конструктор. –

ответ

4

A google.maps.LatLng принимает два номера аргументов.

Это не правильно:

var markerLatLng = new google.maps.LatLng(locations[i]); 

Это должно работать:

for (var i = 0; i < data.length; i++) 
    { 
    var row = data[i]; 

    var longitude = row[0]; 
    var latitude = row[1]; 

    locations[i] = new google.maps.LatLng(latitude,longitude); 
    } 

Тогда

function setMarkers(map, locations, locationFilename) { 

    for (var i = 0; i < locations.length; i++) { 

    var markerLatLng = locations[i]; 

     var marker = new google.maps.Marker({ 
      position: markerLatLng, 
      map: map 
     }); 

    } 
    } 
} 
+0

Это сработало отлично, спасибо! –

2

Вы просто добавляя строку вместе, она должна быть массивом:

for (var i = 0; i < data.length; i++) { 
    var row = data[i]; 

    var longitude = row[0]; 
    var latitude = row[1]; 

    locations[i] = [latitude, longitude]; 
} 

var markerLatLng = new google.maps.LatLng(locations[i].join(','));