<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>.:: Seam City ::. &#187; google-maps</title>
	<atom:link href="http://seamcity.madeinxpain.com/archives/tag/google-maps/feed" rel="self" type="application/rss+xml" />
	<link>http://seamcity.madeinxpain.com</link>
	<description>Sobre programación en general, y Seam en particular</description>
	<lastBuildDate>Thu, 22 Jan 2009 15:35:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Marcas de Google Maps con menu contextual</title>
		<link>http://seamcity.madeinxpain.com/archives/marcas-de-google-maps-con-menu-contextual</link>
		<comments>http://seamcity.madeinxpain.com/archives/marcas-de-google-maps-con-menu-contextual#comments</comments>
		<pubDate>Fri, 04 Jul 2008 08:34:49 +0000</pubDate>
		<dc:creator>Tes</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[google-maps]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://seamcity.madeinxpain.com/?p=45</guid>
		<description><![CDATA[En un post anterior hablaba de como añadir un tooltip personalizado a nuestras marcas de google maps, que permitia mostrar cualquier objeto DOM como si fuese un tooltip de la marca.
Siguiendo la misma idea, podemos hacer un menu contextual para las marcas, que se active al hacer click sobre ellas, y contenga acciones a ejecutar [...]]]></description>
			<content:encoded><![CDATA[<p>En un <a href="http://http://seamcity.madeinxpain.com/archives/marcas-de-google-maps-con-tooltip-personalizado" >post anterior</a> hablaba de como añadir un tooltip personalizado a nuestras marcas de google maps, que permitia mostrar cualquier objeto DOM como si fuese un tooltip de la marca.</p>
<p>Siguiendo la misma idea, podemos hacer un menu contextual para las marcas, que se active al hacer click sobre ellas, y contenga acciones a ejecutar sobre la marca en cuestion.</p>
<p>Para ello seguiremos los siguientes pasos:</p>
<ol>
<li>Crear el menu y sus acciones</li>
<li>Asignar el menu a la marca, y una referencia de la marca al menu para poder ejecutar acciones sobre ella</li>
<li>Mostrar el menu con el evento onclick y ocultarlo al seleccionar una opción</li>
</ol>
<p><a href="http://seamcity.madeinxpain.com/examples/gmap/menu.html" >ver ejemplo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://seamcity.madeinxpain.com/archives/marcas-de-google-maps-con-menu-contextual/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Marcas de Google Maps con tooltip personalizado</title>
		<link>http://seamcity.madeinxpain.com/archives/marcas-de-google-maps-con-tooltip-personalizado</link>
		<comments>http://seamcity.madeinxpain.com/archives/marcas-de-google-maps-con-tooltip-personalizado#comments</comments>
		<pubDate>Tue, 01 Jul 2008 06:12:33 +0000</pubDate>
		<dc:creator>Tes</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[google-maps]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://seamcity.madeinxpain.com/?p=44</guid>
		<description><![CDATA[Al situar el ratón encima de una imagen o cualquier elemento del DOM, éste es capaz de mostrar en un tooltip el texto de su atributo 'title',
ejemplo
En las marcas de Google Maps este efecto puede conseguirse especificando el atributo 'title' en el constructor de la marca.


var coords = new GLatLng&#40;41.647471, -0.885569&#41;;
var mark = new GMarker&#40;coords,&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Al situar el ratón encima de una imagen o cualquier elemento del DOM, éste es capaz de mostrar en un tooltip el texto de su atributo 'title',</p>
<div style="display:inline;padding:2px 5px 2px 5px;background-color:#ccaaaa" title="texto de ejemplo">ejemplo</div>
<p>En las marcas de Google Maps este efecto puede conseguirse especificando el atributo 'title' en el constructor de la marca.</p>
<div class="syntax_hilite">
<div id="javascript-2">
<div class="javascript"><span style="color: #003366; font-weight: bold;">var</span> coords = <span style="color: #003366; font-weight: bold;">new</span> GLatLng<span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">41</span>.<span style="color: #CC0000;">647471</span>, -<span style="color: #CC0000;">0</span>.<span style="color: #CC0000;">885569</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #003366; font-weight: bold;">var</span> mark = <span style="color: #003366; font-weight: bold;">new</span> GMarker<span style="color: #66cc66;">&#40;</span>coords,&nbsp; <span style="color: #66cc66;">&#123;</span>title:<span style="color: #3366CC;">'texto de ejemplo'</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span></div>
</div>
</div>
<p>
<a href="http://seamcity.madeinxpain.com/examples/gmap/basic.html" >ver ejemplo</a></p>
<p>El problema es que esta opción es muy limitada, ya que se restringe al uso de texto plano. Lo ideal sería poder mostrar cualquier elemento del DOM que queramos, con su HTML y su CSS.<br />
Para conseguirlo vamos a seguir estos pasos:</p>
<ol>
<li>Crear el nodo del DOM que queramos mostrar o coger un nodo ya existente y ponerlo como un atributo de la marca</li>
<li>Al escuchar el evento mouseover de la marca, añadir el nodo al div contenedor del mapa en el la posición en la que se encuentra la marca</li>
<li>Al escuchar el evento mouseout de la marca, eliminar el nodo del div contenedor del mapa para ocultarlo.</li>
</ol>
<p><a href="http://seamcity.madeinxpain.com/examples/gmap/tooltip.html" >ver ejemplo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://seamcity.madeinxpain.com/archives/marcas-de-google-maps-con-tooltip-personalizado/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo limitar el zoom y el desplazamiento en Google Maps</title>
		<link>http://seamcity.madeinxpain.com/archives/como-limitar-el-zoom-y-el-desplazamiento-en-google-maps</link>
		<comments>http://seamcity.madeinxpain.com/archives/como-limitar-el-zoom-y-el-desplazamiento-en-google-maps#comments</comments>
		<pubDate>Fri, 20 Jun 2008 08:43:58 +0000</pubDate>
		<dc:creator>Tes</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[google-maps]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://seamcity.madeinxpain.com/?p=46</guid>
		<description><![CDATA[En ocasiones nos interesa restringir el desplazamiento del usuario sobre el mapa a un área determinada, o limitar los niveles de zoom máximo y mínimo.
En el caso del zoom la solución es bastante sencilla. Solo hay que sobreescribir los métodos getMinimumResolution() y getMaximumResolution() de cada uno de los tipos de mapas GMapType presentes en nuestro [...]]]></description>
			<content:encoded><![CDATA[<p>En ocasiones nos interesa restringir el desplazamiento del usuario sobre el mapa a un área determinada, o limitar los niveles de zoom máximo y mínimo.</p>
<p>En el caso del zoom la solución es bastante sencilla. Solo hay que sobreescribir los métodos getMinimumResolution() y getMaximumResolution() de cada uno de los tipos de mapas GMapType presentes en nuestro mapa.<br />
Para el caso del desplazamiento, la solución es algo más compleja. Consiste en escuchar el evento <em>move</em>, que es lanzado por el objeto GMap cuando hay un desplazamiento, y comprobar las coordenadas del mapa tras el desplazamiento. Si estas coordenadas quedan fuera del área a la que queremos limitar el desplazamiento, usamos el metodo GMap.setCenter para que el mapa quede dentro de nuesta área.</p>
<p>Esta clase implementa la funcionalidad deseada:</p>
<div class="syntax_hilite">
<div id="javascript-4">
<div class="javascript"><span style="color: #009900; font-style: italic;">/******&nbsp; TRestricter&nbsp; **********************************************/</span></p>
<p><span style="color: #009900; font-style: italic;">// Constructor</span><br />
TRestricter = <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #66cc66;">&#40;</span>map<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">map</span> = map;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #009900; font-style: italic;">// Función que activa la limitación del desplazamiento entre la esquina inferior izquierda</span><br />
<span style="color: #009900; font-style: italic;">// y la esquina superior derecha</span><br />
TRestricter.<span style="color: #006600;">prototype</span>.<span style="color: #006600;">restrict</span> = <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #66cc66;">&#40;</span>sw, ne<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">map</span>._allowedBounds = <span style="color: #003366; font-weight: bold;">new</span> GLatLngBounds<span style="color: #66cc66;">&#40;</span>sw, ne<span style="color: #66cc66;">&#41;</span>;<br />
GEvent.<span style="color: #006600;">addListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">map</span>, <span style="color: #3366CC;">'move'</span>, <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">checkBounds</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #009900; font-style: italic;">// Función que desactiva la limitación del desplazamiento</span><br />
TRestricter.<span style="color: #006600;">prototype</span>.<span style="color: #006600;">unrestrict</span> = <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">map</span>._allowedBounds = <span style="color: #003366; font-weight: bold;">null</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #009900; font-style: italic;">// Listener encargado de comprobar el desplazamiento</span><br />
TRestricter.<span style="color: #006600;">prototype</span>.<span style="color: #006600;">checkBounds</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>!<span style="color: #000066; font-weight: bold;">this</span>._allowedBounds || <span style="color: #000066; font-weight: bold;">this</span>._allowedBounds.<span style="color: #006600;">contains</span><span style="color: #66cc66;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">getCenter</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span>;<br />
<span style="color: #003366; font-weight: bold;">var</span> x = Math.<span style="color: #006600;">min</span><span style="color: #66cc66;">&#40;</span>Math.<span style="color: #006600;">max</span><span style="color: #66cc66;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">getCenter</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">lng</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #000066; font-weight: bold;">this</span>._allowedBounds.<span style="color: #006600;">getSouthWest</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">lng</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #000066; font-weight: bold;">this</span>._allowedBounds.<span style="color: #006600;">getNorthEast</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">lng</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #003366; font-weight: bold;">var</span> y = Math.<span style="color: #006600;">min</span><span style="color: #66cc66;">&#40;</span>Math.<span style="color: #006600;">max</span><span style="color: #66cc66;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">getCenter</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">lat</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #000066; font-weight: bold;">this</span>._allowedBounds.<span style="color: #006600;">getSouthWest</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">lat</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #000066; font-weight: bold;">this</span>._allowedBounds.<span style="color: #006600;">getNorthEast</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">lat</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">setCenter</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> GLatLng<span style="color: #66cc66;">&#40;</span>y,x<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #009900; font-style: italic;">// Establece los límites de zoom del mapa</span><br />
TRestricter.<span style="color: #006600;">prototype</span>.<span style="color: #006600;">zoomLevels</span> = <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #66cc66;">&#40;</span>min, max<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
<span style="color: #003366; font-weight: bold;">var</span> array = <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">map</span>.<span style="color: #006600;">getMapTypes</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> || <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#93;</span>;<br />
<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i=<span style="color: #CC0000;">0</span>; i<br />
array<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">getMinimumResolution</span> = <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> <span style="color: #000066; font-weight: bold;">return</span> min <span style="color: #66cc66;">&#125;</span>;<br />
array<span style="color: #66cc66;">&#91;</span>i<span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">getMaximumResolution</span> = <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> <span style="color: #000066; font-weight: bold;">return</span> max <span style="color: #66cc66;">&#125;</span>;<br />
<span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
<p><a href="http://seamcity.madeinxpain.com/examples/gmap/restrict.html" >Y aquí tenemos un ejemplo de la clase en acción</a></p>
]]></content:encoded>
			<wfw:commentRss>http://seamcity.madeinxpain.com/archives/como-limitar-el-zoom-y-el-desplazamiento-en-google-maps/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problemas con Google Maps</title>
		<link>http://seamcity.madeinxpain.com/archives/problemas-con-google-maps</link>
		<comments>http://seamcity.madeinxpain.com/archives/problemas-con-google-maps#comments</comments>
		<pubDate>Wed, 19 Mar 2008 14:06:41 +0000</pubDate>
		<dc:creator>Tes</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[google-maps]]></category>

		<guid isPermaLink="false">http://seamcity.madeinxpain.com/archives/33</guid>
		<description><![CDATA[Como siempre que se desarrolla una aplicación, aparecen errores que nos dan multitud de quebraderos de cabeza.
Ahí van unos cuantos con los que me he enfrentado trabajando con Google Maps.

El fondo del mapa se ve totalmente en gris
Casi seguro es porque alguna propiedad css está interfiriendo con el mapa. Un caso en el que aparece [...]]]></description>
			<content:encoded><![CDATA[<p>Como siempre que se desarrolla una aplicación, aparecen errores que nos dan multitud de quebraderos de cabeza.<br />
Ahí van unos cuantos con los que me he enfrentado trabajando con Google Maps.</p>
<ul>
<li><strong>El fondo del mapa se ve totalmente en gris</strong><br />
Casi seguro es porque alguna propiedad css está interfiriendo con el mapa. Un caso en el que aparece es con la propiedada overflow:hidden.</li>
</ul>
<ul>
<li><strong>El fondo del mapa se ve parcialmente gris, y el centro se sitúa en la esquina superior izquierda</strong><br />
Esto ocurre porque cuando la api de google maps carga el mapa, el div contenedor que ha sido pasado como argumento al constructor GMap2 tiene tamaño cero. El trozo de mapa que se ve es realmente el trozos que queda fuera de los limites de visión pero es cargado para mejorar el rendimiento al desplazar el mapa.<br />
Que el div contendor tenga tamaño cero, suele ocurrir cuando está dentro de una tabla o tiene el tamaño especificado con porcentajes. Hasta que el DOM no se carga completamente, el div no adquiere un tamaño definido, y en el momento en el que se carga el mapa aun no tiene su tamaño final.<br />
Se puede solucionar especificando el ancho (width) y alto (height) del contendor sin porcentajes o especificando directamente el tamaño del mapa con un argumento en el constructor GMap2:</p>
<pre>new GMap2(container, {size:new GSize(width,  height)})</pre>
</li>
</ul>
<ul>
<li><strong>Object cannot be created in this context" code: "9"  ... (NS_ERROR_DOM_NOT_SUPPORTED_ERR)</strong><br />
Este error suele aparecer en firefox cuando el mapa se inserta en una pagina JSF con Facelets.Es debido a que el objeto 'document' de javascript creado por firefox cuando el mime type es 'application/xhtml+xml', no tiene el metodo write().<br />
Para solucionarlo tienes que establecer el content type de la pagina como text/html. Con JSF se puede hacer añadiendo el tag</p>
<pre>		&lt;f contenttype="text/html" /&gt;</pre>
<p>en la página que contenga el mapa (No afecta a facelets ni al funcionamiento de la pagina).</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://seamcity.madeinxpain.com/archives/problemas-con-google-maps/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

