2010-03-16 21 views
16

Sólo sé de una manera:¿Cómo elimino un marcador en Google Maps?

clic derecho y haga clic en 'Me eliminar'

¿Qué más puedo eliminar marcadores en Google Maps?

Este es mi código de ahora:

GEvent.addListener(marker, 'mousedown', function(e) { 
    alert(e) 
    if (e.button == 2){ 
    alert('sss') 
    map.removeOverlay(marker); 
} 

Cuando right-click, alerta (40.23141543543321,114.3214121421); cuando miro a la API, veo esto:

mousedown(latlng:GLatLng) 

por lo que creo que e no es un evento, sino un 'GLatLng'

Si utilizo el 'singlerightclick', nada sucede cuando la derecha -hacer clic.

Este es mi código completo:

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <meta name="viewport" content="width=device-width,minimum-scale=0.3,maximum-scale=5.0,user-scalable=yes"> 

    </head> 
<body onload="initialize()" onunload="GUnload()"> 

<style type="text/css"> 
*{ 
    margin:0; 
    padding:0; 
    } 
#head{ 
    height:70px; 
    background:#a00; 
    } 
#logo{ 
color:white; 
font-weight:bold; 
line-height:70px; 
margin-left:100px; 
    } 
#main{ 
position:relative; 
margin-top:1px; 
    } 
#left{ 
border:1px solid red; 
height:700px; 
margin-right:202px; 
    } 
#top{ 
font-weight:bold; 
line-height:70px; 
margin-left:120px; 
    } 
#map_canvas{ 
height:630px; 
    } 
#right{ 
background:#ff0; 
float:right; 
height:702px; 
position:absolute; 
right:0; 
top:0; 
width:200px; 
    } 

.container{ 
border:5px solid red; 
height:50px; 
margin-left:50px; 
padding:17px 0 0 20px; 
width:85%; 
    } 
.b{ 
    background:url(img/xr.png) right no-repeat; 
    } 
.b > div{ 
    width:30px; 
    height:31px; 
    background:url(img/xpinIcon.png) 0 0 no-repeat; 
    } 
.c{ 
    background:url(img/xr.png) right no-repeat; 
    margin-left:60px; 
    } 
.c > div{ 
    width:30px; 
    height:31px; 
    background:url(img/xlineIcon.png) 0 0 no-repeat; 
    } 
</style> 
<!--<div style="width:100px;height:100px;background:blue;"> </div>--> 
<div id=head> 
    <div id=logo>logo</div> 
</div> 
<div id=main> 
    <div id=left> 
     <div id=top>search 
     <input type="text" name="" id="" style="width:80%"/> 
     </div> 
     <div id="map_canvas" ></div> 
    </div> 
    <div id=right ></div> 
</div> 


<script src="jquery-1.4.2.js" type="text/javascript"></script> 
<script src="jquery-ui-1.8rc3.custom.min.js" type="text/javascript"></script> 
<script type="text/javascript" src="nicEdit.js"></script> 
    <script src="http://ditu.google.cn/maps?file=api&amp;v=2&amp;sensor=false&amp;key=ABQIAAAA-7cuV3vqp7w6zUNiN_F4uBRi_j0U6kJrkFvY4-OX2XYmEAa76BSNz0ifabgugotzJgrxyodPDmheRA" type="text/javascript"></script> 

<script type="text/javascript"> 
var aFn; 
//********** 
function initialize() { 
    if (GBrowserIsCompatible()) { 

     //************ 
     function a() { 
     } 
     //if(GControl) 
     a.prototype = new GControl(); 
     a.prototype.initialize = function(map) { 
      var container = document.createElement("div"); 
      var a=''; 
      for(i=0;i<2;i++){ 
       a+='<div class=b style="position:absolute;"><div></div></div>' 
       } 
      for(i=0;i<2;i++){ 
       a+='<div class=c style="position:absolute;"><div></div></div>' 
       } 
      $(container).addClass('container'); 
      $(map.getContainer()).append($(container).append(a)); 
      return container; 
     } 
     a.prototype.getDefaultPosition = function() { 
      return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7, 7)); 
     } 

     //************ 
       var map = new GMap2(document.getElementById("map_canvas")); 
       map.addControl(new a()); 
       map.enableScrollWheelZoom(); 
       var center=new GLatLng(39.9493, 116.3975); 
       map.setCenter(center, 13); 


     aFn=function(x,y){ 

      var point =new GPoint(x,y) 
      point = map.fromContainerPixelToLatLng(point); 
      var marker = new GMarker(point,{draggable:true}); 

      var a=$(
      '<form method="post" action="" style="height:100px;overflow:hidden;width:230px;">'+ 
       '<textarea id="area1" cols="22" rows="5" style="border:none">cilck edit</textarea>'+ 
      '</form>') 

      var once; 
      a.click(function(){ 
       if(!once)var area1=new nicEditor({buttonList : ['bold','fontSize','left','center','right','forecolor']}).panelInstance('area1') 
     once=1; 
     }) 
      GEvent.addListener(marker, "click", function(){ 
       marker.openInfoWindowHtml(a[0]); 
     }); 


      map.addOverlay(marker); 
     GEvent.addListener(marker, 'singlerightclick', function(point, source, overlay) { 
      alert('sss') 
      map.removeOverlay(marker); 
      }); 

      } 
     $(".b").draggable({ 
      revert: true, 
      revertDuration: 0 
      }); 
     $('.container').droppable({greedy: true}); 

     $("#map_canvas").droppable({ 
     drop: function(event,ui) { 
      aFn(event.pageX-$("#map_canvas").offset().left,event.pageY-$("#map_canvas").offset().top); 
      //} 
      } 
     }); 
     } 
} 
//************* 
</script> 
</body> 
</html> 

pensé que lo he descubierto con esto:

GEvent.addListener(map, 'singlerightclick', function(point, source, overlay) { 
    map.removeOverlay(marker); 
     }); 

pero no, esto elimina el marcador no importa donde hago clic en el mapa .

creo que tengo ahora:

GEvent.addListener(map, 'singlerightclick', function(pixel,tile, marker) { 
    if(marker) 
    map.removeOverlay(marker); 
     }); 
+0

actualizado mi respuesta. –

+0

@ zjm1126 por favor actualice la "respuesta" – Korayem

Respuesta

8
var marker = new GMarker(latlng); 
map.addOverlay(marker); 

GEvent.addListener(marker, 'singlerightclick', function(point, source, overlay) { 
    this.setMap(null); 
}); 
+0

hola Björn, gracias a su código, pero aún no exitoso, mire la actualización. – zjm1126

+0

hola Björn, no exitoso todavía, actualizó mi problema .. – zjm1126

+0

la respuesta a continuación de Korayem funciona para mí. Estoy en google maps api v3 –

46

De acuerdo con esta link se puede hacer simplemente

marker.setMap(null); 
+2

¡eso fue lo único que funcionó para mí! – igordcard

+0

Arriba, por favor :) – Korayem

+1

@ zjm1126 por favor actualice la "respuesta" – Korayem

3

que no se ve como removeOverlay() está en la versión 3 del API . Muchas gracias, Korayem!

+0

Usted welcomne :) – Korayem

1

Cualquier persona que use versión 3 del API puede hacer una Marker invisible por:

marker.setVisible(false);

0

Añadir un detector de eventos 'click derecho' a google superposición

google.maps.event.addListener(overlay, 'rightclick', function (event) { 
}) 
Cuestiones relacionadas