API de GoogleMaps: Remover marcadores

196 views
Skip to first unread message

Gerick

unread,
Sep 22, 2009, 11:57:27 AM9/22/09
to Riactive
Hola gente! soy nuevo en el grupo... me alegra mucho encontrar gente
que apoya en Flex en español.
Tengo un problema con el api de googlemaps, no puedo remover los
marcadores que genero por un evento, me da un error.

Para agregar un marker empleeo:
map.addOverlay (marker1A);

Para eliminar el marker empleo: (no funciona)
map.removeOverlay (marker1A);

Me genera el siguiente error:
TypeError: Error #1009: Cannot access a property or method of a null
object reference.
at com.google.maps.core::MapImpl/removeOverlay()
at com.google.maps.wrappers::IMapWrapper/removeOverlay()
at index/removeMapReady()[C:\Documents and Settings\Gerick
\MyDocuments\Flex Builder 3\ProdeaDEMODesktop\src\index.mxml:659]
at index/restauraCancel()[C:\Documents and Settings\Gerick
\MyDocuments\Flex Builder 3\ProdeaDEMODesktop\src\index.mxml:620]
at index/___index_Button1_click()[C:\Documents and Settings
\Gerick\MyDocuments\Flex Builder 3\ProdeaDEMODesktop\src\index.mxml:
161]

La verdad no tengo la mas remota idea de porque... para agregar y
eliminar los marcadores uso eventos a travez de un boton. Espero
puedan ayudarme, gracias!

Yacatematrix

unread,
Sep 22, 2009, 12:45:37 PM9/22/09
to riac...@googlegroups.com
mmmm como agregas los marcadores??? podrias compartir mas código para ver como estas instanciando los marcadores??? probablemente los instancies dentro de un metodo y despues en otro lo remuevas y como el marcador no esta global pues no lo encuentra y por eso te marca Cannot access a property or method of a null object reference.

Saludos
_____________________________________________
Bytes By @yacaFx

       Abre tus ojos, toma tu mente y llévala al límite...
_____________________________________________


2009/9/22 Gerick <ger...@gmail.com>

Gerick

unread,
Sep 22, 2009, 1:27:27 PM9/22/09
to Riactive
Gracias por responder, te pongo el codigo de definicion y las
funciones (no pongo todo porq es mucho)

Los Namespace:
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
...
xmlns:ns4="com.google.maps.*"
xmlns:ns5="com.google.maps.controls.*"
xmlns:local="*"
creationComplete="service.send()" currentState="Inicio">

En el Script:
...
import com.google.maps.*;
[Bindable]
private var marker1A:Marker=null;
...

Funcion para crear los marcadores:
private function onMapReady(event:Event):void {
this.map.setCenter(new LatLng(_latitud,_longitud), 17,
MapType.NORMAL_MAP_TYPE);
map.addControl(new NavigationControl());
map.addControl(new MapTypeControl());
map.enableScrollWheelZoom();
var ptm:String=nombreInd.text;
//Marcador en la posicion A
marker1A = new Marker(new LatLng(_markla1, _marklo1),
new MarkerOptions({
strokeStyle: {
color: 0x000000
},
fillStyle: {
color: 0xCCCCCC,
alpha: 0.8
},
label: "C",
labelFormat: {
bold: true
},
tooltip: ptm,
radius: 12,
hasShadow: false,
clickable: true,
draggable: false,
gravity: 0.1,
distanceScaling: false
}));
marker1A.addEventListener(MapMouseEvent.CLICK, function
(event:MapMouseEvent):void {
marker1A.openInfoWindow(new InfoWindowOptions
({content:_content1}));
});
map.addOverlay(marker1A); }

Funcion para borrar los marcadores:
private function removeMapReady(event:Event):void{
map.removeControl(new NavigationControl());
map.removeControl(new MapTypeControl());
marker1A=null;
map.removeOverlay(marker1A);

La etiqueta MXML para el mapa en el lienzo:
<ns4:Map3D id="map" countryCode="BO" mapevent_mapready="onMapReady
(event)" width="100%" height="100%" url="http://localhost/"
key="ABQIAAAAY_H_NEJU_WQlUd_1FS0V9hT2yXp_ZAY8_ufC3CFXhHIE1NvwkxQ4iedqJKd_mTSq5ER4kM7DfCOqDA"/
>


Nota: Los puntos suspensivos ... son para denotar q tengo mas codigo
entre lineas.

Gracias por la ayuda.

master_of_puppetz

unread,
Sep 23, 2009, 11:26:43 AM9/23/09
to Riactive
hola
tu problema es que estas haciendo nulo el objeto antes de removerlo
> marker1A=null;
> map.removeOverlay(marker1A);
y por eso el error te dice que no puede acceder a un objeto nulo, por
que o para que pusiste eso?
> key="ABQIAAAAY_H_NEJU_WQlUd_1FS0V9hT2yXp_ZAY8_ufC3CFXhHIE1NvwkxQ4iedqJKd_mT Sq5ER4kM7DfCOqDA"/

Gerick

unread,
Sep 23, 2009, 12:04:12 PM9/23/09
to Riactive
Gracias por responder, si ese era un problema... pero no solucionaba a
la hora de remover los marcadores... la solucion que use al final fue:

map.removeControl(new NavigationControl()); //para remover los
controles que se superponian
map.clearOverlays(); //para remover cualquier layersuperpuesta

gracias

On 23 sep, 11:26, master_of_puppetz <webmasterofpupp...@gmail.com>
wrote:

Rodrigo

unread,
Sep 29, 2009, 7:31:03 PM9/29/09
to Riactive
Hola riactiveros.
Efectivamente map.clearOverlays(); borra todos los marcadores del
mapa.
Hay un ejemplo en línea:
http://gmaps-samples-flash.googlecode.com/svn/trunk/demos/WorldOfPane/WorldOfPane.html}
(click derecho para ver fuente)
dónde hace uso de los IPane y el IPaneManager al extender un Map.
Así puedes controlar capas independientemente, borrándo o agregando
información a tu conveniencia.

Saludos

Rodrigo
Reply all
Reply to author
Forward
0 new messages