Subversion Repositories Applications.bazar

Rev

Rev 478 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1                                                                                      |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or                                        |
// | modify it under the terms of the GNU Lesser General Public                                           |
// | License as published by the Free Software Foundation; either                                         |
// | version 2.1 of the License, or (at your option) any later version.                                   |
// |                                                                                                      |
// | This library is distributed in the hope that it will be useful,                                      |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
// | Lesser General Public License for more details.                                                      |
// |                                                                                                      |
// | You should have received a copy of the GNU Lesser General Public                                     |
// | License along with this library; if not, write to the Free Software                                  |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: bazar.fonct.google.php,v 1.1 2007-06-04 15:24:00 alexandre_tb Exp $
/**
* Formulaire
*
* Les fonctions et script specifique a un carto google
*
*@package bazar
//Auteur original :
*@author        Aleandre GRANIER <alexandre@tela-botanica.org>
*@copyright     Tela-Botanica 2000-2007
*@version       $Revision: 1.1 $
// +------------------------------------------------------------------------------------------------------+
*/

$script = '
// Variables globales
    var map = null;
        var geocoder = null;
        var marker = null;
        var flat = null;
    var flon = null;

 // cette fonction peut d�j� �tre pr�sente
                // fonction portable pour ajout de listeners
                function addListener(element, baseName, handler)
                {
                        if (element.addEventListener) {
                                element.addEventListener(baseName, handler, false) ;
                        } else if (element.attachEvent) {
                                element.attachEvent(\'on\'+baseName, handler) ;
                        }
                }
    addListener(window,\'load\',loadMap) ;
    function loadMap() {
                flat = document.getElementById("latitude");
            flon = document.getElementById("longitude");

                var optionsGoogleMapsv3 = {
                        // On centre la carte sur le languedoc roussillon
                        center: new google.maps.LatLng(43.84245116699036, 3.768310546875),
                        zoom: 7,
                        mapTypeId: "OSM",
                        mapTypeControlOptions: {
                                mapTypeIds: ["OSM", 
                                        google.maps.MapTypeId.ROADMAP,
                                        google.maps.MapTypeId.HYBRID,
                                        google.maps.MapTypeId.SATELLITE,
                                        google.maps.MapTypeId.TERRAIN]
                        },
                        mapTypeControl: true,
                        scaleControl: true
                };
            map = new google.maps.Map(document.getElementById("map"), optionsGoogleMapsv3);
                map.mapTypes.set("OSM", new google.maps.ImageMapType({
                        getTileUrl: function(coord, zoom) {
                                return "http://osm.tela-botanica.org/tile/" + // cache de tuiles avec nginx
                                zoom + "/" + coord.x + "/" + coord.y + ".png";
                        },
                        tileSize: new google.maps.Size(256, 256),
                        isPng: true,
                        alt: "OpenStreetMap",
                        name: "OSM",
                        maxZoom: 19
                }));

                var mention = \'<div id="origine-donnees">Tuiles : <a href="http://www.openstreetmap.fr" target="_blank">OsmFr</a><br/>\';
                mention += \'Carte : <a href="http://www.openstreetmap.org/copyright" target="_blank">© les contributeurs d\\\'OpenStreetMap</a></div>\';
                $("#map").append(mention);
        
                // ecouteur sur changement de fond
                google.maps.event.addListener( map, \'maptypeid_changed\', function() { 
                        if (map.getMapTypeId() == "OSM") {
                                $("#origine-donnees").show();
                        } else {
                                $("#origine-donnees").hide();
                        }
                });

            google.maps.event.addListener(map, "click", function(event) {
                        if (marker != null) {
                                marker.setMap(null);
                                marker = null;
                }
                        // On ajoute un marqueur a l endroit du clic et on place les coordonnees dans les champs latitude et longitude
                        marker = event.overlay;
                marker = new google.maps.Marker({
                                position: event.latLng,
                                draggable: true,
                                map: map
                        });
                google.maps.event.addListener(marker, "dragend", function () {
                coordMarker = marker.getPosition() ;
                flat.value = coordMarker.lat();
                flon.value = coordMarker.lng();
                });
                setLatLonForm(marker);
        });';
                if ($formtemplate->getElementValue ('latitude') != '' && $formtemplate->getElementValue('longitude') != '') {
                        $script .= '
                                point = new google.maps.LatLng('.$formtemplate->getElementValue('latitude').', '.$formtemplate->getElementValue('longitude').');
                                marker = new google.maps.Marker({
                                        position: point,
                                        draggable: true,
                                        map: map
                                });
                        google.maps.event.addListener(marker, "dragend", function () {
                        coordMarker = marker.getPosition() ;
                        flat.value = coordMarker.lat();
                        flon.value = coordMarker.lng();
                        });
                        map.setCenter(point);
                        ' ;
                } 
            $script .= 'geocoder = new google.maps.Geocoder();
        };
        function showAddress() {
        var adresse = document.getElementById("bf_adresse").value;
        if (adresse == "") {
            return false;
        }
        var ville = "";
        if (document.getElementById("bf_ville")) {
            ville = document.getElementById("bf_ville").value ;
        }
        var cp = document.getElementById("bf_cp_lieu_evenement").value ;
        var pays;
        if (document.getElementById("liste30")) {
            var selectIndex = document.getElementById("liste30").selectedIndex;
            pays = document.getElementById("liste30").options[selectIndex].text ;
        } else {
            pays = document.getElementById("bf_pays").value;
        }
        var address = adresse + \' \' + \' \' + cp + \' \' + ville + \' \' +pays ;
        if (address && geocoder) {
            geocoder.geocode({
                address: address
            }, function(result, status) {
                 if (status != google.maps.GeocoderStatus.OK) {
                    alert(address + " not found");
            } else {
                map.fitBounds(result[0].geometry.viewport);
                marker = new google.maps.Marker({
                    position: result[0].geometry.location,
                    draggable: true,
                    map: map
                });
                google.maps.event.addListener(marker, "dragend", function () {
                    coordMarker = marker.getPosition() ;
                    flat.value = coordMarker.lat();
                    flon.value = coordMarker.lng();
                });
                setLatLonForm(marker);
                //marker.openInfoWindowHtml(address+ "'.BAZ_GOOGLE_MSG.'");
            }
        });
    }
    }
        function setLatLonForm(marker) {
                coordMarker = marker.getPosition() ;
                flat.value = coordMarker.lat();
                flon.value = coordMarker.lng();
        }
';



/*
* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/