You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Rails应用中gmaps4rails集成Google Maps仅显示蓝色问题求助

排查gmaps4rails仅显示蓝色区域的问题

我来帮你梳理这个问题——这种地图只显示蓝色底、无法加载正常地图瓦片的情况,大多和依赖加载顺序、Turbolinks执行时机或者Google Maps API配置有关,结合你的代码来看,有几个关键调整点:

1. 修正Application.js的依赖加载顺序

gmaps4rails依赖underscore库,但你的代码里underscore是在gmaps/google之后加载的,这会导致gmaps初始化时找不到依赖,直接引发渲染失败。调整顺序如下:

//= require jquery
//= require rails-ujs
//= require turbolinks
//= require bootstrap-sprockets
//= require underscore  // 移到gmaps/google之前,保证依赖先加载
//= require gmaps/google
//= require_tree .

2. 适配Turbolinks的页面加载时机

因为Rails启用了Turbolinks,页面切换时不会重新加载整个文档,直接写的初始化脚本可能在DOM或Google Maps API未完全就绪时就执行了。把地图初始化代码包裹在Turbolinks的加载事件里:

<script type="text/javascript">
document.addEventListener('turbolinks:load', function() {
  handler = Gmaps.build('Google');
  handler.buildMap({ provider: {}, internal: {id: 'map'}}, function() {
    markers = handler.addMarkers([
      {
        "lat": 0,
        "lng": 0,
        "picture": {
          "url": "http://icon-park.com/imagefiles/location_map_pin_yellow5.png",
          "width": 32,
          "height": 32
        },
        "infowindow": "hello!"
      }
    ]);
    handler.bounds.extendWith(markers);
    handler.fitMapToBounds();
  });
});
</script>

3. 验证Google Maps API的有效性

  • 确认你已经把<script src="//maps.google.com/maps/api/js?key=API_KEY"中的API_KEY替换为有效的Google Cloud API密钥
  • 登录Google Cloud控制台,检查该密钥是否启用了Maps JavaScript API,同时确认没有设置错误的IP/域名访问限制

4. 检查第三方资源的可用性

你引用的markerclusterer和infobox的CDN链接如果失效,也可能影响地图功能。可以尝试替换为更稳定的资源链接,或者将这些库本地引入到项目中。

调整完以上步骤后,重启Rails服务器并刷新页面,应该就能正常加载地图和标记了。

内容的提问来源于stack exchange,提问作者Muhammad Taimoor Sultani

火山引擎 最新活动