Marker Manager
Para poder manejar cientos de iconos a la vez y además poder asignarles un rango de zoom, no tenemos más
que usar el
MarkerManager.
Por ejemplo, podríamos añadir un icono que sólo fuera visible a partir de un nivel de zoom = 2, y luego
añadir diez marcadores que sólo fueran visibles entre el nivel de zoom 6 y el 8.
Además el
MarkerManager sólo tiene una función muy sencilla de usar:
-
Add(param1, param2, [param3]): el primer parámetro puede ser tanto un simple GMarker, un GInfoWindow o un GInfoWindowTabs como un
listado genérico de ellos. El segundo parámetro indica el nivel mínimo de zoom y el tercero (opcional)
indica el máximo. Recordemos que los niveles de zoom van del 0 al 17.
A cada GMarker se le puede añadir un evento con GListener. En nuestro ejemplo, a cada uno de los diez marcadores
creados aleatoriamente, se le ha asignado un evento "onclick" que alerta del orden en que ha sido creado.
Code.aspx
<cc1:GMap ID="GMap1" runat="server" />
Code.aspx.cs
GMap1.setCenter(new GLatLng(41, 3), 3);
GMap1.Add(new GControl(GControl.preBuilt.LargeMapControl));
GMarker m1 = new GMarker(new GLatLng(41, 3));
MarkerManager mManager = new MarkerManager();
mManager.Add(m1, 2);
List<GMarker> mks = new List<GMarker>();
List<GInfoWindow> iws = new List<GInfoWindow>();
Random r = new Random();
double ir1, ir2;
GMarker mkr;
for (int i = 0; i < 10; i++)
{
ir1 = (double)r.Next(40) / 10.0 - 2.0;
ir2 = (double)r.Next(40) / 10.0 - 2.0;
mkr = new GMarker(m1.point + new GLatLng(ir1, ir2));
mks.Add(mkr);
GMap1.Add(new GListener(mkr.ID, GListener.Event.click, "function(){alert('" + i + "');}"));
}
for (int i = 0; i < 5; i++)
{
double ir1 = (double)r.Next(40) / 20.0 - 1;
double ir2 = (double)r.Next(40) / 20.0 - 1;
mkr = new GMarker(m1.point + new GLatLng(ir1, ir2));
GInfoWindow window = new GInfoWindow(mkr, i.ToString());
iws.Add(window);
}
mManager.Add(mks, 6, 8);
mManager.Add(iws, 7, 8);
GMap1.markerManager = mManager;