¡Ayúdanos a traducir esta Web y consigue licencias gratis!
Usuario anónimo  |  Ingresar  |  Regístrate

Cómo...

Polígonos

Crear polígonos en nuestro mapa es muy sencillo con la clase "GPolygon". El efecto es muy similar a la de la clase "GPolyline", con la diferencia de que el GPolygon rellena el interior con el color que marquemos. Ésta tiene 6 propiedades, de la que sólo la primera es obligatoria:
  • points: listado genérico de puntos (del tipo GLatLng). Es la parte más importante pues definirá el trazado del polígono.
  • strokeWeight: anchura de la línea en pixels.
  • strokeOpacity: double entre 0 y 1. Define la opacidad de la línea.
  • strokeColor: por defecto es el azul, y debemos dar el valor como un string con el color en hexadecimal.
  • fillColor: color del relleno interior del polígono. Debemos dar el valor como un string con el color en hexadecimal.
  • fillOpacity: double entre 0 y 1. Define la opacidad del relleno del polígono.
  • clickable: indica si el polígono es o no clicable.
Además, hemos añadido dos interesantes métodos por considerar que su uso es muy típico:
  • close(): independientemente de cómo estén configurados los puntos del polígono, este método se encarga de cerrarlo, de modo que el primer punto coincida con el último.
  • createPolygon(GLatLng center, int sides, double radius): Llamar a este método NO implica borrar los puntos insertados previa o posteriormente. Esto se deja a gusto del programador. Lo que hace esta función es crear un polígono en base a sus parámetros de entrada:
    • center: centro del polígono.
    • sides: lados del polígono. A partir de 20 se asemeja a una circunferencia.
    • radius: grados geográficos de radio.
    • inclination: inclinación del primer punto. Es un double expresado en radianes. Su valor por defecto es PI/4.
    Cabe destacar que se trata de polígonos basados en puntos geográficos. Por ejemplo, si creamos un polígono de 4 grados NO se mostrará por pantalla un cuadrado perfecto, sino un polígono de 4 lados cuya distancia kilométrica entre el centro y ellos sea la misma. Así pues, cuanto más a los polos, más "deformado" estará el cuadrado, y cuanto más al ecuador, más "perfecto" será el cuadro.
NOTA: para un correcto funcionamiento en el Internet Explorer, debéis añadir el siguiente atributo a vuestro tag HTML:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">




Code.aspx
<cc1:GMap ID="GMap1" runat="server" />
Code.aspx.cs
GLatLng latlng = new GLatLng(46, 21);
GMap1.setCenter(latlng, 4);

List<GLatLng> puntos = new List<GLatLng>();
puntos.Add(latlng + new GLatLng(0, 8));
puntos.Add(latlng + new GLatLng(-0.5, 4.2));
puntos.Add(latlng);
puntos.Add(latlng + new GLatLng(3.5, -4));
puntos.Add(latlng + new GLatLng(4.79, +2.6));
GPolygon poligono = new GPolygon(puntos, "557799", 3, 0.5, "237464", 0.5);
poligono.close();
GMap1.Add(poligono);

List<GLatLng> puntos2 = new List<GLatLng>();
puntos2.Add(latlng + new GLatLng(5, -8));
puntos2.Add(latlng + new GLatLng(5, -6));
puntos2.Add(latlng + new GLatLng(5, -4));
puntos2.Add(latlng);
puntos2.Add(latlng + new GLatLng(-5, 0));
GPolygon poligono2 = new GPolygon(puntos2, "000000", 3, 1, "654321", 1);
GMap1.addPolygon(poligono2);

GPolygon poligono3 = new GPolygon(new List<GLatLng>(), "00ff00", 3, 0, "ff0044", 0);
poligono3.createPolygon(latlng + new GLatLng(-6, -7.5), 7, 4, Math.PI /3);
GMap1.addPolygon(poligono3);
Powered by Subgurim.NET