2011-12-23 2 views
3

루비 멍청한 놈. gmaps4rails gem (멋진 보석)을 사용하여 Google지도에 점 목록을 다각형으로 표시하려고합니다. 아래의 코드 샘플을 기반으로 한 모든 제안 사항은 대단히 감사하겠습니다! 지도의 윤곽을 볼 수 있지만지도는없고 폴리곤도 없습니다. 업데이트 :이 코드가 업데이트되어 문제가 해결되었습니다.gmaps4rails로 다각형 표시

@polyjson = [] 
schoolpoints = []  
Schoolpoint.where(:school_id => params[:id]).each do |point| 
    schoolpoints << { :lng => point.longitude, :lat => point.latitude} 
end 
@polyjson = [schoolpoints] 
@polyjson = @polyjson.to_json 

을 다음보기에서 :

<%= gmaps({"polygons" => { "data" => @polyjson }}) 

Schoolpoint 모델 :

클래스 Schoolpoint 내 컨트롤러에서 학교

에 속하는 위도/경도 쌍의 목록입니다

class Point < ActiveRecord::Base 

    belongs_to :place 

    acts_as_gmappable :process_geocoding => false 

    def gmaps4rails_address 
    "#{longitude}, #{latitude}" 
    end 
end 

업데이트 :이 오류는 이제 더 이상 존재하지만 비슷한 문제를 다루는 사람에게 도움이 될 수 있도록 남겨 두었습니다. 마지막으로 잡히지 않은 Syntaxerror => 예기치 않은 토큰이있는 결과 js가 있습니다.

Gmaps.map = new Gmaps4RailsGoogle(); 
Gmaps.load_map = function() { 
Gmaps.map.initialize(); 
Gmaps.map.polygons = [[{"lng"=>-80.190262, "lat"=>25.774252, "strokeColor"=>"#FF0000", "strokeOpacity"=>0.3, "strokeWeight"=>1, "fillColor"=>"#FF0000", "fillOpacity"=>0.7}, {"lng"=>-87.6245284080505, "lat"=>41.8868315803506}, {"lng"=>-87.6241636276245, "lat"=>41.8674515900783}, {"lng"=>-87.6203870773315, "lat"=>41.8674835487326}, {"lng"=>-87.6167392730712, "lat"=>41.8579591627635}, {"lng"=>-87.6348495483398, "lat"=>41.8577034549953}, {"lng"=>-87.6342701911926, "lat"=>41.8588701133785}, {"lng"=>-87.6341199874878, "lat"=>41.858946025344}, {"lng"=>-87.6341146230697, "lat"=>41.8590858629394}, {"lng"=>-87.6341199874878, "lat"=>41.8600767034266}, {"lng"=>-87.6342219114303, "lat"=>41.8612433185139}, {"lng"=>-87.634157538414, "lat"=>41.8613112372298}, {"lng"=>-87.6342540979385, "lat"=>41.8621502271823}, {"lng"=>-87.6341950893402, "lat"=>41.8622580965204}, {"lng"=>-87.6342433691024, "lat"=>41.8626336402037}, {"lng"=>-87.6341092586517, "lat"=>41.8630930789441}, {"lng"=>-87.6342326402664, "lat"=>41.8631010691539}, {"lng"=>-87.6342862844467, "lat"=>41.8651984646832}, {"lng"=>-87.6342165470123, "lat"=>41.865314318812}, {"lng"=>-87.6342540979385, "lat"=>41.865929540668}, {"lng"=>-87.6343238353729, "lat"=>41.8661652409794}, {"lng"=>-87.6343667507171, "lat"=>41.8664728485533}, {"lng"=>-87.6342701911926, "lat"=>41.866564731048}, {"lng"=>-87.6343882083892, "lat"=>41.8673317449823}, {"lng"=>-87.6344525814056, "lat"=>41.8680388278011}, {"lng"=>-87.6346457004547, "lat"=>41.8691693450993}, {"lng"=>-87.6346671581268, "lat"=>41.8696886572982}, {"lng"=>-87.6345813274383, "lat"=>41.8698804022745}, {"lng"=>-87.6347583532333, "lat"=>41.869992253245}, {"lng"=>-87.634892463684, "lat"=>41.8706873227465}, {"lng"=>-87.6353269815445, "lat"=>41.8726167002032}, {"lng"=>-87.6352626085281, "lat"=>41.8728443868687}, {"lng"=>-87.6354557275772, "lat"=>41.8730081609862}, {"lng"=>-87.6353698968887, "lat"=>41.8732797854267}, {"lng"=>-87.6356971263885, "lat"=>41.8740227522642}, {"lng"=>-87.6356971263885, "lat"=>41.8746458790817}, {"lng"=>-87.6359224319458, "lat"=>41.87509724279}, {"lng"=>-87.6361316442489, "lat"=>41.8754088017203}, {"lng"=>-87.6364105939865, "lat"=>41.8754727110567}, {"lng"=>-87.6364642381668, "lat"=>41.8757642965932}, {"lng"=>-87.6371240615844, "lat"=>41.876678987795}, {"lng"=>-87.637939453125, "lat"=>41.8801059676767}, {"lng"=>-87.6379930973053, "lat"=>41.8806172030015}, {"lng"=>-87.6378536224365, "lat"=>41.8829017358812}, {"lng"=>-87.6375961303711, "lat"=>41.8844593251054}, {"lng"=>-87.6372849941253, "lat"=>41.8857213439117}, {"lng"=>-87.6371347904205, "lat"=>41.8860408383893}, {"lng"=>-87.6355576515197, "lat"=>41.8870552227663}, {"lng"=>-87.6282513141632, "lat"=>41.8870951588295}, {"lng"=>-87.6281654834747, "lat"=>41.8868076186168}]]; 
153:2439 Uncaught SyntaxError: Unexpected token > 
Gmaps.map.create_polygons(); 
Gmaps.map.adjustMapToBounds(); 
Gmaps.map.callback(); 
}; 
window.onload = function() { Gmaps.loadMaps(); }; 
+0

결과 js는 무엇입니까? – apneadiving

+0

결과로 js가 질문에 추가되었습니다 ... 나는 그것을 생각해야합니다. 감사! 이 문제는 http://stackoverflow.com/questions/3143698/uncaught-syntaxerror-unexpected-token에서 문제가 탭에서 탭 중단됨을 확인했습니다. 내보기에서 탭 중지를 제거하고 공백으로 바 꾸었습니다. 변경하지 않았습니다. – tbone

답변

3

(스크린 캐스트에서) 기본 자습서를 통과했으며 마커가 올바르게 작동합니다. 하지만 폴리 라인에 문제가있었습니다 (폴리곤을 사용하는 것처럼). 결국 나는 내 문제를 해결했다. (폴리곤을 도울 수있다.) 그들이 내 주면서 그래서,보기는 동일합니다

<%= gmaps({ 
     "polylines" => { "data" => @bemap_polylines } 
    }) 
%> 

모델은 또한 동일합니다.

class Character < ActiveRecord::Base 
    belongs_to :bemap 
    acts_as_gmappable 

    def gmaps4rails_address 
    #describe how to retrieve the address from your model, if you use directly a db column, you can dry your code, see wiki 
    address 
    logger.info address 
    end 

end 

그래서 주된 문제는 컨트롤러에있었습니다. 여기 내 것이 있습니다 :

def show 
    @bemap = Bemap.find(params[:id]) 
    @bemap_polylines = [] 
    @bemap_characters = [] 
    @bemap.characters.each do |v| 
     @bemap_characters << { :lng => v[:longitude], :lat => v[:latitude]} 
    end 
    @bemap_polylines << @bemap_characters 
    @bemap_polylines = @bemap_polylines.to_json 
    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @bemap } 
    end 
    end 
+0

챔피언처럼 작동합니다. 너는 남자 야. – tbone

1

Gmaps4rails는 폴리곤 용 js를 작성하는 기본 제공 방법을 제공하지 않습니다.

사용하는 형식이 잘못되었습니다. doc : https://github.com/apneadiving/Google-Maps-for-Rails/wiki/Polygons을 참조하십시오.

+0

나는 wiki (나는 생각한다)와 일치하는 방법을 수정하고 변경 사항을 반영하기 위해 질문을 업데이트했지만 여전히 같은 오류가 발생했다. 명백한 실수가 있습니까? 의견을 주셔서 감사합니다, 대단히 감사합니다. – tbone

+0

시도해보기 : @ polyjson = [schoolpoints.to_json] – apneadiving

+0

팁 주셔서 감사합니다! 올바른 방향으로 이동했지만 새로운 오류가 표시되었습니다. 정의되지 않은 Gmaps4Rails.a.adjustMapToBounds의 application.js의 특성 'LatLng를'읽을 수 없습니다 : 19 Gmaps.load_map을 153 : 2441 a.loadMaps의 application.js : 당신이 이전에 처리되지 않는 형식 오류를 가로 질러 온 19 창로드 – tbone