IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs Google Discussion :

Afficher les markers compris dans la carte


Sujet :

APIs Google

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2013
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Afficher les markers compris dans la carte
    Bonjour,

    J'ai pas mal cherché sur ce forum et internet mais je n'ai pas pu trouver mon bonheur.

    Je cherche a creer une carte dynamique. En effet, à chaque fois que la carte est scrollé, les markers sont a leur tour rechargé afin de n'afficher que les markers compris dans la carte. Le but est simple: a chaque fois je proposerai à l'utilisateur seulement les 30 meilleurs points pour la zone affichée. J'ai réussi a créer mon fichier xml lié a ma base de données. Maintenant je cherche a lui passer le minimum/maximum latitude et longitude affichées par la carte afin de faire le tri. Est-ce possible? Voici mon code actuel:

    markers.php:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    $user = "root";
    $password = "";
    $host = "localhost";
    $bdd = "xxxx";
    mysql_connect($host,$user,$password);
    mysql_select_db($bdd) or die("erreur de connexion à la base
    de données");
    $sql = "SELECT * FROM location order by city desc limit 100";
    $res = mysql_query($sql) or die(mysql_error());
    $dom = new DomDocument('1.0', 'utf-8');
    $node = $dom->createElement("markers");
    $parnode = $dom->appendChild($node);
    while ($result = mysql_fetch_array($res)){
    $node = $dom->createElement("marker");
    $newnode = $parnode->appendChild($node);
    $newnode->setAttribute("city", $result["city"]);
    $newnode->setAttribute("lat", $result["latitude"]);
    $newnode->setAttribute("lng", $result["longitude"]);
    }
    $xmlfile = $dom->saveXML();
    echo $xmlfile;

    Index.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    <!DOCTYPE html>
    <html>
    <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <title>Développez avec les API Google Maps</title>
    <style type="text/css">
     html {
      height: 100%;
     }
     body {
      height: 100%;
      margin: 0px;
      padding: 0px;
     }
     #map_canvas {
      height: 100%;
     }
    </style>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript">
     
    function createXmlHttpRequest() {
        try {
            if (typeof ActiveXObject != 'undefined') {
                return new ActiveXObject('Microsoft.XMLHTTP');
            } else if (window["XMLHttpRequest"]) {
                return new XMLHttpRequest();
            }
        } catch (e) {
            changeStatus(e);
        }
        return null;
    };
     
    function downloadUrl(url, callback) {
        var status = -1;
        var request = createXmlHttpRequest();
        if (!request) {
            return false;
        }
     
        request.onreadystatechange = function() {
            if (request.readyState == 4) {
                try {
                    status = request.status;
                } catch (e) {
                }
                if (status == 200) {
                    callback(request.responseText, request.status);
                    request.onreadystatechange = function() {};
                }
            }
        }
        request.open('GET', url, true);
        try {
            request.send(null);
        } catch (e) {
            changeStatus(e);
        }
    };
     
    function xmlParse(str) {
      if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') {
        var doc = new ActiveXObject('Microsoft.XMLDOM');
        doc.loadXML(str);
        return doc;
      }
     
      if (typeof DOMParser != 'undefined') { 
        return (new DOMParser()).parseFromString(str, 'text/xml');
      }
     
      return createElement('div', null);
    }
     
     var map;
     
     function initialize() {
      var latlng = new google.maps.LatLng(46.7, 2.5);
      var myOptions = {
       zoom: 6,
       center: latlng,
       mapTypeId: google.maps.MapTypeId.ROADMAP
      };
      map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
     
      downloadUrl("markers.php", function(data) { 
     
       var xml = xmlParse(data);
       var markers = xml.documentElement.getElementsByTagName("marker");
     
       for (var i = 0; i < markers.length; i++) {
        createMarker(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")), markers[i].getAttribute('titre'));
       }
      });
     
     }
     
     function createMarker(lat, lng, titre){
      var latlng = new google.maps.LatLng(lat, lng);
      var marker = new google.maps.Marker({
       position: latlng,
       map: map,
       title: titre
      });
     
     }
     
    </script>
    </head>
    <body onload="initialize()">
     <div id="map_canvas" style="width: 100%; height: 100%;"></div>
     
    </body>
    </html>
    Merci d'avance!

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 048
    Points : 44 562
    Points
    44 562
    Par défaut
    Bonjour,
    tu peux toujours regarder du coté de l'objet google.maps.LatLngBounds, il posséde une méthode contains qui devrait pouvoir te servir.

    à chaque fois que la carte est scrollé, les markers sont a leur tour rechargé afin de n'afficher que les markers compris dans la carte.
    pas ûr que cela soit optimum comme approche, mais cela dépend évidemment du nombre de markers.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/10/2013, 20h11
  2. Afficher les noms contenus dans la ldap
    Par NicoO_O dans le forum Langage
    Réponses: 2
    Dernier message: 23/04/2007, 14h59
  3. [JTABLE] afficher les retours chariots dans une cellule
    Par d_token dans le forum Composants
    Réponses: 3
    Dernier message: 11/09/2006, 13h03
  4. [Conception] Afficher les données (BDD) dans un tableau en PHP
    Par ox@na dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/09/2006, 15h24
  5. afficher les tables invisible dans acces
    Par zidenne dans le forum Access
    Réponses: 4
    Dernier message: 08/07/2006, 22h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo