我正在rails应用程序上构建一个ruby,它为数据库中的每个Product模型创建一个唯一的地图,并将其插入到flexslider幻灯片的幻灯片中。
这对于仅包含1个标记的json请求非常有效。但是,当使用2个标记进行json请求时,地图的图块不会渲染(但两个标记都会显示并适合查看)。
通过移动" map.fitBounds(featureLayer.getBounds());"解决了渲染问题。进入featureLayer.on('点击')功能。但是在加载JSON之后我需要fitBounds的功能而不是单击。
我在浏览器控制台中遇到的错误是:"未捕获的TypeError:无法读取属性' lat'未定义"我已经搜索了几十个线程来寻求帮助,但是无法解决它。我是所有这一切的新手,所以非常感谢你的帮助。
我的JAVASCRIPT
function initProductMap(product) {
var map;
map = L.mapbox.map(document.getElementById(product), 'jasonpearson.ha88l84b');
var featureLayer;
featureLayer = L.mapbox.featureLayer().loadURL('/products/' + product + '.json').addTo(map);
map.scrollWheelZoom.disable();
map.zoomControl.setPosition('bottomright');
featureLayer.on('ready', function() {
map.fitBounds(featureLayer.getBounds());
featureLayer.on('click', function(e) {
e.layer.unbindPopup();
window.open(e.layer.feature.properties.url, '_self');
});
});
$('ul.slides li').show();
map.invalidateSize();
};
MY RAILS CONTROLLER
def show
@product = Product.find(params[:id])
@geojson = Array.new
@product.producers.each do |producer|
@geojson << {
type: 'FeatureCollection',
features: [
{
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [producer.longitude, producer.latitude]
},
properties: {
name: producer.name,
'marker-color' => '#9f3335',
'marker-symbol' => 'circle',
'marker-size' => 'medium',
url: Rails.application.routes.url_helpers.producer_path(producer)
}
}
]
}
end