2015-04-22 2 views
0

Я совершенно новый для Метеор. Я пытаюсь осуществить свою собственную версию этого примера с листовкой в ​​Meteor: Interactive Choropleth MapЗагрузка GeoJSON в листовку Метеор

Он использует этот файл для импорта GeoJSON данных: us-states

Моя проблема: импортировать этот файл или получить его, чтобы сделать ,

То, что я сделал:

Template.map.rendered = function() { 
 

 
    var map = L.map('map').setView([37.8, -96], 5); 
 

 
    L.tileLayer.provider('Stamen.Watercolor').addTo(map); 
 
    
 
    HTTP.get(Meteor.absoluteUrl("/us-states.js"), function(err,result) { 
 
    var statesData = result.content; 
 

 
    console.log(statesData); 
 

 
    var myStyle = { 
 
     "fillColor": "#487ba1", 
 
     "weight": 3, 
 
     "opacity": 1, 
 
    \t "color": "#487ba1", 
 
    \t "fillOpacity": 0.1 
 
    }; 
 
    
 
    var statesLayer = L.geoJson(statesData, { 
 
     style: myStyle 
 
     }).addTo(map); 
 
    }); 
 
    
 
}
#map { 
 
    width: 100%; 
 
    height: 100%; 
 
}
<div id="column"> 
 
    {{> map}} 
 
</div> 
 
<template name="map"> 
 
    <div id='map'></div> 
 
</template>

Что я получаю: Uncaught Ошибка: объект Invalid GeoJSON.


Переменная «stateData» возвращается как объект. Я просто хочу отобразить данные GeoJson на карте. Я мог бы легко сделать это на простом html. Что я не знаю, чтобы правильно это сделать?

+1

Почему вы преобразовываете свой результат result.content в String? Если функция geoJSON ищет объект, это не сработает. – Guillaume

+0

Woops. Этого не должно быть. Однако даже когда я удаляю .toString(), он все равно бросает мне исключение. – Anraiki

+0

как отформатирован 'result.content'? Возможно ли, что он не будет автоматически анализироваться как JSON и что он должен анализироваться с помощью 'JSON.parse (result.content)'? Кроме того, объекты GeoJSON должны иметь следующую форму: '{type: '...', координат: [Number, Number]}' – Guillaume

ответ

1

Проблема, похоже, исходила из вашего файла us-states.js. Вы хотите загрузить из него данные, но вместо данных у вас есть объявление переменной в нем:

var statesData = { 
    "type":"FeatureCollection", 
    "features": [ 
    .... 
    ] 
} 

Вы должны только сохранить данные в файл и удалить var statesData = часть:

{ 
    "type":"FeatureCollection", 
    "features": [ 
    .... 
    ] 
} 
Смежные вопросы