'无效的GeoJSON对象。'使用Leaflet和leaflet-ajax

时间:2016-03-08 14:52:00

标签: javascript ajax leaflet

我正在使用传单制作法国地图,并突出显示区域,并点击缩放。

我首先使用了本教程:http://leafletjs.com/examples/choropleth.html

首先,我在script.js中有geojson,但在我的情况下,我需要分开的geojson文件中的区域。 所以我现在用scriptlet-ajax在script.js中调用它们,如下所示:

 var BordeauxLayer = new L.GeoJSON.AJAX("src/js/DI_Bordeaux.geojson").addTo(map);

区域显示在地图上,但现在所有放大,突出显示的功能......我在教程中所用的功能都不再适用了。

    L.geoJson(BordeauxLayer,{onEachFeature: onEachFeature}).addTo(map);

// HIGHLIGHT FEATURE = MOUSEOVER

function onEachFeature(feature, layer) {
    layer.on({
        mouseover: highlightFeature,
        mouseout: resetHighlight,
        click: zoomToFeature
    });
  }


  // HIGHLIGHT FEATURE = MOUSEOVER
  function highlightFeature(e) {
      var layer = e.target;

      layer.setStyle({
          weight: 5,
          color: '#666',
          dashArray: '',
          fillOpacity: 0.7
      });
  };


  // HIGHLIGHT FEATURE = MOUSE LEFT
function resetHighlight(e) {
      geojson.resetStyle(e.target);
  };

// ZOOM TO THE REGION
  function zoomToFeature(e) {
    map.fitBounds(e.target.getBounds());
}

现在控制台在leaflet.js的第8行显示“Uncaught Error:Invalid GeoJSON object。”。

问题似乎在这一行:

L.geoJson(BordeauxLayer,{onEachFeature: onEachFeature}).addTo(map);

我不明白为什么:(

编辑:这是我的geojson:https://api.myjson.com/bins/3s1ad

提前感谢。

1 个答案:

答案 0 :(得分:1)

您对onEachFeature的调用必须在您的AJAX调用中

var BordeauxLayer = new L.GeoJSON.AJAX("src/js/DI_Bordeaux.geojson", {onEachFeature: onEachFeature}).addTo(map);

你还必须摆脱

L.geoJson(BordeauxLayer,{onEachFeature: onEachFeature}).addTo(map);