ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Ajouter une Google Map à un formulaire FoxinCloud   



L'auteur

FoxInCloud (Th. Nivelet)
France France
Membre Simple
# 0000000014
enregistré le 13/10/2004

http://www.foxincloud.com/
Nivelet Thierry
75016 Paris
de la société Abaque
Fiche personnelle


Note des membres
pas de note

Contributions > 79 RIA > Ajax

Ajouter une Google Map à un formulaire FoxinCloud
# 0000000917
ajouté le 21/04/2016 13:56:00 et modifié le 21/04/2016
consulté 3392 fois
Niveau initié

Version(s) Foxpro :
VFP 9.0

Description
Cet article explique comment, à partir d'un formulaire VFP standard, vous pouvez ajouter une carte Google avec un haut niveau d'interaction utilisateur :

Adding a Google Map to a FoxInCloud Form

Code source :
  PROCEDURE oleIE.wcHTMLgen
    LPARAMETERS toHTMLgen AS awHTMLgen OF awHTML.prg, tlInnerHTML && {en} doc in Parent Code {fr} doc dans le code parent

    local cScript as String

    && {en} The following JavaScript:
    && {en} - instantiates a Google Maps API object and stores a reference in a property added to the form's HTML element
    && {en} - implements the 'center_changed' event that fires when user moves the map using the mouse:
    && {en} event handler writes the new lattitude and longitude to the spinners in the page
    && {en} notes:
    && {en} - $() is a shortcut to document.getElementById()
    && {en} - cLitteralJS() (modify command abTxt) turns any VFP value into a JavaScript literal
    && {en} - [test ? valueTrue : valueFalse] is the JavaScript equivalent for Iif()

    && {fr} Ce JavaScript :
    && {fr} - instancie un objet Google Maps API et stocke sa référence dans une propriété ajoutée à l'élément HTML du formulaire
    && {fr} - implémente l'événement 'center_changed' déclenché lorsque l'utilisateur déplace la carte avec la souris
    && {fr} ce code écrit les nouvelles latitude et longitude dans les toupies présentes sur la page HTML
    && {fr} notes :
    && {fr} - $() est un raccourci (alias) de document.getElementById()
    && {fr} - cLitteralJS() (modify command abTxt) convertit toute valeur VFP en un littéral JavaScript
    && {fr} - [test ? valueTrue : valueFalse] est l'équivalent JavaScript de Iif()

    && https://developers.google.com/maps/documentation/javascript/reference

    text to cScript noshow textmerge flags 1 pretext 15
      $('<<m.thisForm.wcID>>').googleMap = new google.maps.Map(
        $('<<m.this.wcID>>')
      , {
          center: {lat: <<cLitteralJS(thisForm.spnLat.Value)>>, lng: <<cLitteralJS(thisForm.spnLng.Value)>>}
        , zoom: 8
        }
      );
      $('<<m.thisForm.wcID>>').googleMap.addListener('center_changed'function(){
        var googleMap = $('<<m.thisForm.wcID>>').googleMap
        , LatLng = googleMap.getCenter()
        , zoom = googleMap.getZoom()
        , dec = zoom > 12
          ? 5
          : (zoom > 10
            ? 4
            : (zoom > 8
              ? 3
              : (zoom > 6
                ? 2
                : (zoom > 4
                  ? 1
                  : 0
                )
              )
            )
          )
        ;
        $('<<thisForm.spnLat.wcID>>').valueSet(LatLng.lat().toFixed(dec) + '°');
        $('<<thisForm.spnLng.wcID>>').valueSet(LatLng.lng().toFixed(dec) + '°');
      });
    endtext

    m.toHTMLgen.cScriptJSadd(m.cScript)

  PROCEDURE oleIE.NavigateComplete2
    *** ActiveX Control Event ***
    LPARAMETERS pdisp, url

    && {en} fires in desktop mode only
    && {fr} ne se déclenche qu'en mode desktop

    url = GetWordNum(m.url, 2, '@'&& eg 'https://www.google.com/maps/@48.8000,2.2000,10z' > '48.8000,2.2000,10z'

    thisform.spnLat.Value = Cast(GetWordNum(m.url, 1, ','as N(6,2))
    thisform.spnLng.Value = Cast(GetWordNum(m.url, 2, ','as N(6,2))


Commentaires
Aucun commentaire enregistré ...

Publicité

Les pubs en cours :

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2018.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0