안녕하세요 저는 팔로마 보석을 사용하여 일부 자바 스크립트를 분리합니다. 맵에 마커를 추가하려고하면 gmaps에서 오류 Maximum call stack size exceeded
가 표시됩니다.Ruby on rails - gmaps4rails - 마커 데이터 전달. 최대 호출 스택 크기가 초과되었습니다
내 컨트롤러에서 json 형식의 변수 (마커 좌표)를 js 파일로 전달한 다음 해당 변수를 경고 상자 (테스트 용)와 마커에 추가합니다.
var arrCoo = this.params.hash;
alert(arrCoo);
markers = handler.addMarkers(arrCoo);
(this.params.hash
은 내 컨트롤러에서 보낸 변수를 호출합니다.)
[{"lat":57.4386015,"lng":16.6152354}]
하지만 오류 Maximum call stack size exceeded
및 마커와지도가 표시되지 않습니다를 얻을 :이 경우 은 경고 상자는 좌표 예를 표시합니다.
좌표를 복사하여 붙여 넣으면,
markers = handler.addMarkers([{"lat":57.4386015,"lng":16.6152354}]);
마커는지도에 아무런 문제가 없습니다. 내 경우
는
markers = handler.addMarkers(arrCoo);
및
markers = handler.addMarkers([{"lat":57.4386015,"lng":16.6152354}]);
차이점은 무엇입니까 ?? 경고 상자와 마커 속성에서 변수가 같은 방식으로 표시되지 않는 이유는 무엇입니까?
업데이트 : 더 많은 정보를 추가하고
. 다음 코드에서는 경고가 좌표 배열을 표시하지만 gmaps가 오류를 표시합니다. 직접 시도하여 markers = handler.addMarkers(this.params.hash);
을 추가하면 cannot read property hash of undefined
오류가 발생합니다. 오류를 발생시키지 않고 배열을 넣을 수 있습니까?
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();
});
}
});
감사를 줄이기 위해 호출 단순화하는 것입니다,하지만 난 후이 작업을 수행 할 수있는 방법은 무엇입니까? 이 배열을 컨트롤러에서 js 파일로 전달하는 다른 방법은 없습니다. –
더 많은 정보와 코드로 내 질문을 업데이트했습니다. –