-1

我正在尝试在我的 rails 应用程序上使用 Mapbox GL 在地图上合并标记。

在我的控制器文件中,我有:

@boatramps = Boatramp.all.limit(6)
@geojson = {"type" => "FeatureCollection", "features" => []}
@boatramps.each do |boatramp|
  @geojson["features"] << {
    geometry: {
    type: 'Point',
    coordinates: [boatramp.long, boatramp.lat]
    },
    properties: {
    title: boatramp.id,
    :'marker-symbol' => 'monument'
    }
  }
end
respond_to do |format|
  format.html
  format.json{render json: @geojson}
end

对于我的 ajax 调用,我有

style.layers.push({
    "id": "markers",
    "type": "symbol",
    "source": "markers",
    "layout": {
      "icon-image": "{marker-symbol}-12",
      "text-field": "{title}",
      "text-font": "Open Sans Semibold, Arial Unicode MS Bold",
      "text-offset": [0, 0.6],
      "text-anchor": "top"
    },
    "paint": {
      "text-size": 12
    }
  });
$.ajax({
    type: 'GET',
    url: '/virginia',
    dataType: 'json',
    success: function(response){
        console.log(response)
        var markers = new mapboxgl.GeoJSONSource({ data: response});

        map.addSource('markers', markers);
    },
    error: function(){

    }
})

当我有 5 个标记时,呼叫工作正常,并且我得到了要显示的船坡 id。(也有要显示的“图标图像”问题)只要我将限制增加到 6 个或更多。我收到一个错误:

Uncaught TypeError: Cannot read property 'leaf' of undefined

当我在地图上放大和缩小时,它会执行相同的错误。此外,一旦我有相当数量的对象 40 +,其中一些不会显示。有任何想法吗?

4

1 回答 1

0

这是一个已知的问题。https://github.com/mapbox/mapbox-gl-js/issues/987

昨天我还在 Github 上询问了它,并被告知它将在下一个版本中修复,大约一周后。

于 2015-03-01T17:18:12.017 回答