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 错误的主要内容,如果未能解决你的问题,请参考以下文章