Mapbox fitBounds适合映射到标记,但不渲染切片

时间:2014-04-09 01:26:48

标签: ruby-on-rails geojson mapbox

我正在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

0 个答案:

没有答案