2015-09-22 2 views
6

Интересно, если кто-то может мне точку в правильном направлении здесь, я работаю с Google карты пытаются затенить выделенные области Почтовый индекс для пользователя, если я жестко закодировать широте и долготу он работает так:Uncaught InvalidValueError: не массив

var triangleCoordsLS12 = [ 
     {lng: -1.558585, lat: 53.796545}, 
     {lng: -1.558585, lat: 53.796545}, 
     ..... 
]; 

, но я пытаюсь получить информацию из базы данных MySQL в PHP и JSON, как это;

$.ajax({ 
      type:'POST', 
      url:'test.php', 
      success:function(data){ 
      var resultArray = JSON.parse(data); 
       for (var i=0; i<resultArray.length; i++) { 
        var triangleCoordsLS12 = new google.maps.LatLng(resultArray[i].lat, resultArray[i].lng); 

      if(location.uname == 'John Smith'){ 
      bermudaTriangleLS12 = new google.maps.Polygon({ 
       paths: triangleCoordsLS12, 
       strokeColor: '#ff0000', 
       strokeOpacity: 0.8, 
       strokeWeight: 1, 
       fillColor: '#ff0000', 
       fillOpacity: 0.30 
      }); 
      bermudaTriangleLS12.setMap(map); 
     } else if(location.uname == 'Bruce Brassington'){ 
      bermudaTriangleLS12 = new google.maps.Polygon({ 
       paths: triangleCoordsLS12, 
       strokeColor: '#FFcc00', 
       strokeOpacity: 0.8, 
       strokeWeight: 1, 
       fillColor: '#FFcc00', 
       fillOpacity: 0.25 
      }); 
      bermudaTriangleLS12.setMap(map);     
     } 
     } 
    } 
}) 

Я получаю ошибку Uncaught InvalidValueError: not an Array на этих линиях: -

bermudaTriangleLS12 = new google.maps.Polygon({ 

Я знаю об ошибке говорит, что не в Array так как я ставлю точки в массиве? Я был бы очень благодарен за вашу помощь.

ответ

3

Вам нужно сначала построить массив, а затем использовать его при создании многоугольника. В вашем коде вы создаете новый многоугольник внутри цикла «координат», поэтому вы создаете многоугольник с одной точкой в ​​каждом цикле.

//build the array 
var resultArray = JSON.parse(data); 
var triangleCoordsLS12 = [] 
for (var i=0; i<resultArray.length; i++) { 
    triangleCoordsLS12[i] = new google.maps.LatLng(resultArray[i].lat, resultArray[i].lng); 
} 
//use the array as coordinates 
bermudaTriangleLS12 = new google.maps.Polygon({ 
     paths: triangleCoordsLS12, 
     trokeColor: '#ff0000', 
     strokeOpacity: 0.8, 
     strokeWeight: 1, 
     fillColor: '#ff0000', 
     fillOpacity: 0.30 
}); 
bermudaTriangleLS12.setMap(map); 

ПСЕВДОКОД мой пример:

For each coordinate { 
    add coordinate to array 
} 
construct-polygon(coordinate array) 

Ваш код:

For each coordinate { 
    construct-polygon(coordinate) 
} 
+0

Большое спасибо, что работал, моя ошибка школьником. – Tony

Смежные вопросы