我正在尝试在我的 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 +,其中一些不会显示。有任何想法吗?