我正在尝试使用存储在我的数据库中的数据在地图上生成标记。目前显示地图,控制台中没有错误。我假设我没有正确访问数据或者JSON格式不正确。
目前没有使用任何宝石来制作地图, Ruby 2.3.3, Rails 5.1.6, SQLite数据库
当我去骑手/ json时,它会显示一个包含所有骑手数据的数组。
已经尝试了几个小时,并搜索,尝试不同的解决方案。我当前的设置是在终端或检查时不显示错误的设置。我确实看到了“GET”请求和“Rider Load SELECT”车手“。* FROM”车手“在终端中有200个响应。
任何帮助都会受到赞赏,或者对我遗漏的内容的解释会很棒。
下面是我生成地图的_map.html.erb文件,我使用<%= render(“layouts / map”)%>来调用它。在静态页面上。
<script>
function initMap() {
var myLatLng = {lat: 40.014, lng: -105.270};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: myLatLng
});
$.getJSON("/riders.json", function ( data ) {
$.each(data, function(key, data) {
var latLng = new google.maps.LatLng(data.lat, data.lng );
var marker = new google.maps.Marker({
position: latLng,
map: map
});
});
});
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?
key=AIzaSyAs2tWVlXznbp6ySamqYXot3sd7wNNLuXI&callback=initMap">
</script>
views / riders / index.json.jbuilder文件:
json.array! @riders do |rider|
json.lat rider.latitude
json.lng rider.longitude
end
控制器/ riders_controller:
class RidersController < ApplicationController
before_action :set_rider, only: [:show, :edit, :update, :destroy]
respond_to? :json #respond_to w/o ? threw an error
def index
@riders = Rider.all
render json: @riders
end
def show
@rider = Rider.where(id: params[:id])
respond_to do |format|
format.html
format.json { render json: @rider }
end
end
这是我第一次将数据用于API,任何进一步阅读的链接也会受到欢迎。谢谢。
答案 0 :(得分:0)
非常小的调整解决了它....
我依靠我的riders.json文件来分配数据,但事实并非如此。
我编辑了:
var latLng = new google.maps.LatLng(data.lat,data.lng);
到
var latLng = new google.maps.LatLng(data.latitude,data.longitude);
哇我花时间忽略基本的东西是令人震惊的......但我发现使用console.log(JSON.stringify(data.longitude)); (和纬度)正在生成正确的数据,所以它归结为我的问题,我没有正确分配。我很震惊,我昨天没想到这一点。感谢任何花时间阅读本文的人。