# Google Maps JSP tag Library



## Thomas Darimont (17. März 2006)

Hallo!

http://www.lamatek.com/GoogleMaps/

Gruss Tom


----------



## LarsK (22. März 2006)

Das sieht ja richtig schick aus, da kann man ganz viele schöne Dinge mit anstellen glaub ich.

Gruß

Lars


----------



## SeppiK (17. Januar 2007)

Hallo,
ich versuche gerade testweise, ein Karte via der googlemaps taglib von lamatek zu erzeugen.
Dies will mir jedoch nicht so ganz gelingen.
Habe folgendes gemacht. 

Habe mit eine Key bei Google erzeugt. Dieser funktioniert auch, dass hab ich mit JavaScript getestet, also die Erzeugung einer Karte mit JS funktioniert. 

Dann habe ich die googlemaps.jar in /WEB-INF/lib und die googlemaps.tld in /WEB-INF kopiert.
Die Tags stehen mir jetzt auch im Editor (Eclipse) zur Verfügung.
Als nächstes habe ich eine JSP Erzeugt und dort den Code der Examples der lamatek Seite eingefügt. Normaler weiß sollte dann später zu Laufzeit JavaScript durch die Tags in die Seite eigebundne werden doch das geschieht nicht. Hier mal meine JSP

```
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/WEB-INF/googlemaps.tld" prefix="googlemaps"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Test Googlemaps</title>
</head>

<body>

<googlemaps:map id="map" width="250" height="300" version="2" type="STREET" zoom="12">
	<googlemaps:key domain="localhost" key="MEIN_KEY"/>
	<googlemaps:point id="point1" address="74 Connors Lane" city="Elkton" state="MD" zipcode="21921" country="US"/>
</googlemaps:map>

</body>
</html>
```
weiß jemand was ich falsche gemacht habe, oder was ich vergessen haben könnte.

Hier noch meine web.xml


```
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>
	TestGoogleMaps</display-name>
	
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
</web-app>
```



Beste Grüße

Seppi

Hat sich erstmal erledigt.
Ich hatte wohl übersehen, dass ich einige Tags noch einfügung muss die explizit für die Generierung von JavaScript verantwortlich sind.

Trotzdem Danke

Gruß

Seppi


----------



## y0dA (8. Mai 2007)

Da ich grade an derselben stelle an stehe meine frage, welche tags hast du noch eingebunden damit es funktioniert hat?

bzw bekomme ich folgende ausnahme wenn ich die seite öffnen möchte:

avax.servlet.ServletException: /jsp/dummy.jsp(12,0) Unable to load tag handler class "com.lamatek.tags.google.GoogleMapTag" for tag "googlemaps:map"
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:154)
	org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)

root cause

javax.faces.FacesException: /jsp/dummy.jsp(12,0) Unable to load tag handler class "com.lamatek.tags.google.GoogleMapTag" for tag "googlemaps:map"
	org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:431)
	org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:211)
	org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
	org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:140)
	org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)

Es handelt sich hierbei um eine myFaces Applikation.

**EDIT**
Ok das mit der exception hat sich soeben erledigt, nun bekomme ich eine leere jsp seite angezeigt! Also warum ging bei dir bei der oben genannten jsp das ganze nicht? was muss ich ergänzen, fehlt eventuell eine konfiguration?

Bin für jede Hilfe dankbar.

mfg


----------



## y0dA (9. Mai 2007)

Falls es jemanden interessiert, die Lösung:


```
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
<%@ taglib uri="/WEB-INF/googlemaps.tld" prefix="googlemaps"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Test Googlemaps</title>

<googlemaps:map id="map" width="250" height="300" version="2" type="STREET" zoom="12">
	<googlemaps:key domain="localhost" key="ABQIAAAAU5IDceLqYFSp4k84FYLxyRTwM0brOpm-All5BF6PoaKBxRWWERSDiAIGyx-hbmMfA3v7tHF4Tvwfaw"/>
	<googlemaps:point id="point1" address="74 Connors Lane" city="Elkton" state="MD" zipcode="21921" country="US"/>
	<googlemaps:marker id="marker1" point="point1"/>
</googlemaps:map>
<googlemaps:scripttag id="map" scope="page" />
<googlemaps:javascript id="map"></googlemaps:javascript> 
</head>

<body onunload="GUnload()"> 
     <googlemaps:div id="map" scope="page"></googlemaps:div> 

    <googlemaps:initialize id="map" scope="page"/>
</body>
</html>
```


----------



## AndreBrueck (12. Juni 2007)

Hallo,

würde auch gerne die google tag libary benutzen.

Habe das JAR File auch wie angegeben in den WEB-INF/lib ordner kopiert.

konnte die Tags auch in einer JSP Seite im JDeveloper einbinden. Allerdings bekomme ich beim Ausführen folgende Fehler:


```
Error(12): Instanziieren von Tag nicht möglich: googlemaps:map (Klasse: com.lamatek.tags.google.GoogleMapTag)  Vergewissern Sie sich, dass die Tag-Klasse verfügbar ist und die Tag Library, die die Klasse enthält, nicht von dieser Anwendung ausgeschlossen ist.

Error(12): Klasse für Bean: null nicht gefunden, definiert durch Tag mit Klasse: com.lamatek.tags.google.GoogleMapTag

Error(13): Instanziieren von Tag nicht möglich: googlemaps:key (Klasse: com.lamatek.tags.google.GoogleMapKeyTag)  Vergewissern Sie sich, dass die Tag-Klasse verfügbar ist und die Tag Library, die die Klasse enthält, nicht von dieser Anwendung ausgeschlossen ist.

Error(13): Klasse für Bean: null nicht gefunden, definiert durch Tag mit Klasse: com.lamatek.tags.google.GoogleMapKeyTag
```

Währe schön, wenn mir jemand eine Lösung für mein Proiblem nennen könnte.

Liebe Grüße
André


----------



## AndreBrueck (12. Juni 2007)

Hallo,

mein 1. Problem ist gelöst, hatte das jar file nicht richtig eingebunden. 

hab nun aber ein neues Problem. Ich bekomme es nicht hin, dass eine deutsche Adresse angezeigt wird, lande immer irgendwo im Wasser.

Möchte folgende Adresse anzeigen:
"Rosengarten, Zweibrücken germany"

habe schon alle erdenglichen Möglichkeiten probiert.

<googlemapsoint id="point1" address="Rosengarten" city="Zweibrücken" state="RLP" zipcode="66482" country="DE"/>


----------



## y0dA (13. Juni 2007)

Richfaces wäre eine Alternative (ohne jetzt genauerers über deine Applikation zu kennen)

mfg


----------



## AndreBrueck (13. Juni 2007)

Hallo,

habs mit richfaces probiert, komme damit aber nicht so recht klar.

Gibts da ein verständliches Beispiel, oder Tutoriel?


----------



## y0dA (13. Juni 2007)

mehr oder weniger Tutorial:http://livedemo.exadel.com/richface...ionid=0CAEFE2DAE009941037E594222BDF09B?c=gmap

hier code snippets von einem dummy projekt (in myFaces):

web.xml muss man filter definieren:

```
<context-param> 
	  <param-name>org.ajax4jsf.SKIN</param-name> 
	  <param-value>blueSky</param-value> 
	</context-param> 
	<filter> 
	  <display-name>Ajax4jsf Filter</display-name> 
	  <filter-name>ajax4jsf</filter-name> 
	  <filter-class>org.ajax4jsf.Filter</filter-class> 
	</filter> 
	<filter-mapping> 
	  <filter-name>ajax4jsf</filter-name> 
	   <servlet-name>Faces Servlet</servlet-name>
	   <dispatcher>REQUEST</dispatcher>
	   <dispatcher>FORWARD</dispatcher>
	   <dispatcher>INCLUDE</dispatcher>
	</filter-mapping>
```

jsp:

```
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
<%@ taglib uri="http://richfaces.ajax4jsf.org/rich" prefix="rich"%>
<%@ taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%> 

<script type="text/javascript">
   //<![CDATA[
  	function createPoints(data) {
		for (var i = 0; data.length; i++) {
			var point = new GLatLng(data[i].lat, data[i].lng);
			map.addOverlay(createMarkerWithIdentifier(point, data[i].desc));
		}		
   	} 
   	
   	function createMarkerWithIdentifier(point, desc) {
	  var marker = new GMarker(point);
	  GEvent.addListener(marker, "click", function() {
	    marker.openInfoWindowHtml(desc);
	  });
	  return marker;
	}  	
    //]]>
</script>

<html>
    <head>
        <title>Hello World</title>
    </head>
    <body>
        <f:view>
            <h:panelGrid columns="2">
				<rich:gmap binding="#{gmBean.map}"/>	
			</h:panelGrid>        
		<h:form>   
			<a4j:jsFunction name="initializePoints" data="#{gmBean.points}"
				oncomplete="createPoints(data)">
			</a4j:jsFunction>
       	</h:form> 
        </f:view>
        
    </body>
</html>
```

faces config:

```
<managed-bean>
	  <managed-bean-name>gmBean</managed-bean-name>
	  <managed-bean-class>org.richfaces.demo.gmap.Bean</managed-bean-class>
	  <managed-bean-scope>session</managed-bean-scope>
 	</managed-bean>
```

bean:

```
package org.richfaces.demo.gmap;

import java.util.ArrayList;
import java.util.HashMap;

import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.richfaces.component.html.HtmlGmap;


public class Bean {
	
	//------------------------------------------------------------------------------------------------------------------
	// FIELDS
	//------------------------------------------------------------------------------------------------------------------
	
	/** google map */
	private HtmlGmap map;

	/** whole authorization for google map */
	private String gmapKey;
	
	/** google key for this application */
	private static final String GOOGLE_API_KEY =  "google api key einfügen"
			
	/** application url */
	private static final String APPL_URL = "url der applikation - localhost:8080 e.g.";
	
	/** host string */
	private static final String HOST = "host";
	
	/** error message if key is not generated for <code>Bean.APPL_URL</code> */
	private static final String KEY_ERROR_MSG =
		"get the key for your domain at http://www.google.com/apis/maps/signup.html";
	
	/** style of the google map */
	private static final String MAP_STYLE = "width:400px;height:400px";
	
	/** java script method which load points for google map - ajax4jsf script */
	private static final String LOAD_POINTS_INITIALIZE = "initializePoints()";
	
	/** google map initial zoom */
	private static final String MAP_ZOOM_INITIAL = "5";
	
	/** google map initial lattidude value */
	private static final String MAP_LATTIDUDE_INITIAL = "37.4419";
	
	/** google map initial longtidude value */
	private static final String MAP_LONGTIDUDE_INITIAL = "-122.1419";
	
	/** google map initial type of show value */
	private static final String MAP_TYPE_INITIAL = "G_NORMAL_MAP";
	
	/** google map variable for java script */
	private static final String MAP_GMAP_VAR = "map";
	
	/** contains google map points data */
	private ArrayList<Place> points;
	
	private String longtitude;
	
	private String lattidude;
	
	private Boolean activate = false;
	
	//------------------------------------------------------------------------------------------------------------------
	// CONSTRUCTOR
	//------------------------------------------------------------------------------------------------------------------

	/**
	 * constructor
	 */
	public Bean() {
		this.points = this.loadDataForMap();
	}
	
	//------------------------------------------------------------------------------------------------------------------
	// HELPER METHODS
	//------------------------------------------------------------------------------------------------------------------
		
	/**
	 * reset user input from view
	 */
	private void resetInput() {
		this.longtitude = "";
		this.lattidude = "";
	}
		
	/**
	 * load points for google map
	 * @return tmp loaded point data for map
	 */
	private ArrayList<Place> loadDataForMap() {
		ArrayList<Place> tmp = new ArrayList<Place>();
		tmp.add(new Place ("goldengate", "/org/richfaces/demo/gmap/images/gold.gif", "37.81765", "-122.477603" , 14,
				"Golden Gate  Bridge, San Francisco"));
		tmp.add(new Place ("eiffeltower", "/org/richfaces/demo/gmap/images//tower.gif", "48.858489", "2.295295" , 17,
				"Eiffel Tower, Paris"));
		tmp.add(new Place ("pyramids", "/org/richfaces/demo/gmap/images/pyramids.gif", "29.977785", "31.132915" , 15,
				"Pyramids of Egypt, Giza"));
		tmp.add(new Place ("exadel", "/org/richfaces/demo/gmap/images/exadel.gif", "37.971796", "-122.042334" , 18,
				"Headquarter of Exadel, Inc , Concord"));	
		return tmp;
	}
	
	/**
	 * create the whole google map key
	 * @return key generated key
	 */
	private String createKey() {
		HashMap<String, String> hosts = new HashMap<String, String>();
		hosts.put(Bean.APPL_URL, Bean.GOOGLE_API_KEY);
		ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
		String host = (String)ec.getRequestHeaderMap().get(Bean.HOST);
		String key = hosts.get(host);
		if (key != null) 
			return key;
		else
			return Bean.KEY_ERROR_MSG;	
	}
	
	/**
	 * dummy button - just test
	 *
	 */
	public void doSomething() {
		System.out.println("laft");
		this.map.getGmapVar();
		this.map.getAttributes();
	}
	
	//------------------------------------------------------------------------------------------------------------------
	// GETTER/SETTER
	//------------------------------------------------------------------------------------------------------------------

	/**
	 * getter method
	 * @return gmapKey
	 */
	public String getGmapKey() {
		if (gmapKey == null) {
			gmapKey = createKey();
		}
		return gmapKey;
	}

	/**
	 * setter method
	 * @param gmapKey
	 */
	public void setGmapKey(final String gmapKey) {
		this.gmapKey = gmapKey;
	}

	/**
	 * getter method
	 * @return map
	 */
	public HtmlGmap getMap() {
		return this.map;
	}

	/**
	 * setter method
	 * also initialized google map 
	 * @param map
	 */
	public void setMap(final HtmlGmap map) {
		if (this.map == null) {
			this.map = map;
			this.map.setGmapVar(Bean.MAP_GMAP_VAR);
			this.map.setOninit(Bean.LOAD_POINTS_INITIALIZE);
			this.map.setZoom(Bean.MAP_ZOOM_INITIAL);
			this.map.setStyle(Bean.MAP_STYLE);
			this.map.setGmapKey(this.getGmapKey());
			this.map.setLat(Bean.MAP_LATTIDUDE_INITIAL);
			this.map.setLng(Bean.MAP_LONGTIDUDE_INITIAL);
			this.map.setMapType(Bean.MAP_TYPE_INITIAL);
		} else {
			this.map = map;
		}
	}

	/**
	 * getter method
	 * @return points
	 */
	public ArrayList<Place> getPoints() {
		return this.points;
	}
	
	/**
	 * setter method
	 * @param points
	 */
	public void setPoints(final ArrayList<Place> points) {
		this.points = points;
	}

	public String getLongtitude() {
		return longtitude;
	}

	public void setLongtitude(String longtitude) {
		this.longtitude = longtitude;
	}

	public String getLattidude() {
		return lattidude;
	}

	public void setLattidude(String lattidude) {
		this.lattidude = lattidude;
	}

	public Boolean getActivate() {
		return activate;
	}

	public void setActivate(Boolean activate) {
		this.activate = activate;
	}
}
```

place:

```
package org.richfaces.demo.gmap;

public class Place {
	private String pic;
	private String id;
	private String lat;
	private String lng;
	private int zoom;
	private String desc;
	

	public String getDesc() {
		return desc;
	}
	public void setDesc(String desc) {
		this.desc = desc;
	}
	public Place(String id, String pic, String lat, String lng, int zoom, String desc) {
		super();
		this.id = id;
		this.pic = pic;
		this.lat = lat;
		this.lng = lng;
		this.zoom = zoom;
		this.desc = desc;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getLat() {
		return lat;
	}
	public void setLat(String lat) {
		this.lat = lat;
	}
	public String getLng() {
		return lng;
	}
	public void setLng(String lng) {
		this.lng = lng;
	}
	public int getZoom() {
		return zoom;
	}
	public void setZoom(int zoom) {
		this.zoom = zoom;
	}
	public String getPic() {
		return pic;
	}
	public void setPic(String pic) {
		this.pic = pic;
	}
}

hoffe das hilft weiter, wenn nicht meld dich wieder.

mfg
```


----------



## comsite07 (26. Oktober 2007)

Hallo liebe user!
habe eine frage? wozu dient dieses Google Maps JSP tag Library eigentlich
kann ich hierbei z.b. funktion erstellen: wenn die stadt "Rom" lautet finde die Koordinaten für Rom und zeig mir dann das entsprechende map.

Also vielleicht ist das unmöglich aber dachte fragen kostet nix.


----------



## schlumsch (14. August 2008)

Hallo allerseits,

ich beschäftige mich erst seit kurzer Zeit mit Java und hoffe es kann mir vielleicht jemand von euch helfen, sei es mit Links oder Code oder Tips... hier also mal das Thema:

Ich möchte mit JSF (keine jsp`s) und Google-Maps Informationen von Hotels darstellen lassen. Es soll also eine Seite dargestellt werden, welche einmal eine Map abbildet auf der die Hotels mit Pins gekennzeichnet sind. Daneben soll dann eine weitere Tabellenspalte die zusätzlichen Informationen der Hotels anzeigen.

Bislang habe ich mir eine Klasse und ein bean gebastelt, in welchem ich eine Liste von Hotels („hotels“) speichere und 3 einzelne Hotels mit ein paar Daten auffülle. Hat sich vielleicht schon wer von euch mit einem ähnlichen Thema beschäftigt und kann mir helfen, die Daten aus meiner Hotelliste in die oben erwähnte Map und zugehörige Tabelle zu bekommen? 

jedenfalls habe ich schon mitbekommen, das richfaces die für mich relevante alterbnative ist um die map darzustellen. meine fragen sind nun die folgenden: wie passe ich das beispieltutorial unter 
http://livedemo.exadel.com/richfaces...2BDF09B?c=gmap 
auf mein bean an und zweitens: wo kommen dann die javascript-funktionen hin, die ich in meinem html-file gebastelt habe


Wäre euch dankbar für Hilfe... hier mal mein code...




```
//
// hotel.java
//
package com.e2e.portal.hotel;

public class Hotel {
   private String name, adresse;
   private double longitude, latitude;
   

   public Hotel() {
      // TODO Auto-generated constructor stub
      name = "";
      adresse = "";
      longitude = 0.0;
      latitude = 0.0;
   }

   public Hotel(String name, String adresse, double longitude, double latitude) {
      super();
      this.adresse = adresse;
      this.latitude = latitude;
      this.longitude = longitude;
      this.name = name;
   }


   public String getName() {
      return name;
   }


   public void setName(String name) {
      this.name = name;
   }


   public String getAdresse() {
      return adresse;
   }


   public void setAdresse(String adresse) {
      this.adresse = adresse;
   }


   public double getLongitude() {
      return longitude;
   }


   public void setLongitude(double longitude) {
      this.longitude = longitude;
   }


   public double getLatitude() {
      return latitude;
   }


   public void setLatitude(double latitude) {
      this.latitude = latitude;
   }
```


```
//.......................................................
//
// hotelBean.java
//

package com.e2e.portal.hotel;

import java.util.ArrayList;
import java.util.List;

import com.e2e.common.user.UnknownUserException;
import com.e2e.itps.user.UserAuthentication;
import com.e2e.itps.user.UserContext;
import com.e2e.portal.service.User;

import e2e.ta.portal.model.UserProfile;


public class HotelBean {
   private List<Hotel> hotels;
   

public HotelBean() {
// KONSTRUKTOR
   
hotels = loadHotels();   
      
}
   
   private List<Hotel> loadHotels ()   
   {
      List<Hotel> result = new ArrayList<Hotel> ();
      for (int i=0; i<3; i++) {
         double x = i;
         Hotel tmpHotel = new Hotel("Horst"+i, "a", 51+x, 11);
         result.add(tmpHotel);         
      }
      return result;
   }
   

   public List<Hotel> getHotels() {
      return hotels;
   }


   public void setHotels(List<Hotel> hotels) {
      this.hotels = hotels;
   }
}
]
```


```
// hotel.xhtml
// startseite

...
<h:form>
<h:outputText value="Alle Hotels"/>
<rich:spacer height="30" />
<rich:scrollableDataTable id="uTable" value="#{hotelBean.hotels}" var="hotel"
   frozenColCount="1" rowKeyVar="rkv"
   row="25" width="300px" height="300px" sortMode="single">
      <rich:column width="50">
         <f:facet name="header">
               Hotelname
          </f:facet>
         <h:outputText value="#{hotel.name}" />
      </rich:column>
      <rich:column width="250">
         <f:facet name="header">
               HotelAdresse
          </f:facet>
         <h:outputText value="#{hotel.adresse}" />
      </rich:column>
   </rich:scrollableDataTable>
<rich:spacer height="30" />           
<!--  <rich:datascroller for="uTable" maxPages="5"/> -->
<rich:spacer height="30" />
   <!-- a4j:commandButton action="Hotels"
      style="height : 24px; width : 160px;" value="...nix">
   </a4j:commandButton-->
</h:form>
</ui:composition>
```
Das Html-File der Map:

```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Geocode zum Objekt - Google Maps</title>
    <body>
        <table border=0>
      <tr>
        <td>
           <div id="map" style="width: 550px; height: 450px"></div>
        </td>
        <td width = 150 valign="top" style="text-decoration: underline; color: #000000; background-color: #FFFF00">
           <!-- =========== side_bar with scroll bar ================= -->
           <div id="side_bar"  style="overflow:auto; height:450px;"></div>
           <!-- ===================================================== -->

        </td>
      </tr>
    </table>
    
    
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAgyj2jiEvZjK4ICXE0k_UoBTS1ddF3Hod__731IAUO9HDoH6hZhTVh8796481ikux9JC7OI_LtF6mLw"
      type="text/javascript"></script>
      	
   
   
    <script type="text/javascript">

    //<![CDATA[

 
 				// Marker auf übergebenem Point erzeugen, Listener dranklatschen
 				// ohne seperate Funktion createmarker funktionieren die Listener nicht!
   
   
    	var side_bar_html = "";
        var gmarkers = [];
        var htmls = [];
        var i = 0;
   
   
   
    function createMarker(point,html) {
        var marker = new GMarker(point);
        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
        });
        gmarkers[i] = marker;
        htmls[i] = html;
        side_bar_html += '<a href="javascript:myclick(' + i + ')">' + html + '</a><br>';
        i++;
        return marker;
      }
    
    function myclick(i) {
        gmarkers[i].openInfoWindowHtml(htmls[i]);
      }
 
               
               
// übergebene Geodaten aus URL extrahieren:    
    function getURLParam(strParamName){ // strParamName = je nach Aufruf der Fkt. "long" o. "lat"
    	  var strReturn = "";
    	  var strHref = window.location.href;

    	  if ( strHref.indexOf("?") > -1 ){
    	    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase(); // =String nach dem ?
    	    var aQueryString = strQueryString.split("&");							// Array nach & gesplittet
    	    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
    	      if (
    	aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){  // "long=" o. "lat=" gefunden
    	        var aParam = aQueryString[iParam].split("=");					// Arrayfeld[i] nach = gesplittet
    	        strReturn = aParam[1];											// Wert im neuen Arrayfeld[1] returned
    	        break;
    	      }
    	    }
    	  }
    	  return unescape(strReturn);
    	}               




     function load(namensListe) {
    
        if (GBrowserIsCompatible()) { 	
        	var map = new GMap2(document.getElementById("map"));
        	map.addControl(new GLargeMapControl());
        	map.addControl(new GScaleControl());
        	map.addControl(new GMapTypeControl());
        	map.addControl(new GHierarchicalMapTypeControl());
        	map.addControl(new GOverviewMapControl());

    		for ( var i = 0; i <= (namensListe.length-1); i = i+1 ){

    			var longitude = "long"+String(i+1);
    			var latitude = "lat"+String(i+1); 
    			var name = "name"+String(i+1);
    			map.setCenter(new GLatLng(getURLParam(latitude),getURLParam(longitude)), 13);
           		var point = new GLatLng(getURLParam(latitude),getURLParam(longitude));
            	var marker = new GMarker(point);
				var marker = createMarker(point,namensListe[i])
            	map.addOverlay(marker);
			} 
    		 document.getElementById("side_bar").innerHTML = side_bar_html;
 			  
        }
}




    function load1() {  


        
		var aufrufString = window.location.href;
		var aufrufStringTeile = aufrufString.split("=").length; // Split nach "=" erzeugt ein Feld mehr als Split nach &
 		var hotelZahl = (aufrufString.split("&").length/3);
 		//	alert("Stringteile (aufrufStringTeile): " + aufrufStringTeile);
 		//	alert("Hotelanzahl (hotelZahl): " + hotelZahl);
		var hotelNamen = new Array();
 		for ( var i = 1; i <= hotelZahl; i = i+1 ){
	 		var tmp = "name"+String(i);
			hotelNamen[i-1] = getURLParam(tmp);
		}
		load(hotelNamen);
    }
               
 // Point --> GMarker(Point)

    
    //]]>
    </script>
  </head>
  <body onload="load1()" onunload="GUnload()"><center>
    <div id="map" style="width: 500px; height: 300px" ></div></center>
  </body>
</html>
```


----------



## y0dA (14. August 2008)

Wir beide haben nun eh schon über ICQ miteinander das Problem besprochen - meld dich wenns noch Probs gibt.

mfg


----------



## schlumsch (14. August 2008)

Mmmmh, also ich bekommke da einen Fehler: "Cannot find tag library description for http://myfaces.apache.org/tomahawk"


----------



## schlumsch (14. August 2008)

Mmmmh 2: ...*g* ...

Also nun habe ich mal einfach mein komplettes Portlet kopiert und in ein neues eingefügt und der Fehler ist weg... *g*...  dafür hab ich aber auch gleich eun neuerliches Problem...

14:49:39,958 ERROR [STDERR] 14.08.2008 14:49:39 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/home/jboss/portal/jboss-portal-2.6.5.SP1/server/default/./deploy/jboss-portal.sar/portal-identity.sar/portal-identity.war/WEB-INF/lib2/jsf-facelets.jar!/META-INF/jsf-core.taglib.xml
14:49:39,983 ERROR [STDERR] 14.08.2008 14:49:39 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/home/jboss/portal/jboss-portal-2.6.5.SP1/server/default/./deploy/jboss-portal.sar/portal-identity.sar/portal-identity.war/WEB-INF/lib2/jsf-facelets.jar!/META-INF/jstl-fn.taglib.xml
14:49:40,057 ERROR [STDERR] 14.08.2008 14:49:40 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/home/jboss/portal/jboss-portal-2.6.5.SP1/server/default/./deploy/jboss-portal.sar/portal-identity.sar/portal-identity.war/WEB-INF/lib2/jsf-facelets.jar!/META-INF/jstl-core.taglib.xml
14:49:40,161 ERROR [STDERR] 14.08.2008 14:49:40 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/home/jboss/portal/jboss-portal-2.6.5.SP1/server/default/./deploy/jboss-portal.sar/portal-identity.sar/portal-identity.war/WEB-INF/lib2/jsf-facelets.jar!/META-INF/jsf-html.taglib.xml
14:49:40,356 ERROR [STDERR] 14.08.2008 14:49:40 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/home/jboss/portal/jboss-portal-2.6.5.SP1/server/default/./deploy/jboss-portal.sar/portal-identity.sar/portal-identity.war/WEB-INF/lib2/jsf-facelets.jar!/META-INF/jsf-ui.taglib.xml
14:49:40,383 ERROR [STDERR] 14.08.2008 14:49:40 com.sun.facelets.compiler.TagLibraryConfig loadImplicit
INFO: Added Library from: jar:file:/home/jboss/portal/jboss-portal-2.6.5.SP1/server/default/./deploy/jboss-portal.sar/portal-identity.sar/portal-identity.war/WEB-INF/lib2/portal-faces-lib.jar!/META-INF/portal.taglib.xml
14:49:41,938 INFO  [MyfacesConfig] No context init parameter 'org.apache.myfaces.READONLY_AS_DISABLED_FOR_SELECTS' found, using default value true
14:49:41,938 INFO  [MyfacesConfig] Tomahawk jar not available. Autoscrolling, DetectJavascript, AddResourceClass and CheckExtensionsFilter are disabled now.
14:49:41,938 INFO  [MyfacesConfig] Starting up Tomahawk on the RI-JSF-Implementation.
14:49:41,938 INFO  [MyfacesConfig] Starting up Tomahawk on the MyFaces-JSF-Implementation
14:49:41,938 ERROR [MyfacesConfig] Both MyFaces and the RI are on your classpath. Please make sure to use only one of the two JSF-implementations.
14:49:49,080 WARN  [SkinFactoryImpl] Init parameter for a skin name changed to org.richfaces.SKIN


----------



## y0dA (21. August 2008)

Sry hatte ganz vergessen dass du mich im ICQ angeschrieben hattest und diesesn Thread habe ich ebenfalls vergessen ;( (habs sehr stressig immo).

Poste mal deine JSP - du hast wohl 3 verschiedens JSF Taglibs eingebunden.

Welche myFaces Version verwendest du?
Welche Tomahawk Version?
Welche RichFaces Version?

etc.

mfg


----------



## schlumsch (21. August 2008)

Jo, ok....

Also ich benutze keine JSPs, das einzige was ich "gebrauche" ist mein Bean und zur Darstellung dessen meine XHTML. Ich benutze auch keine MyFaces sondern lediglich Richfaces (Version 3.1.4 glaube ich) und die gmap-Komponente hierzu ... http://livedemo.exadel.com/richfaces-demo/richfaces/gmap.jsf?c=gmap ...
Achja und  JBoss Portal 2.6.5-SP1.


Nun habe ich eigentlich 2 Probleme, mal zuerst zum wichtigsten: 

1)
Was ich machen möchte ist, aus meinem Bean die Daten holen. Das sind einmal Long und Lat und darüber hinaus Name, Adresse usw.
Nun soll die XHTML-Page 3geteilt sein, einmal die Map mit Pins, danebenm eine Tabelle wo alle Orte des Beans mit ihrem Namen gelistet sind. (soweit bin ich auch schon). Nun soll darunter eine weitere große Spaltze ion der Page angezeigt werden, wo die spezifischen Daten des gewählten Ortes angezeigt werden. Mein Problem liegt also darin, die Auswahl und die daraufhin anstehenden Aktualisierungen der Seitenabschnitte anzupassen. Spirch der Nutzer klickt auf einen Pin --> links in der Tabelle wird der entsprechende Eintrag gehighlighted --> unten werden alle Propüerties aus dem bean angezeigt.
In diesem großen Abschnitt der Page sollen ebenfalls Bilder in Abhängigkeit einer Property-Ausprägung angezeigt werden.... 


Das bean ist ja noch gleich, also poste ich mal nur mein derzeitiges XHTML:

```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jstl/core"
      xmlns:rich="http://richfaces.org/rich"
           xmlns:gmap="http://labs.jboss.com/jbossrichfaces/ui/gmap"
      xmlns:a4j="http://richfaces.org/a4j">



<h:form>
	<h:panelGrid  columns="2" border="1">
		<h:panelGroup>
			<h:outputText value="wenigstens die textausgabe sollte ja klappen verdammt!"/>
		</h:panelGroup>
		<h:panelGroup>
		<h:graphicImage value="/jsf/pics/wc_r.png" title="This is demo" width="32" height="32"/>
		</h:panelGroup>
	</h:panelGrid>

<rich:spacer height="100" />

<h:panelGrid  columns="2" border="1">
	<h:panelGroup>
	
	
	
	<h:panelGrid  columns="2" border="5">	
	<rich:gmap id="gm2" lat="9.5391" lng="97.9405" zoom="11" gmapVar="map2"
	 gmapKey="...derkeyhalt...g"
	  style="width:500px;height:400px" />
<!-- JScript Funktionen der Map: -->
	 <h:panelGroup>
		Controls:<br />
		<a href="javascript:void(0);" onclick="map2.hideControls();return false;">Remove</a>
		<a href="javascript:void(0);" onclick="map2.showControls();return false;">Show</a>
		<br /><br />
		Type:<br/>
		<a href="javascript:void(0);" onclick="map2.setMapType(G_NORMAL_MAP);return false;">Normal</a>
		<a href="javascript:void(0);" onclick="map2.setMapType(G_SATELLITE_MAP);return false;">Satellite</a>
		<a href="javascript:void(0);" onclick="map2.setMapType(G_HYBRID_MAP);return false;">Hybrid</a>
		<br /><br />
		Zoom:<br/>
		<a href="javascript:void(0);" onclick="map2.zoomIn();return false;">Zoom ++</a>
		<a href="javascript:void(0);" onclick="map2.zoomOut();return false;">Zoom --</a>
		<br /><br />
		<a href="javascript:void(0);" onclick="zoomIt();return false;">zoom_von_Bean</a>
		<br /><br />
		<a href="javascript:void(0);" onclick="initializePoints();return false;">a4j-Test</a>
		<br /><br />	
	</h:panelGroup>
	</h:panelGrid>

		<script>
		  function zoomIt() {
		   map2.setZoom(#{Bean.zoom});
		  }

	   
      function createMarker(point,html) {
        var marker = new GMarker(point);
        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
        });
        return marker;
      }

	   

	   
	    function setCenter(lag, lat, zoom) {

	       map2.setCenter(new GLatLng(lag, lat), zoom);
	       var ulp = new GPoint(lag,lat);
      var ul = G_NORMAL_MAP.getProjection().fromPixelToLatLng(ulp,zoom); 
	       
	    }
	   </script>



<script type="text/javascript">
   //<![CDATA[
  	function createPoints(data) {
		for (var i = 0; data.length; i++) {
			var point = new GLatLng(data[i].latitude, data[i].longitude);
			map2.setCenter(point);	
			map2.setZoom(16);			
			map2.addOverlay(createMarkerWithIdentifier(point, data[i].beschreibung));
		}	

   	} 
   	
   	function createMarkerWithIdentifier(point, beschreibung) {
	  var marker = new GMarker(point);
	  GEvent.addListener(marker, "click", function() {
	    marker.openInfoWindowHtml(beschreibung);
	  });
	  return marker;
	}  	
    //]]>
</script>
     
		<a4j:jsFunction name="initializePoints" data="#{Bean.hotels}"
				oncomplete="createPoints(data)">
			</a4j:jsFunction>
 

		
		</h:panelGroup>
		<h:panelGroup>
  
<rich:panel>
<f:facet name="header">
verfuegbare Hotels:
</f:facet>
Bemerkung: man darf keine speziellen Umlaute des deutschen Alphabets benutzen, welche
allesamt sprachgeschichtlich i-Laute sind, also ae, ue, oe... *NARF!*


<rich:scrollableDataTable id="uTable" value="#{Bean.hotels}" var="hotel"
	frozenColCount="1" rowKeyVar="rkv"
	row="25" width="300px" height="300px" sortMode="single">
		<rich:column width="50">
			<h:outputText value="#{hotel.name}" />
		</rich:column>
		<rich:column width="250">
			<h:outputText value="#{hotel.adresse}" />
		</rich:column>
	</rich:scrollableDataTable>
</rich:panel>	
</h:panelGroup>
	</h:panelGrid>

<rich:spacer height="5" />

<!-- 	hier sollen die unterschiedlichen Bilder ja nach Propertywert
angezeigt werden
	<h:graphicImage value="/jsf/pics/bar.png"/>
	<h:graphicImage value="/jsf/pics/buchung.png"/> ...
 -->	



<a4j:commandButton action="Hotels"
		style="height : 24px; width : 160px;" value="Hotels">
		</a4j:commandButton>
</h:form>

</ui:composition>
```


----------



## schlumsch (21. August 2008)

Was ich mir geacht hatte war ein Element der Seite mit einer ID zu kennzeichnen und dann dort die entsprechenden Werte einzutragen.  Selbst das will aber nicht wirklich gelingen. Den String bastelt er mir wunderbar zusammen, aber angezeigt bekomme ich ihn in zugehörigen "<div>" leider nicht


```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jstl/core"
      xmlns:rich="http://richfaces.org/rich"
           xmlns:gmap="http://labs.jboss.com/jbossrichfaces/ui/gmap"
      xmlns:a4j="http://richfaces.org/a4j">



<h:form>
	...

<rich:spacer height="100" />

<h:panelGrid  columns="2" border="1">
	<h:panelGroup>
	
	
	
	<h:panelGrid  columns="2" border="5">	
	<rich:gmap id="gm2" lat="9.5391" lng="97.9405" zoom="11" gmapVar="map2"
	 gmapKey="..."
	  style="width:500px;height:400px" />
<!-- JScript Funktionen der Map: -->
	 <h:panelGroup>
		Controls:<br />
		<a href="javascript:void(0);" onclick="map2.hideControls();return false;">Remove</a>
		<a href="javascript:void(0);" onclick="map2.showControls();return false;">Show</a>
		<br /><br />
		Type:<br/>
		<a href="javascript:void(0);" onclick="map2.setMapType(G_NORMAL_MAP);return false;">Normal</a>
		<a href="javascript:void(0);" onclick="map2.setMapType(G_SATELLITE_MAP);return false;">Satellite</a>
		<a href="javascript:void(0);" onclick="map2.setMapType(G_HYBRID_MAP);return false;">Hybrid</a>
		<br /><br />
		Zoom:<br/>
		<a href="javascript:void(0);" onclick="map2.zoomIn();return false;">Zoom ++</a>
		<a href="javascript:void(0);" onclick="map2.zoomOut();return false;">Zoom --</a>
		<br /><br />
		
		<a href="javascript:void(0);" onclick="zoomIt();return false;">zoom_von_Bean</a>
		<br /><br />
		<a href="javascript:void(0);" onclick="initializePoints();return false;">a4j-Test</a>
		<br /><br />	
	</h:panelGroup>
	</h:panelGrid>


<script type="text/javascript">
   //<![CDATA[
		   
    	var side_bar_html = "";
        var gmarkers = [];
        var htmls = [];
        var a = 0;
		
		  function zoomIt() {
		   map2.setZoom(#{Bean.zoom});
		  }

	   
      function createMarker(point,html) {
        var marker = new GMarker(point);
        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
        });
        return marker;
      }

	   

	   	   
	    function setCenter(lag, lat, zoom) {

	       map2.setCenter(new GLatLng(lag, lat), zoom);
	       var ulp = new GPoint(lag,lat);
      var ul = G_NORMAL_MAP.getProjection().fromPixelToLatLng(ulp,zoom); 
	       
	    }






        function myclick(i) {
            gmarkers[i].openInfoWindowHtml(htmls[i]);
          }
        
  	function createPoints(data) {
		for (var i = 0; data.length; i++) {
			var point = new GLatLng(data[i].latitude, data[i].longitude);
			map2.setCenter(point);	
			map2.setZoom(16);
//		      gmarkers[a] = marker;
//		      htmls[a] = beschreibung;
		      side_bar_html += '<a href="javascript:myclick(' + a + ')">' + data[i].beschreibung + '</a><br>';
		      alert(side_bar_html);
		       a++;	  
			map2.addOverlay(createMarkerWithIdentifier(point, data[i].beschreibung));
		}	
		document.getElementById("side_bar").innerHTML = side_bar_html;  		
// keine eigenschaft innerHTML bei einem Panel
   	} 

 	
 	

   	
   	function createMarkerWithIdentifier(point, beschreibung) {
	  var marker = new GMarker(point);
	  GEvent.addListener(marker, "click", function() {
	    marker.openInfoWindowHtml(beschreibung);
	  });
	  return marker;

	}  	
    //]]>
</script>
     
		<a4j:jsFunction name="initializePoints" data="#{Bean.hotels}"
				oncomplete="createPoints(data)">
			</a4j:jsFunction>
 

		
		</h:panelGroup>
		<h:panelGroup>
  															
<div id="side_bar">

</div>	
</h:panelGroup>
	</h:panelGrid>

<rich:spacer height="5" />

<!-- 	
	<h:graphicImage value="/jsf/pics/bar.png"/>
	<h:graphicImage value="/jsf/pics/behindertengerecht.png"/>
	<h:graphicImage value="/jsf/pics/buchung.png"/>
	<h:graphicImage value="/jsf/pics/fruehstueck.png"/>
	<h:graphicImage value="/jsf/pics/haustiere.png"/>
	<h:graphicImage value="/jsf/pics/kueche.png"/>
	<h:graphicImage value="/jsf/pics/parkplatz.png"/>
	<h:graphicImage value="/jsf/pics/restaurant.png"/>
	<h:graphicImage value="/jsf/pics/spa.png"/>
	<h:graphicImage value="/jsf/pics/tv.png"/>
	<h:graphicImage value="/jsf/pics/vorkasse.png"/>
	<h:graphicImage value="/jsf/pics/wc.png"/>
	<h:graphicImage value="/jsf/pics/wlan.png"/>
	
 -->	



<a4j:commandButton action="Hotels"
		style="height : 24px; width : 160px;" value="Hotels">
		</a4j:commandButton>
</h:form>

</ui:composition>
```


----------

