RichFaces Google Map Entegrasyonu

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

gmap.jpg


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: , , ,

Email Adresiniz:  
Listeye Kayit Ol Ayril  

Yorum Yapın