Google Maps comment afficher un seul marqueur?

J'ai travaillé avec ces deux heures et je ne peux toujours pas comprendre comment le faire.

Mon objectif est d'afficher un seul marqueur lors de la recherche d'adresses proches les unes des autres.

Ci-dessous, vous avez le code que j'utilise dans mon html afin de rechercher des adresses, notez – je développe une application Windows qui le fait, auquel cas vous pourriez trouver des éléments manquants pour effectuer des actions en cliquant sur les boutons, car cela se fait via Application .NET Windows

Code html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <script type="text/javascript" src="http://maps.google.com.mx/maps/api/js?sensor=true&language=es"></script> <script type="text/javascript"> var G = google.maps; var map; var geocoder = new G.Geocoder(); var marker; var markersArray = [1]; function initialize() { createMap(); geocode('Chicago'); } function createMap() { var myOptions = { center: new G.LatLng(0,0), zoom: 17, mapTypeId: G.MapTypeId.ROADMAP } map = new G.Map(document.getElementById("map_canvas"), myOptions); } function geocode(address){ geocoder.geocode({ 'address': (address ? address : "Miami Beach, Florida")}, function (results, status) { if (status == G.GeocoderStatus.OK) { map.setCenter(results[0].geometry.location); marker = new G.Marker({ map: map, animation: google.maps.Animation.DROP, position: results[0].geometry.location }); } else { alert("Geocode was not successful for the following reason: " + status); } }); } </script> </head> <body onload="initialize()"> <div id="map_canvas" style="width:100%; height:100%"></div> </body> </html> 

En lisant les articles précédents, je sais que si l'instruction else / else doit être utilisée, mais elle ne peut pas être correcte.

Votre aide est très appréciée.

Leo P.

Vous pouvez ajouter un petit code au début de votre fonction Geocode qui supprime le marqueur précédent avant de définir un nouveau. Essaye ça:

 function geocode(address){ if (marker) { marker.setMap(null); } geocoder.geocode({ 'address': (address ? address : "Miami Beach, Florida")}, function (results, status) { 

Créez un seul marqueur comme variable globale et modifiez sa position au besoin. De même, vous économisez également de la mémoire car vous ne créez pas un nouvel objet marqueur sur chaque demande:

  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <style> html, body {width:100%; height:100%} </style> <script type="text/javascript" src="http://maps.google.com.mx/maps/api/js?sensor=true&language=es"></script> <script type="text/javascript"> var G = google.maps; var map; var marker; var geocoder = new G.Geocoder(); function initialize() { createMap(); geocode('Chicago'); } function createMap() { var myOptions = { center: new G.LatLng(0,0), zoom: 17, mapTypeId: G.MapTypeId.ROADMAP } map = new G.Map(document.getElementById("map_canvas"), myOptions); // Create a single marker, (global variable), and don't give it a position just yet. marker = new G.Marker({ map: map, animation: google.maps.Animation.DROP, }); } function geocode(address){ geocoder.geocode({ 'address': (address ? address : "Miami Beach, Florida")}, function (results, status) { if (status == G.GeocoderStatus.OK) { map.setCenter(results[0].geometry.location); //Position the marker marker.setPosition(results[0].geometry.location); } else { alert("Geocode was not successful for the following reason: " + status); } }); } </script> </head> <body onload="initialize()"> <div id="map_canvas" style="width:100%; height:100%"></div> </body> </html>