0

我正在尝试遵循https://www.mapbox.com/mapbox-gl-js/example/filter-markers/上发布的示例,但是在我的情况下,GeoJSON 数据是从外部文件加载的:

map.on('load', function() {
    map.addSource("cacheData", {
        type: "geojson",
        data: "./data.geojson",

如果我按照示例进行操作,我似乎无法访问“标记”变量来迭代并将每个标记添加到图层。

在 Mapbox.js 的原始版本中,我能够启用/禁用单个功能.. 我似乎无法在 mapboxGL 中以同样的方式做到这一点。

在加载数据以将文件中的每个标记添加到图层时,是否有一个事件或某些东西可以用来修改数据?

4

1 回答 1

1

在您发布的 Mapbox 示例中,有var markers = {}声明。例如,

var markers = {
  // properties snipped, see link for GeoJson data
}

但是在您的map.on()通话中,它引用了./data.geojson. 因此,您实际上没有要使用的markers对象。

map.addsource()将 GeoJson 从磁盘中分离出来可能更容易。

这是一种方法,您可以先使用Jquery从本地路径或 URL获取getJSON数据,然后您可以在map.on.

    <!-- 1. Add these JavaScript inclusions in the head of your page -->
    <script type="text/javascript" src="http://code.jquery.com/jquery-3.0.0.min.js">
      </script>

    <script type="text/javascript">
    $(document).ready(function() {

      var geoJsonFile = "./data.geojson";


      $.getJSON(geoJsonFile, function(markers){

        console.log(markers.type);

      }); // getJSON
    });  // $(document)
于 2016-06-27T00:40:56.180 回答