RichFaces Google Map Entegrasyonu
RichFaces tag leri icerisinde gmap entegrasyonu ile ilgili oldukca basit ve kullanisli ornekler bulunyor.

Ornekte seam componentleri uzerinden entegrasyonlar eger direk manageBean tanimi yapacaksaniz classlari tanimlamaniz gerekmekte.
<h:panelGroup> <rich:tabPanel switchType="ajax" width="350" height="400"> <rich:tab label="Using Google Map API"> <h:panelGrid columns="2" columnClasses="optionList"> <h:outputText value="Controls:" /> <h:panelGroup> <a href="javascript: void 0" onclick="map.hideControls()">Hide</a> <a href="javascript: void 0" onclick="map.showControls()">Show</a><br/> </h:panelGroup> <h:outputText value="Zoom:" /> <rich:inputNumberSlider id="zoom" showInput="false" minValue="1" maxValue="18" value="#{gmBean.zoom}" onchange="map.setZoom(this.value)"/> <h:outputText value="Map Type:" /> <h:panelGroup> <a href="javascript: void 0" onclick="map.setMapType(G_NORMAL_MAP)">Normal</a> <a href="javascript: void 0" onclick="map.setMapType(G_SATELLITE_MAP)">Satellite</a> <a href="javascript: void 0" onclick="map.setMapType(G_HYBRID_MAP)">Hybrid</a><br/> </h:panelGroup> </h:panelGrid> </rich:tab> <rich:tab label="Using Ajax with JSON"> <rich:dataGrid var="place" value="#{gmBean.point}" columns="2" > <h:graphicImage onclick="showPlace('#{place.id}')" style="cursor:pointer" value="../img/mimeTypes/_default.gif" /> </rich:dataGrid> </rich:tab> </rich:tabPanel> </h:panelGroup> </h:panelGrid> <a4j:jsFunction name="initializePoints" data="#{gmBean.point}" oncomplete="createPoints(data)"> </a4j:jsFunction> <h:form>
Place.java
package com.demo.session.general; import org.jboss.seam.annotations.Name; @Name("place") 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; } }
GoogleMap.java
package com.demo.session.general; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Logger; import org.jboss.seam.annotations.Name; import org.jboss.seam.faces.FacesMessages; import org.jboss.seam.log.Log; @Name("gmBean") public class GoogleMap { @Logger private Log log; @In FacesMessages facesMessages; public void googleMap() { //implement your business logic here log.info("GoogleMap.googleMap() action called"); facesMessages.add("googleMap"); } private ArrayList<Place> point; private String currentId; private int zoom; private String gmapkey; public String getCurrentId() { return currentId; } public void setCurrentId(String currentId) { this.currentId = currentId; } public ArrayList<Place> getPoint() { if (point == null) initData(); return point; } public void setPoint(ArrayList<Place> point) { this.point = point; } public Place getCurrentPlace() { Iterator it = point.iterator(); while (it.hasNext()) { Place pl = (Place)it.next(); if (currentId.equals(pl.getId())) { zoom = pl.getZoom(); //sync with zoom of new place return pl; } } return (Place)point.get(0); } private void initData() { point = new ArrayList<Place>(); point.add(new Place ("goldengate", "/org/richfaces/demo/gmap/images/gold.gif", "37.81765", "-122.477603" , 14,"Golden Gate Bridge, San Francisco")); point.add(new Place ("eiffeltower", "/org/richfaces/demo/gmap/images//tower.gif", "48.858489", "2.295295" , 17,"Eiffel Tower, Paris")); point.add(new Place ("pyramids", "/org/richfaces/demo/gmap/images/pyramids.gif", "29.977785", "31.132915" , 15,"Pyramids of Egypt, Giza")); point.add(new Place ("exadel", "/org/richfaces/demo/gmap/images/exadel.gif", "37.971796", "-122.042334" , 18,"Headquarter of Exadel, Inc , Concord")); currentId = "eiffeltower"; } public int getZoom() { return zoom; } public void setZoom(int zoom) { this.zoom = zoom; } public String getGmapkey() { if (gmapkey == null) { gmapkey = createKey(); } return gmapkey; } private String createKey() { HashMap<String,String> hosts = new HashMap<String,String>(); hosts.put("localhost", "ABQIAAAAxU6W9QEhFLMNdc3ATIu-VxT2yXp_ZAY8_ufC3CFXhHIE1NvwkxRkrpOGzxH8_ud3inE9pG1845-FCA"); hosts.put("localhost:8080", "ABQIAAAAxU6W9QEhFLMNdc3ATIu-VxTwM0brOpm-All5BF6PoaKBxRWWERTHxF5cK19oAMu3MP89kWdchuCH6w"); hosts.put("livedemo.exadel.com", "ABQIAAAAxU6W9QEhFLMNdc3ATIu-VxRl-RYVoXwacweAQq3rWvtlmS78MhRst9EH2cahrIp0_HHi_U1Zn7o1Fg"); ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext(); String host = (String)ec.getRequestHeaderMap().get("host"); String key = (String)hosts.get(host); if (key != null) return key; else return "get the key for your domain at http://www.google.com/apis/maps/signup.html"; } public void setGmapkey(String gmapkey) { this.gmapkey = gmapkey; } //add additional action methods }
Etiketler: Gmap, Google Map, JSF, RichFaces