Gmaps4rails - 当 JSON == "[]" 时,地图在第一次加载时抛出 JS 错误

Posted

技术标签:

【中文标题】Gmaps4rails - 当 JSON == "[]" 时,地图在第一次加载时抛出 JS 错误【英文标题】:Gmaps4rails - Map throwing JS error on first load when JSON == "[]" 【发布时间】:2012-11-14 00:32:56 【问题描述】:

我正在使用地理编码器 gem 的 .nearby 方法来查询我的数据库并返回附近的位置对象。

问题一:第一次加载地图时,JS没有传任何标记,也不加载地图。如何在不加载标记的情况下解决此问题?

<script type="text/javascript">
Gmaps.map = new Gmaps4RailsGoogle();
Gmaps.load_map = function() 
Gmaps.map.map_options.detect_location = true;
Gmaps.map.map_options.center_on_user = true;
Gmaps.map.initialize();
Gmaps.map.markers = ; // BLOWS UP HERE
Gmaps.map.markers_conf.list_container = "markers_list";
Gmaps.map.create_markers();
Gmaps.map.adjustMapToBounds();
Gmaps.map.callback();
;
Gmaps.oldOnload = window.onload;
 window.onload = function()  Gmaps.triggerOldOnload(); Gmaps.loadMaps(); ;
</script>`

问题 2:当用户搜索并且附近没有可供他们搜索的结果时,如何从仅显示随机位置(现在它加载到海洋中部)中恢复。

问题 3:当用户搜索并且附近没有可用结果时,我是否可以使用浏览器地理定位将附近的位置显示到他们当前位置(我知道并非所有浏览器都支持)。

【问题讨论】:

gist.github.com/4075215 废话。你用的是什么版本? gmaps4rails 1.5.6 和 rails 3.2.8 和 ruby​​ 1.9.3p194 【参考方案1】:

答案 1:

gem 中没有错误。

你的这行让 javascript 哭了:

@json = nil

确实 nil 不是有效的 json。

你应该这样做:

@json = [].to_json

答案 2

如果您的查询没有返回任何内容,请创建另一个以获取随机对象。看不出有什么问题。

答案 3

gem 中包含来自浏览器的地理位置,您甚至可以在成功时进行回调。 See code。但是您必须编写适合您自己逻辑的 javascript。

【讨论】:

Answer 1 所以我使用了@json = [].to_json,但现在这会加载海洋中部,并在侧边栏中返回No dealers found 的通知。如何仅针对第一个负载情况编辑此消息,使其显示Search above to find dealers 或类似内容。 答案 2 但这仍然会放置一个标记,并将其添加到侧边栏,这对用户来说是非常令人困惑的行为。我几乎认为只显示海洋中间是一个更好的解决方案,哈哈。想法? 您可以使用Gmaps.map.callback 使地图行为适应您的情况。你可以简单地做你想做的事!你的控制器知道确切的情况,告诉你的看法。

以上是关于Gmaps4rails - 当 JSON == "[]" 时,地图在第一次加载时抛出 JS 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用推文中的位置字段从地理编码器结果中获取坐标

当Json遇到Map

当Json遇到Map

当Json遇到Map

当 MySql 不支持 json 索引时,Javers 如何处理对 json 值字段的频繁查询?

当用作模块时,如何让 json-server 延迟响应?