|
Champ CARTE et Clé API Google |
Débuté par Soledad, 19 mai 2015 17:54 - 3 réponses |
| |
| | | |
|
| |
Posté le 19 mai 2015 - 17:54 |
Bonjour,
Je tente l'utilisation du champ CARTE.
J'ai compris qu'il faut au préalable avoir une clé Google et s'authentifier à l'aide de CarteLicenceGgl(xxx)
Lorsque je suis sur la console développeur de Google je possède plusieurs possibilités dans Api et authentifications/Identifiants : - Identifiant client de l'application Web - Clé pour les applications de serveur - Clé pour les applications de navigateur
J'ai essayé les 3 clés dans le CarteLicenceGgl(xxx) Mais chaque fois que je tente le code suivant j'ai une erreur.
// Init Projet CarteLicenceGgl(xxx)
// Init Fenêtre adrAdresse est une Adresse adrAdresse.Rue="2 rue Voltaire" adrAdresse.CodePostal="75011" adrAdresse.Ville="PARIS" CarteAffichePosition(CARTE_Carte,adrAdresse)
L'erreur affichée est "The provided Google API key is invalid or this site is not Autorizied to use it".
Avez-vous une piste à me donner ? |
| |
| |
| | | |
|
| | |
| |
Posté le 02 juin 2015 - 08:24 |
| |
| |
| | | |
|
| | |
| |
Posté le 04 juin 2015 - 19:45 |
Bonjour,
Après avoir galéré une bonne journée avec Google sur sujet aussi sur le net voici la solution pour Windev :
Je vous donne les deux cas que j'ai rencontrés pour l'affichage de la carte : 1 - Cas gratuit : rien à faire aucune déclaration à faire au niveau de google utiles pour les tests d'intégration. même pas au niveau CarteLicenceGgl()
2 - Cas "Google Maps API for work" : Alors là ne pas faire l'erreur d'utiliser la fonction CarteLicenceGgl() car cette fonction est fausse avec l'API pro Quand vous prenez un abonnement chez Google pour Maps API for work ceux-ci vous communique deux choses utiles le "Client ID" et "Crypto Key" et non une clef API. Il faut donc indiquer le "Client ID" à l'init du projet comme suivant
KeyGoogle est une chaîne = "ClientID" CarteConfigureAPIGgl("client="+KeyGoogle) Cette portion de code vous permettra d'obtenir l'affichage de la carte sans aucune erreurs, et d'y placer des marqueur etc...
Maintenant petite subtilité si vous souhaitez utiliser d'autres fonctions de l'API Google non implémenté type le géo-codage inversé.
1 - Cas gratuit : je vous donne la procédure
STAdress est une structure sNum est une chaîne sRue est une chaîne sVille est une chaîne sDepartement est une chaîne sRegion est une chaîne sPays est une chaîne sCodePos est une chaîne sCompose est un chaîne FIN gtabAdress est un tableau de STAdress
Procedure pl_geocode_reverse(sLalitude est une chaîne, sLongitude est une chaîne) sUrlSigne est une chaîne sUrlSigne = "https://maps.googleapis.com/maps/api/geocode/json?latlng="+sLalitude+","+sLongitude+"&sensor=false&language=fr" FIN
SI TableauOccurrence(gtabAdress) > 0 ALORS TableauSupprimeTout(gtabAdress) FIN TableauAjouteLigne(gtabAdress) sResultJson est une chaîne GeoInver est un Variant bResLancement = HTTPRequête(sUrlSigne) SI bResLancement ALORS sResultJson = HTTPDonneRésultat() FIN GeoInver=JSONVersVariant(sResultJson) POUR i = 1 A 10 SELON GeoInver.results[1].address_components[i].types[1] CAS "street_number" gtabAdress[1].sNum = GeoInver.results[1].address_components[i].long_name CAS "route" gtabAdress[1].sRue = GeoInver.results[1].address_components[i].long_name CAS "locality" gtabAdress[1].sVille = GeoInver.results[1].address_components[i].long_name CAS "administrative_area_level_2" gtabAdress[1].sDepartement = GeoInver.results[1].address_components[i].long_name CAS "administrative_area_level_1" gtabAdress[1].sRegion = GeoInver.results[1].address_components[i].long_name CAS "country" gtabAdress[1].sPays = GeoInver.results[1].address_components[i].long_name CAS "postal_code" gtabAdress[1].sCodePos = GeoInver.results[1].address_components[i].long_name FIN FIN gtabAdress[1].sCompose = GeoInver.results[1].formatted_address
2 - Cas "Google Maps API for work" : La petite subtilité, il faut signer votre url pour l'envoyer à Google avec la "Crypto Key" fournis par Google. En gros sur une url de ce type : "https://maps.googleapis.com/maps/api/geocode/json…", vous devez crypter tous ce qui est après "https://maps.googleapis.com/"
Voici la procédure pour signe l'url : sUrl_a_Signer est l'url complète (https://maps.googleapis.com/maps/api/geocode/json…) sPrivateKey est Crypto Key fournis par Google.
Procedure pl_google_signUrl(sUrl_a_Signer est une chaîne ANSI, sPrivateKey est une chaîne ANSI) sSignature est une chaîne ANSI sUrlGoogle est une chaîne ANSI sDecodedKey est une chaîne ANSI
sUrlGoogle = URLExtraitChemin(sUrl_a_Signer,urlProtocole) sUrlGoogle += "://"+URLExtraitChemin(sUrl_a_Signer,urlDomaine) sPartie_Url_A_Signer est une chaîne ANSI = URLExtraitChemin(sUrl_a_Signer,urlCheminRessource + urlNomRessource + urlExtensionRessource) + ["?"] + URLExtraitChemin(sUrl_a_Signer,urlRequête)
sDecodedKey = Remplace(sPrivateKey,"-","+") sDecodedKey = Remplace(sDecodedKey,"_","/") sDecodedKey = Décrypte (sDecodedKey,"",crypteAnsi,encodeBASE64)
bufSignature est un Buffer = HashChaîne(HA_HMAC_SHA_160,sPartie_Url_A_Signer,sDecodedKey)
sSignature = Remplace(bufSignature,"+","-") sSignature = Remplace(sSignature,"/","_") sSignature = Crypte (sSignature,"",crypteAnsi,encodeBASE64)
RENVOYER sUrl_a_Signer + "&signature=" + sSignature
J'espère avoir été d'une utilité sur ce sujet
Hervé. |
| |
| |
| | | |
|
| | |
| |
Posté le 05 juin 2015 - 10:00 |
Bonjour à tous petite erreur sur la procédure pl_google_signUrl, sur la dernière étapes je vous renvoie la bonne syntaxe.
Procedure pl_google_signUrl(sUrl_a_Signer est une chaîne ANSI, sPrivateKey est une chaîne ANSI) sSignature est une chaîne ANSI sUrlGoogle est une chaîne ANSI sDecodedKey est une chaîne ANSI
sUrlGoogle = URLExtraitChemin(sUrl_a_Signer,urlProtocole) sUrlGoogle += "://"+URLExtraitChemin(sUrl_a_Signer,urlDomaine) sPartie_Url_A_Signer est une chaîne ANSI = URLExtraitChemin(sUrl_a_Signer,urlCheminRessource + urlNomRessource + urlExtensionRessource) + ["?"] + URLExtraitChemin(sUrl_a_Signer,urlRequête)
sDecodedKey = Remplace(sPrivateKey,"-","+") sDecodedKey = Remplace(sDecodedKey,"_","/") sDecodedKey = Décrypte (sDecodedKey,"",crypteAnsi,encodeBASE64)
bufSignature est un Buffer = HashChaîne(HA_HMAC_SHA_160,sPartie_Url_A_Signer,sDecodedKey)
sSignature = Crypte (bufSignature,"",crypteAnsi,encodeBASE64) sSignature = Remplace(sSignature,"+","-") sSignature = Remplace(sSignature,"/","_")
RENVOYER sUrl_a_Signer + "&signature=" + sSignature |
| |
| |
| | | |
|
| | | | |
| | |
|