将GeoJSON加载到Meteor的传单

时间:2015-04-22 13:48:38

标签: javascript json meteor leaflet geojson

我对Meteor很新。我试图将这个示例的自定义版本从传单实现到Meteor:Interactive Choropleth Map

它使用此文件导入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,
    	"color": "#487ba1",
    	"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>

我得到了什么:未捕获的错误:无效的GeoJSON对象。

变量“stateData”作为对象返回。我只想将GeoJson数据渲染到地图上。我可以轻松地在简单的HTML上执行此操作。什么是我不知道如何才能正常工作?

1 个答案:

答案 0 :(得分:1)

问题似乎来自您的us-states.js文件。您希望从中加载数据,但不是数据,而是在其中包含变量声明:

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

您应该只保留文件中的数据并删除var statesData =部分:

{
  "type":"FeatureCollection",
  "features": [
    ....
  ]
}