gpt4 book ai didi

javascript - Ruby on Rails - gmaps4rails - 传递标记数据。超出最大调用堆栈大小

转载 作者:行者123 更新时间:2023-12-03 06:39:28 25 4
gpt4 key购买 nike

您好,我正在使用 paloma gem 来分离我的一些 javascript。当尝试向 map 添加标记时,我从 gmaps 收到错误超过最大调用堆栈大小

我将一个变量(标记坐标)从我的 Controller 以 json 格式传递到 js 文件,然后将该变量添加到警报框(用于测试)和标记。

var arrCoo = this.params.hash;
alert(arrCoo);
markers = handler.addMarkers(arrCoo);

(this.params.hash 调用从我的 Controller 发送的变量)。在这种情况下,警报框显示坐标,例如:

[{"lat":57.4386015,"lng":16.6152354}]

但我收到错误超过最大调用堆栈大小,并且标记和 map 不显示。

<小时/>

如果我复制并粘贴坐标;

markers = handler.addMarkers([{"lat":57.4386015,"lng":16.6152354}]);

然后标记在 map 上显示没有问题。

<小时/>

就我而言,有什么区别

markers = handler.addMarkers(arrCoo);

markers = handler.addMarkers([{"lat":57.4386015,"lng":16.6152354}]);

??为什么警报框和标记属性以不同的方式看到变量?

<小时/>

更新:

我正在添加更多信息。使用以下代码,警报显示坐标数组,但 gmaps 给我错误。如果我尝试直接添加markers = handler.addMarkers(this.params.hash);,我会收到错误无法读取未定义的属性哈希。如何放入数组而不导致错误?

Paloma.controller('Gigs', {
show: function(){

var arrCoo = this.params.hash;


var mapStyle = [{"featureType":"administrative","elementType":"all","stylers":[{"visibility":"on"},{"lightness":33}]},{"featureType":"landscape","elementType":"all","stylers":[{"color":"#f2e5d4"}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"color":"#c5dac6"}]},{"featureType":"poi.park","elementType":"labels","stylers":[{"visibility":"on"},{"lightness":20}]},{"featureType":"road","elementType":"all","stylers":[{"lightness":20}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"color":"#c5c6c6"}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#e4d7c6"}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#fbfaf7"}]},{"featureType":"water","elementType":"all","stylers":[{"visibility":"on"},{"color":"#acbcc9"}]}];
var handler = Gmaps.build('Google');
handler.buildMap({
provider: {
mapTypeControl: false,
streetViewControl: false,
styles: mapStyle,
zoom: 4,
minZoom: 2,
maxZoom: 20,
center: new google.maps.LatLng(20.68177501, -103.3514794)
},
internal: {id: 'gigmap'}},
function(){

alert(arrCoo);
markers = handler.addMarkers(arrCoo);
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
});

}
});

最佳答案

超过最大调用堆栈大小发生在一个函数调用另一个函数等情况下。当您链接大量函数调用时,您会达到最大堆栈限制并收到错误。

就您而言,当您执行 handler.addMarkers(arrCoo); 时,您会调用一个函数,该函数在内部调用其他函数来绘制标记并返回结果。

唯一的解决方案是简化函数调用以减少堆栈

关于javascript - Ruby on Rails - gmaps4rails - 传递标记数据。超出最大调用堆栈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38028278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com