1893 avis : 5/5 ⭐️⭐️⭐️⭐️⭐️

Wordpress développement

Developpeur wordpress

Ajouter Geocoder sur une application rails

Avant de commencer (template utilisé 🙂 )

Avant de commencer, j’ai lancé le template très basique de rails new avec webpack + postgré

rails new appname --webpack=stimulus -d postgresql

Installer Geocoder

Geocoder est une gem disponible dans la ruby gem (librairie de ruby), permettant ainsi de rajouter les points coordonnées GPS sur un élément. Une adresse est composée avant tout de la longitude et de la latitude. Une fois l’adresse saisie dans un champs par exemple, geocoder pourra ainsi vous ajouter les coordonnées GPS afin de les afficher sur un service de mapping de votre choix. Pour information, il existe plusieurs services comme google maps api, mapbox (version free environ 50 000 requêtes API / mois).

Pour installer la gem, aller dans le gemfile puis ajouter :

# Use geocoder
gem 'geocoder'

Puis nous allons ensuite, lancer dans le terminale :

bundle

Afin de pouvoir installer la gem sur notre application rails :

Générer notre controller + model

Pour générer rapidement un model avec un controller ainsi que toutes les routes du CRUD,nous pouvons utiliser la commande scaffold (à ne pas utiliser pour des projets long terme). L’objectif de cet article étant de vous accompagner sur l’installation de geocoder avec un service de mapping online.

rails g scaffold produit

Vérifier notre schema pour ajouter une adresse

Afin de pouvoir Geocoder, nous allons ajouter un champs adresse ainsi que longitude et latitude à notre table produit afin d’avoir une localisation. Geocoder se chargera par la suite de remplir la colonne longitute et latitude en fonction des données rentrées par le user.

Générer une migration

Nous souhaitons ajouter trois colonnes dans notre table, nous allons alors lancer un fichier de migration. En utilisant la commande :

rails g migration AddColToProductuis :produits longitude:float latitude:float

Une fois le fichier de migration créé, si nous sommes d’accord, lancer un rails db:migrate

rails db:migrate

Ajouter le champs adresse :

Pour ajouter une adresse sur notre formulaire, il vous suffit d’aller dans la view et de rentrer cette ligne :

<%= simple_form_for @produit do |f| %>
<%= f.input :address %>
<%= f.submit %>

Nous avons maintenant un champ adresse dans notre formulaire de création :

Nous allons créer un produit avec une adresse et vérifier notre enregistrement en base de donnée :

Erreur commune, nous devons ajouter les params dans le controller de notre model (produit) :

Adapter notre model pour recevoir une adresse

Pour adapter notre model, il nous faut indiquer à la gem geocoder, dans le model produit :

geocoded_by :address
after_validation :geocode, if: :will_save_change_to_address?

Configurer Geocoder

Pour lancer la configuration automatique de geocoder lancer la commande :

rails generate geocoder:config

Nous devons aussi aller dans le fichier geocoder config afin de modifier la configuration sur les unités de mesure ainsi que sur la langue. Décommenter les lignes + modifier par vos valeurs (voir screen)

geocoder config


Vérifions notre vue :

Vérifions maintenant les données enregistrées dans la DB. Pour cela lancer dans le terminale :

rails c

Voici la data complété par notre gem ! Bravo 🎉 🎊

Connecter un service de mapping

Avant de commencer il vous faudra, vous créer un compte sur Mapbox. Une fois connecté récupérer la clef API qui doit être mise dans le fichier .env de votre application rails.

⚠️ N’oubliez pas de partager votre clef avec vos collaborateurs

Installer le javascript ainsi que le css de votre carte

Pour installer le style et les functions de javascript / css de votre service de mapping Mapbox, il vous faudra ajouter les lignes de codes suivantes dans votre fichier application.html.erb


<link href='https://api.mapbox.com/mapbox-gl-js/v2.11.0/mapbox-gl.css' rel='stylesheet' />
# dans le terminale taper : 
importmap pin mapbox-gl

Insérer votre map dans la view

Pour insérer et voir si notre map s’affiche, nous allons installer le code suivant dans la view index de nos produits :

<div style="width: 100%; height: 600px;"
  data-controller="map"
  data-map-markers-value="<%= @markers.to_json %>"
  data-map-api-key-value="<%= METTRE VOTRE CLEF API !!! %>"></div>

Coder le controller pour afficher la map

Pour pouvoir afficher votre map, nous allons devoir aller dans le controlleur de notre view est insérer le code suivant :

@markers = @produits.geocoded.map do |produit|
      {
        lat: produit.latitude,
        lng: produit.longitude
      }

Connecter notre map / controller avec du javascript (stimulus framework)

Avant de terminer et de pouvoir afficher notre map avec nos markers, nous allons devoir créer un controller javascript via le framework stimulus afin de rajouter quelques lignes de codes pour afficher notre map avec la localisation de nos produits.

Pour créer notre contrôleur stimulus :

rails g stimulus map

Ajouter notre code pour afficher les markers et la map dans notre controller stimulus

Remplacer et copier / coller tous le code présent dans votre contrôleur stimulus créé :

import { Controller } from "@hotwired/stimulus"
import mapboxgl from 'mapbox-gl'

export default class extends Controller {
  static values = {
    apiKey: String,
    markers: Array
  }

  connect() {
    mapboxgl.accessToken = this.apiKeyValue

    this.map = new mapboxgl.Map({
      container: this.element,
      style: "mapbox://styles/mapbox/streets-v10"
    })
    this.#addMarkersToMap()
    this.#fitMapToMarkers()
  }
  #addMarkersToMap() {
    this.markersValue.forEach((marker) => {
      const popup = new mapboxgl.Popup().setHTML(marker.info_window)
      new mapboxgl.Marker()
        .setLngLat([ marker.lng, marker.lat ])
        .setPopup(popup)
        .addTo(this.map)
    })
  }
  #fitMapToMarkers() {
    const bounds = new mapboxgl.LngLatBounds()
    this.markersValue.forEach(marker => bounds.extend([ marker.lng, marker.lat ]))
    this.map.fitBounds(bounds, { padding: 70, maxZoom: 15, duration: 0 })
  }
}

Dernière étape pour faire fonctionner la pop up

Ajouter dans le controller :

 def show
        @flats = Flat.all
        @markers = @flats.geocoded.map do |flat|
            {
                lat: flat.latitude,
                lng: flat.longitude,
                info_window: render_to_string(partial: "info_window", locals: {flat: flat})
            }
        end
    end

Puis vous aller créer un fichier :

_info_window.html.erb

<h2><%= flat.name %></h2>
<p><%= flat.address %></p>
Articles dans la thématique Wordpress :
SEO local, Google Maps, Optimisation locale, Annuaire local, Stratégie de localisation, Mots clés géolocalisés, Optimisation pour les moteurs de recherche locaux, Géolocalisation des mots-clés, Visibilité locale, Publicité géolocalisée, Positionnement local, Marketing local, Contenu localisé, SEO local WordPress, Visibilité sur les moteurs de recherche locaux, Annonce locale, Gestion des avis locaux, Réputation locale, Référencement WordPress local, Campagne de référencement local.
Comment améliorer votre SEO local sur WordPress

Vous avez une entreprise locale et vous souhaitez améliorer votre visibilité en ligne ? Le référencement local sur WordPress est la clé pour attirer des clients potentiels dans votre région. Dans cet article, je vais vous donner des conseils pratiques pour optimiser votre SEO local sur votre site WordPress. En.

Lire l'article
Extension SEO WordPress, Outils SEO WordPress, Optimisation SEO WordPress, Plugins référencement WordPress, Améliorer SEO WordPress, Longue traîne WordPress, SEO interne WordPress, Visibilité WordPress, Techniques SEO WordPress, Pluggin SEO WordPress
Les meilleurs plugins SEO pour WordPress en 2025

Saviez-vous que le référencement naturel est crucial pour le succès de votre site WordPress en 2025 ? Les plugins SEO peuvent grandement vous aider à optimiser votre visibilité en ligne et à atteindre un meilleur classement dans les résultats des moteurs de recherche. Dans cet article, je vais vous présenter.

Lire l'article
Optimiser son site WordPress pour le SEO mobile

Vous souhaitez améliorer le référencement de votre site WordPress pour les recherches effectuées sur mobile ? Vous êtes au bon endroit ! L’optimisation du SEO mobile est devenue essentielle de nos jours, compte tenu de l’importance croissante de l’utilisation des smartphones et des tablettes pour naviguer sur internet. Dans cet.

Lire l'article