<HTML dir=ltr><HEAD><TITLE>Re: [Gvsig_desarrolladores] Dibujar tiles con ViewPort</TITLE>
<META content="text/html; charset=unicode" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 9.00.8112.16476"></HEAD>
<BODY>
<DIV dir=ltr id=idOWAReplyText46475>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">Hola, David.</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">Aquí hay un ejemplo de cómo pegar un tile. Esto lo he puesto al inicio del método draw de una capa cualquiera. El resultado son estas capturas de pantalla:</FONT></DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman"><A href="http://www.prodevelop.es/files/images/100x100-captura.jpg">http://www.prodevelop.es/files/images/100x100-captura.jpg</A></FONT></DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">Si hago zoom alejándome, la imagen ocupa menos píxels en la vista lógicamente.</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">Debes saber la anchura de cada tile en unidades del mapa (en este caso grados)</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">Yo he puesto "double anchura_grados = 45;" como puedes ver:</FONT></DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">=============================================</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image tile = null;</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tile = ImageIO.read(new File("c:\\down\\img\\100x100.jpg"));</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception ex) {</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double lon = -90;</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double lat = 90;</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double anchura_grados = 45;</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // este valor cambiará según el zoom de cada momento</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int anchura_pintar = viewPort.fromMapDistance(anchura_grados);</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // redimensiono la imagen en memoria</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tile = tile.getScaledInstance(</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anchura_pintar,</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anchura_pintar,</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image.SCALE_DEFAULT);</FONT></DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AffineTransform at = viewPort.getAffineTransform();</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Point2D coord_mapa = new Point2D.Double(lon, lat);</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Point2D coord_pixel = new Point2D.Double();</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // obtengo el lugar que corresponde a la esquina sup-izq</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at.transform(coord_mapa, coord_pixel);</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman"></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.drawImage(tile,</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (int) coord_pixel.getX(),</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (int) coord_pixel.getY(),</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; null);</FONT></DIV>
<DIV dir=ltr><FONT color=#000000 size=3 face="Times New Roman">=============================================</FONT></DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr>Saludos,</DIV>
<DIV dir=ltr><FONT size=2 face="Courier New"><FONT size=3 face="Times New Roman">Juan Lucas Domínguez Rubio<BR></FONT>---</FONT></DIV></DIV>
<DIV dir=ltr id=idSignature29660>
<DIV><FONT size=2 face="Courier New"><FONT size=2 face="Courier New"><FONT size=2 face="Courier New">Prodevelop SL, Valencia (España)</FONT></DIV>
<DIV>
<DIV><FONT size=2 face="Courier New">Tlf.: 96.351.06.12 -- Fax: 96.351.09.68<BR></FONT><A href="http://www.prodevelop.es/"><FONT size=2 face="Courier New">http://www.prodevelop.es</FONT></A><BR><FONT size=2 face="Courier New">---</FONT></DIV></FONT></DIV></FONT></DIV>
<DIV dir=ltr><BR>
<HR tabIndex=-1>
<FONT size=2 face=Tahoma><B>De:</B> gvsig_desarrolladores-bounces@listserv.gva.es en nombre de David Deman<BR><B>Enviado el:</B> mié 17/04/2013 17:17<BR><B>Para:</B> gvsig_desarrolladores@listserv.gva.es<BR><B>Asunto:</B> Re: [Gvsig_desarrolladores] Dibujar tiles con ViewPort<BR></FONT><BR></DIV>
<DIV>
<P><FONT size=2>Hola muy buenas,<BR><BR>si hablo del método draw. No me ha quedado del todo claro como se haría, si<BR>no te importa te pongo un ejemplo con datos a ver.<BR><BR>Tengo el extent que engloba la pantalla de (-180,-90) a (180,90), es decir<BR>Rectangle2D.Double[x=-180.0,y=-90.0,w=360.0,h=180.0]<BR>Y quiero pintar una imagen sin cambiarle el tamaño, es decir si la imagen<BR>ocupa 100px X 100px que ocupe eso, es la coordenada (-90,90)<BR><BR>Siendo viewPort el que le viene al método draw, yo lo que hacía en el<BR>ejemplo anterior es:<BR>viewPortImagen = viewPort.cloneViewPort();<BR>viewPortImagen.setImageSize(new Dimension(100, 100));<BR>viewPortImagen.setExtent(new Rectangle2D.Double(-90, 90, 100, 100));<BR><BR>y pasarle ese viewPortImagen a la función para dibujar, pero claro con el<BR>setExtent no se debe poner la localización. Entiendo yo pues como me<BR>comentas que es con el transform, pero no entiendo cómo.<BR><BR>Un saludo,<BR>David<BR><BR><BR><BR><BR>--<BR>View this message in context: <A href="http://osgeo-org.1560.x6.nabble.com/Dibujar-tiles-con-ViewPort-tp5047603p5047697.html">http://osgeo-org.1560.x6.nabble.com/Dibujar-tiles-con-ViewPort-tp5047603p5047697.html</A><BR>Sent from the gvSIG desarrolladores mailing list archive at Nabble.com.<BR>_______________________________________________<BR>gvSIG_desarrolladores mailing list<BR>gvSIG_desarrolladores@listserv.gva.es<BR>Para ver histórico de mensajes, editar sus preferencias de usuario o darse de baja en esta lista, acuda a la siguiente dirección: <A href="http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores">http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores</A><BR></FONT></P></DIV><HR>

<DIV style="TEXT-ALIGN: justify; LINE-HEIGHT: 15px; FONT-FAMILY: Verdana, Geneva, sans-serif; COLOR: #999; FONT-SIZE: 9px"><B>CLÁUSULA DE PROTECCIÓN DE DATOS</B><BR>Este mensaje se dirige exclusivamente a su destinatario y puede contener información privilegiada o confidencial. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.<BR>De acuerdo con la nueva ley Ley de Servicios de la Sociedad de la Información y Comercio Electrónico aprobada por el parlamento español y de la vigente Ley Orgánica 15/1999 de Protección de Datos española, le comunicamos que su dirección de Correo electrónico forma parte de un fichero automatizado, teniendo usted derecho de oposición, acceso, rectificación y cancelación de sus datos. <BR><BR><B>DATA PROTECTION CLAUSE</B><BR>This message is meant for its addressee only and may contain privileged or confidential information. If you have received this message by mistake please let us know immediately by e-mail prior to destroying it. <BR>In compliance with the new Information and Electronic Commerce Society Services Law recently approved by the Spanish Parliament and with Organic Law 15/1999 currently in force, your e-mail address has been included in our computerised records in respect of which you may exercise your right to oppose, access, amend and/or cancel your personal data.</DIV><A title="gfidisc.prodevelop.es" href="#">  </A></BODY></HTML>