Rails 4 – Gmaps4Rails – la carte ne sera pas rendue

Je suis en difficulté pour que mes cartes google fonctionnent dans mon application Rails.

Tout fonctionnait bien – je suis passé à travailler sur la prochaine fonctionnalité et je suis revenu pour trouver qu'il ne fonctionne plus.

J'ai des modèles pour l'adresse, le profil et le projet. J'utilise l'adresse dans chaque profil et projet. Dans chaque cas, la carte ne s'affiche pas.

Les associations entre les modèles sont:

Adresse

belongs_to :addressable, :polymorphic => true 

Profil

 has_many :addresses, as: :addressable accepts_nested_attributes_for :addresses, reject_if: :all_blank, allow_destroy: true 

Projet

 has_many :addresses, as: :addressable accepts_nested_attributes_for :addresses, reject_if: :all_blank, allow_destroy: true 

Les fonctions de contrôleur sont:

Adresse

 def create @address = Address.new(address_params) authorize @address respond_to do |format| if @address.save format.html { redirect_to @address, notice: 'Address was successfully created.' } format.json { render :show, status: :created, location: @address } else format.html { render :new } format.json { render json: @address.errors, status: :unprocessable_entity } end end end 

Profil

 def show # debugger @profile = Profile.includes(:industries).find(params[:id]) # @organisation = Organisation.find(params[:organisation_id]) # @profiles = @organisation.profiles @addresses = @profile.addresses @hash = Gmaps4rails.build_markers(@addresses) do |address, marker| marker.lat address.latitude marker.lng address.longitude marker.infowindow address.full_address end end 

Projet

 def show @invite = Invite.new @project = Project.find(params[:id]) @addresses = @project.addresses @hash = Gmaps4rails.build_markers(@addresses) do |address, marker| marker.lat address.latitude marker.lng address.longitude marker.infowindow address.full_address end 

Dans mes profils, j'ai:

  <%= render partial: "profiles/main_address" %> 

Dans les profils / adresse principale, j'ai:

 <script src="//maps.google.com/maps/api/js?v=3.18&sensor=false&client=&key=&libraries=geometry&language=&hl=&region="></script> <script src="//google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.14/src/markerclusterer_packed.js"></script> <script src='//google-maps-utility-library-v3.googlecode.com/svn/tags/infobox/1.1.9/src/infobox_packed.js' type='text/javascript'></script> <!-- only if you need custom infoboxes --> <div style='width: 800px;'> <div id="map" style='width: 800px; height: 400px;'></div> </div> <script> handler = Gmaps.build('Google'); handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){ markers = handler.addMarkers(<%=raw @hash.to_json %>); handler.bounds.extendWith(markers); handler.fitMapToBounds(); handler.getMap().setZoom(8); }); </script> 

J'ai le même processus dans mon dossier de projets pour afficher l'adresse du projet.

Dans mon fichier gemme, j'ai:

 gem 'google-api-client', '~> 0.7.1', require: 'google/api_client' gem 'gmaps4rails', '~> 2.1', '>= 2.1.2' gem 'underscore-rails' 

Je ne peux pas comprendre pourquoi je viens d'avoir un espace vide au lieu d'une carte montrant l'adresse.

Dans mon inspecteur de console, je peux voir une erreur rouge qui dit:

 primitives.self-5b8a3a6….js?body=1:16 Uncaught ReferenceError: MarkerClusterer is not definedGmaps.Google.Primitives @ primitives.self-5b8a3a6….js?body=1:16Gmaps.Objects.Handler.Handler.setPrimitives @ handler.self-2f220ca….js?body=1:122Handler @ handler.self-2f220ca….js?body=1:8Gmaps.build @ base.self-8dd1d1a….js?body=1:9(anonymous function) @ 14:760 

Googling the error, Uncaught ReferenceError: MarkerClusterer n'est pas défini, le fabricant de gemmes suggère l'exécution:

 rails generate gmaps4rails:install 

Quand j'essaie, je reçois une erreur qui dit:

 Running via Spring preloader in process 93390 Could not find generator 'gmaps4rails:install'. Maybe you meant 'paper_trail:install', 'gmaps4rails:copy_js' or 'responders:install' 

Mon inspecteur de console affiche également plusieurs avertissements liés à gmaps, comme suit:

 Google Maps API warning: NoApiKeys https://developers.google.com/maps/documentation/javascript/error-messages#no-api-keys util.js:220 Google Maps API warning: RetiredVersion https://developers.google.com/maps/documentation/javascript/error-messages#retired-version util.js:220 Google Maps API warning: SensorNotRequired https://developers.google.com/maps/documentation/javascript/error-messages#sensor-not-required util.js:220 Google Maps API warning: InvalidClientId https://developers.google.com/maps/documentation/javascript/error-messages#invalid-client-id util.js:220 Google Maps API warning: InvalidKey https://developers.google.com/maps/documentation/javascript/error-messages#invalid-key 14:1 Failed to decode downloaded font: http://localhost:3000/assets/flaticon-080b09d3f53cb13c2f9d9a4c53ad7a71206bd8e2390c3e18d2b42ce9388a49a6.woff 

J'ai une clé api – Je ne sais pas où le placer dans mon code.

Quelqu'un peut-il voir comment vous aider. Je ne me dérange pas si je ne résolus pas les problèmes d'avertissement avec Gmaps, mais je souhaite revenir à l'endroit où j'étais lorsque la carte a été affichée.

Donc, votre problème concerne ces deux lignes:

 <script src="//google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.14/src/markerclusterer_packed.js"></script> <script src='//google-maps-utility-library-v3.googlecode.com/svn/tags/infobox/1.1.9/src/infobox_packed.js' type='text/javascript'></script> 

Quelqu'un a référencé les bibliothèques de bibliothèques de markerclusterer et d' infobox directement de Google SVN (ce qui est une mauvaise pratique) et la bibliothèque a été déplacée à Github il y a quelques semaines.

Vous pouvez télécharger la bibliothèque infobox partir de votre projet et faire référence infobox_packed.js fichier infobox_packed.js :

 <script src='path/to/infobox_packed.js' type='text/javascript'></script> 

De même, vous pouvez télécharger la bibliothèque de marqueur de marqueur ici . Attention: pour le groupe de marqueurs, vous aurez besoin de la src et des images .

Veuillez lire cette question et réponses , aussi celle-ci et peut – être celle-ci . Je vous conseille vivement de lire toutes les réponses aux questions, car certaines d'entre elles contiennent de mauvaises solutions (bibliothèques de référence à partir du nouvel emplacement de Github, au lieu de les télécharger sur votre projet et de les référencer à partir d'une mauvaise pratique)