【问题标题】:render geojson w/ respond_to rails & mapbox/leaflet使用 respond_to rails 和 mapbox/leaflet 渲染 geojson
【发布时间】:2015-11-24 11:30:39
【问题描述】:

所以我目前正在尝试从我的 rails 控制器请求一些 geojson 数据。我正在使用通过 mapbox/leaflet 提供给我的 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)

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

【问题讨论】:

  • Geojson 只是 json,为什么不直接使用 format.json 或 format.js ??
  • 更新问题@nathanvda
  • 我看不出这个错误与geojson有什么关系?加载标记时出错???

标签: ruby-on-rails leaflet mime mapbox geojson


【解决方案1】:

目前支持的 Mapbox 图标中没有 tree 图标。改用park,这也是一棵树的图片。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    相关资源
    最近更新 更多