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 :

décalage des markers api v3


Sujet :

APIs Google

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 67
    Points : 62
    Points
    62
    Par défaut décalage des markers api v3
    salut,
    j'affiche une série de marker suite à un résultat de requête sur une map google, ils ont tous un décalage et se déplacent à chaque zoom, par exemple un marker censé etre sur paris s'affiche en Irlande, à New York il s'affiche au canada.. j'utilise API v3 du coup je n'ai pas trouvé ma réponse dans le forum, merci pour votre aide
    voila le code :

    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
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3.1&sensor=true"></script>
    				<script type="text/javascript">
    				//<![CDATA[
    					var geocoder;
    					var map;
    					var timeout = 600;
    					var address_position = 0;
     
    					var address = [
    					     <?php
    							$_list="";
    							$_unicite=array();
    					        foreach($search_data as $k => $item)
    					        {
    								$_address=trim($item->meta_value);								
     
    					            if(!empty($_address))
    								{
    									if(!in_array($_address,$_unicite)){
    										$_unicite[$item->post_id]=$_address;
    										$_list.='"'.$_address.'",';
    									}
    								}								
    					        }       
     
    							if(!empty($_list)) {
    								$_list=substr($_list,0,abs(strlen($_list)-1));
    							}
     
    							echo $_list;
    					     ?>             
    					     ];
    						 var link = [
    					     <?php
    							$_list2="";
    							$_unicite2=array();
    					        foreach($search_data as $k => $item)
    					        {
    								$_link=trim($item->post_id);								
     
    					            if(!empty($_link))
    								{
    									if(!in_array($_link,$_unicite2)){
    										$_unicite2[$item->post_id]=$_link;
    										$_list2.='"'.$_link.'",';
    									}
    								}								
    					        }       
     
    							if(!empty($_list2)) {
    								$_list2=substr($_list2,0,abs(strlen($_list2)-1));
    							}
     
    							echo $_list2;
    					     ?>             
    					     ];
    						  var title = [
    					     <?php
    							$_list3="";
    							$_unicite3=array();
    					        foreach($search_data as $k => $item)
    					        {
    								$_title=trim($item->post_title);								
     
    					            if(!empty($_title))
    								{
    									if(!in_array($_title,$_unicite2)){
    										$_unicite2[$item->post_id]=$_title;
    										$_list3.='"'.$_title.'",';
    									}
    								}								
    					        }       
     
    							if(!empty($_list3)) {
    								$_list3=substr($_list3,0,abs(strlen($_list3)-1));
    							}
     
    							echo $_list3;
    					     ?>             
    					     ];
     
    					var image = new google.maps.MarkerImage(
    				        'http://www.bookyourparis.com/images-site/beachflag.png',
    				        new google.maps.Size(28,54),
    				        new google.maps.Point(0,0),
    				        new google.maps.Point(14,54)
    				    );
     
     
    					function addMarker(position)
    					{
    						geocoder.geocode({'address': address[position]}, function(results, status)
    						{
    							address_position++;
     
    							if (address_position < address.length)
    							{
    								setTimeout(function() { addMarker(address_position); }, (timeout));
    							}
    							if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT)
    							{
    								setTimeout(function() { addMarker(position); }, (timeout * 3));
    							}
     
    							/**
    							if (address_position < address.length)
    							{
    								if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT)
    								{
    									setTimeout(function() { addMarker(position); }, (timeout * 3));
    								} else {
    									setTimeout(function() { addMarker(address_position); }, (timeout));
    								}
    							}
    							/**/
    							else if (status == google.maps.GeocoderStatus.OK) 
    							{   
     
    								map.setCenter(results[0].geometry.location);                
    								var marker = new google.maps.Marker({
    									position: results[0].geometry.location,
    									map: map,  
    									title:address[position],
    									icon: image,
    								}); 
     
    								var contentString = '<div id="content_bulle"><div id="bodyContent_bulle" style="margin-top:5px;">'+
    					            '<h1 style="font-size:1.5em">'+title[position]+
    								'</h1><h2 style="font-size:1.2em">'+results[0].formatted_address+
    								'</h2><p style="color:#AF1A40"><a target="_blank" href="?p='+link[position]+'">View</a></p>'+
    					            '</div></div>';
     
    					            var infowindow = new google.maps.InfoWindow({
    							        content: contentString,
    									maxHeight: 100
    							    });
     
    								google.maps.event.addListener(marker, 'click', function() {
    							      infowindow.open(map,marker);
    							    });
    							} 
    						});
    					}
     
    					function codeaddress() {
    					    geocoder = new google.maps.Geocoder();
    					    //var latlng = new google.maps.LatLng(-34.397, 150.644);
    					    var myOptions = {
    					      zoom: 2,
    					     navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
    					     mapTypeId: google.maps.MapTypeId.HYBRID,  
     
    					    }   
    					    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
     
    					    addMarker(address_position);
    					}
     
    					function centerMap() 
    				    {
    				        map.setCenter(markers[markers.length-1].getPosition());
    				    }
     
    					jQuery(window).load( function(){
    					    codeaddress();
    					}); 
     
    				 //]]>
    				</script>
     
    				<div id="map_canvas" style="width: 940px; height: 420px;border:1px solid #999"></div>

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    Bonjour,
    ...par exemple un marker censé etre sur paris s'affiche en Irlande, à New York il s'affiche au canada..
    aucune raison si le code est correct.

    Pour que l'on puisse t'aider, il est préférable de mettre le code généré et non le code PHP

    remarques
    cette ligne
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3.1&sensor=true"></script>,
    est à remplacer par
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>, qui est la nouvelle adresse de chargement du script


    si tu utilises jQuery uniquement pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    jQuery(window).load(function () {
      codeaddress();
    });
    autant dans ce cas mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    google.maps.event.addDomListener(window, 'load', codeaddress);

Discussions similaires

  1. [Youtube API] Positionner des markers
    Par kurogan dans le forum APIs Google
    Réponses: 5
    Dernier message: 15/07/2013, 09h59
  2. décalage des markers avec changement d'échelle
    Par frkdavid dans le forum IGN API Géoportail
    Réponses: 3
    Dernier message: 02/03/2010, 13h35
  3. décalage des marker avec changement d'échelle
    Par frkdavid dans le forum IGN API Géoportail
    Réponses: 12
    Dernier message: 25/02/2010, 15h28
  4. [WebForms][Xml][Xsl] Comment eviter un décalage des images ?
    Par ekmule dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 14/12/2005, 15h07
  5. Réponses: 3
    Dernier message: 04/09/2002, 09h42

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