2015-02-25 2 views
0

Я пытаюсь получить доступ к данным в этом формате JSON (см ниже) файла, такие как тип, свойства и т.д. с помощью:Перебор JSON данные для Google Maps

data = new google.maps.Data(); 
var json = data.loadGeoJson('insert-url-here'); 

for (var i=0; i < json.length; i++) { 
     var obj = json[i]; 
     console.log(obj.coordinates); 
} 

Я получаю сообщение об ошибке на первой линии цикла for Cannot read property 'length' of undefined. Я хочу увеличить масштаб объекта, прочитав его значение coordinates.

google.maps.addListener(data, 'click', function() { 
    obj.setZoom(10); 
} 

Что я делаю неправильно?

JSON образец:

"features": [{ "type": "Feature", "properties": { "id": 18, "geometry": { "type": "Point", "coordinates": [ -34.397, 150.644 ] } 
+0

JSON в JS формат объекта, а не обычный для попытки петли a для https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in – Royalty

+0

Вам нужно увидеть объект JSON как дерево. Он иерархический. – Mouser

ответ

1

Чтобы действительно извлечь coordinates свойство, которое вы должны сделать это:

var json = {"features": [{ "type": "Feature", "properties": { "id": 18, "geometry": { "type": "Point", "coordinates": [ -34.397, 150.644 ]}}}]} 
 
          
 
document.write(json.features[0].properties.geometry.coordinates);

Как построить этот JSON

object 
    - property -> features (Array, length: 1) 
     [ Object 
     - property -> properties (Object) 
      - property -> geometry (Object) 
       - property -> coordinates (Array, length: 2) 
     ] 
+0

Спасибо за объяснение относительно структуры JSON. Это действительно помогает. Но хорошо ли это для цикла? По какой-то причине все еще не может заставить его работать. – mapr

+0

@kolor Вы не можете закодировать эту структуру данных так, как хотите. Чтобы получить координаты из JSON, используйте мой код, нет необходимости в цикле здесь, если он не возвращает больше объектов в свойстве свойств. – Mouser

1
var json = data.loadGeoJson('insert-url-here'); 

Переменная json здесь возвращается как неопределенный объект, вызывающий ошибку. Также лучше использовать другое имя переменной

всякий раз, когда вы возвращаете json, вы можете использовать что-то вроде eval(), чтобы вернуть объект javascript. так что вы можете получить доступ к координатам с помощью json.features [0] .properties.coordinates

Характеристика вот массив, так что вы должны пройти через них

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