渲染Geojson,带respond_to轨和地图框/传单



所以我目前正试图从我的rails控制器请求一些geojson数据。我使用通过mapbox/传单提供给我的loadURL方法来对我的控制器进行ajax调用。

$(document).on("ready", function() {
  L.mapbox.accessToken = 'token is here';
  var userMap = L.mapbox.map('user-map', 'mapbox.run-bike-hike')
    .addControl(L.mapbox.geocoderControl('mapbox.places'))
  .setView([37.7833, -122.4167], 12);
  var featureLayer = L.mapbox.featureLayer().loadURL('http://localhost:3000/users/1/trails.geoJson').addTo(userMap)
  console.log(featureLayer);
  // getTrailPoints(userMap);
  featureLayer.on('ready', function(){
    userMap.fitBounds(featureLayer.getBounds());
  });
});

上面的代码能够击中我的控制器,我的控制器能够检索正确的数据。这是我在控制器中的内容:

def index
    user = User.find_by(id: params[:user_id])
    @trails = user.trails
    @geojson = Array.new
    build_geojson(@trails, @geojson)
    p "*" * 50
    p @geojson
    respond_to do |format|
      format.html
      format.geojson { render geojson: @geojson }
    end
end

build_geojson方法工作得很好,您必须相信它。然而,不工作的是format.geojson并将其渲染为geojson。我很确定我需要创建一个Mime,但我不确定如何这样做,或者我应该用什么方式去做geojson。任何帮助都将非常感激。我也会回答任何问题。

我现在把它格式化为json,因为geojson就是json。然而,对于mapbox,当我这样做时,我得到以下错误:

http://a.tiles.mapbox.com/v4/marker/pin-l-tree+00607d.png?access_token=pk.e…hIjoiNDQ5Y2JiODdiZDZmODM0OWI0NmRiNDI5OGQzZWE4ZWIifQ.rVJW4H9TC1cknmRYoZE78w Failed to load resource: the server responded with a status of 400 (Bad Request)

该错误基本上导致图像不被加载。

当前支持的Mapbox图标中没有tree图标。使用park代替,这也是一张树的图片。

最新更新